LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDAzIE1hcmNlbG8gRHVhcnRlCiAqIENvcHlyaWdodCAyMDA2LTIwMDcgQW3pcmljbyBKb3PpIE1lbG8KICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpNRU5VXzAwMSBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglNRU5VSVRFTSAizWNvbmVzICZncmFuZGVzIiwJRkNJRE1fU0hWSUVXX0JJR0lDT04KCU1FTlVJVEVNICLNY29uZXMgJnBlcXVlbm9zIiwJRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgoJTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCU1FTlVJVEVNICImRGV0YWxoZXMiLAkJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKRU5ECgoKLyoKIHNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOCgpNRU5VXzAwMiBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCglQT1BVUCAiIgoJQkVHSU4KCSAgUE9QVVAgIiZFeGliaXIiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIs1jb25lcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIs1jb25lcyAmcGVxdWVub3MiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCSAgICBNRU5VSVRFTSAiJkRldGFsaGVzIiwJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTyZyZ2FuaXphciDtY29uZXMiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIlBvciAmbm9tZSIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiUG9yICZ0aXBvIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJQb3IgdGEmbWFuaG8iLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJQb3IgJmRhdGEiLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIkF1dG8gb3JnYW5pJnphciIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIkFsaW4maGFyIO1jb25lcyIsCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJkF0dWFsaXphciIsCQlGQ0lETV9TSFZJRVdfUkVGUkVTSAoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIkNvJmxhciIsCQlGQ0lETV9TSFZJRVdfSU5TRVJUCgkgIE1FTlVJVEVNICJDb2xhciBhJnRhbGhvIiwJRkNJRE1fU0hWSUVXX0lOU0VSVExJTksKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIFBPUFVQICJOb3ZvIgoJICBCRUdJTgoJICAgIE1FTlVJVEVNICImUGFzdGEiLAlGQ0lETV9TSFZJRVdfTkVXRk9MREVSCgkgICAgTUVOVUlURU0gIiZBdGFsaG8iLAlGQ0lETV9TSFZJRVdfTkVXTElOSwoJICAgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBFTkQKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJQcm9wcmllZGFkZXMiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwoJRU5ECkVORAoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKCk1FTlVfMDAyIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KCVBPUFVQICIiCglCRUdJTgoJICBQT1BVUCAiJk1vc3RyYXIiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIs1jb25lcyAmZ3JhbmRlcyIsCUZDSURNX1NIVklFV19CSUdJQ09OCgkgICAgTUVOVUlURU0gIs1jb25lcyAmcGVxdWVub3MiLAlGQ0lETV9TSFZJRVdfU01BTExJQ09OCgkgICAgTUVOVUlURU0gIiZMaXN0YSIsCQlGQ0lETV9TSFZJRVdfTElTVFZJRVcKCSAgICBNRU5VSVRFTSAiJkRldGFsaGVzIiwJRkNJRE1fU0hWSUVXX1JFUE9SVFZJRVcKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTyZyZ2FuaXphciDtY29uZXMiCgkgIEJFR0lOCgkgICAgTUVOVUlURU0gIlBvciAmbm9tZSIsCTB4MzAJLyogY29sdW1uIDAgKi8KCSAgICBNRU5VSVRFTSAiUG9yICZ0aXBvIiwJMHgzMgkvKiBjb2x1bW4gMiAqLwoJICAgIE1FTlVJVEVNICJQb3IgdGEmbWFuaG8iLAkweDMxCS8qIC4uLiAqLwoJICAgIE1FTlVJVEVNICJQb3IgJmRhdGEiLAkweDMzCgkgICAgTUVOVUlURU0gU0VQQVJBVE9SCgkgICAgTUVOVUlURU0gIkF1dG8gb3JnYW5pJnphciIsCUZDSURNX1NIVklFV19BVVRPQVJSQU5HRQoJICBFTkQKCSAgTUVOVUlURU0gIkFsaW4maGFyIO1jb25lcyIsCUZDSURNX1NIVklFV19TTkFQVE9HUklECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiJkFjdHVhbGl6YXIiLAkJRkNJRE1fU0hWSUVXX1JFRlJFU0gKCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJDbyZsYXIiLAkJRkNJRE1fU0hWSUVXX0lOU0VSVAoJICBNRU5VSVRFTSAiQ29sYXIgYSZ0YWxobyIsCUZDSURNX1NIVklFV19JTlNFUlRMSU5LCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBQT1BVUCAiTm92byIKCSAgQkVHSU4KCSAgICBNRU5VSVRFTSAiJlBhc3RhIiwJRkNJRE1fU0hWSUVXX05FV0ZPTERFUgoJICAgIE1FTlVJVEVNICImQXRhbGhvIiwJRkNJRE1fU0hWSUVXX05FV0xJTksKCSAgICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgRU5ECgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiUHJvcHJpZWRhZGVzIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCgovKgogc2hlbGx2aWV3IGl0ZW0gbWVudQoqLwpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIE1FTlVJVEVNICImU2VsZWN0IgkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gIiZFeHBsb3JhciIsCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQoJICBNRU5VSVRFTSAiQSZicmlyIiwJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQyZvcnRhciIsCQlGQ0lETV9TSFZJRVdfQ1VUCgkgIE1FTlVJVEVNICImQ29waWFyIiwJCUZDSURNX1NIVklFV19DT1BZCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiQ3JpYXIgYSZ0YWxobyIsCUZDSURNX1NIVklFV19DUkVBVEVMSU5LCgkgIE1FTlVJVEVNICJFJnhjbHVpciIsCQlGQ0lETV9TSFZJRVdfREVMRVRFCgkgIE1FTlVJVEVNICImUmVub21lYXIiLAkJRkNJRE1fU0hWSUVXX1JFTkFNRQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZQcm9wcmllZGFkZXMiLAlGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwoJRU5ECkVORAoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU0hCUlNGT1JGT0xERVJfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMTg4LCAxOTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwgRFNfTU9EQUxGUkFNRSB8IERTX1NFVEZPTlQgfCBEU18zRExPT0sKQ0FQVElPTiAiUHJvY3VyYXIgcGFzdGEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogREVGUFVTSEJVVFRPTiAiT0siLCAxLCA4MCwgMTc2LCA1MCwgMTIsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkNhbmNlbGFyIiwgMiwgMTM0LCAxNzYsIDUwLCAxMiwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBMVEVYVCAiIiwgSUREX1RJVExFLCA0LCA0LCAxODAsIDEyCiBMVEVYVCAiIiwgSUREX1NUQVRVUywgNCwgMjUsIDE4MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAogCVRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKCVdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsCgk0LCA0MCwgMTgwLCAxMjAKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU0hFTExfQUJPVVRfTVNHQk9YIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDE1LCA0MCwgMjEwLCAxNTIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlNvYnJlICVzIgpGT05UIDEwLCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDE1MywgMTMzLCA1MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggOTksIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgMTA4OCwgMTAsIDEwLCAxNCwgMTYKIExURVhUICIiLCAxMDAsIDMwLCAxMCwgMTM3LCAxMAogTFRFWFQgIiIsIDEwMSwgMzAsIDIyLCAxMzcsIDEwCiBMVEVYVCAiV2luZSBmb2kgZGlzcG9uaWJpbGl6YWRvIHBvcjoiLCA5OCwgOCwgNTUsIDEzNywgMTAKfQoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX1BPUlRVR1VFU0UKClNIRUxMX0FCT1VUX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxMCwgMTUyClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJBY2VyY2EgZG8gJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDUwLCAxMiwgV1NfVEFCU1RPUAogTElTVEJPWCA5OSwgOCwgNjUsIDEzNywgODIsIExCU19OT1RJRlkgfCBXU19WU0NST0xMIHwgV1NfQk9SREVSCiBJQ09OICIiLCAxMDg4LCAxMCwgMTAsIDE0LCAxNgogTFRFWFQgIiIsIDEwMCwgMzAsIDEwLCAxMzcsIDEwCiBMVEVYVCAiIiwgMTAxLCAzMCwgMjIsIDEzNywgMTAKIExURVhUICJXaW5lIGRpc3BvbmliaWxpemFkbyBwb3I6IiwgOTgsIDgsIDU1LCAxMzcsIDEwCn0KCgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRV9CUkFaSUxJQU4KClNIRUxMX1JVTl9ETEcgRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMCwgMCwgMjI3LCA5NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIElDT04gIiIsIDEyMjk3LCA3LCAxMSwgMTgsIDIwLCBXU19WSVNJQkxFCiBMVEVYVCAiRGlnaXRlIG8gbm9tZSBkbyBwcm9ncmFtYSwgcGFzdGEsIGRvY3VtZW50bywgb3UgZW5kZXJl528gSW50ZXJuZXQsIHF1ZSBvIFdpbmUgaXLhIGFicu0tbG8gcGFyYSB2b2PqLiIsIDEyMjg5LCAzNiwgMTEsIDE4MiwgMTgKIExURVhUICImQWJyaXI6IiwgMTIzMDUsIDcsIDM5LCAyNCwgMTAKIENPTlRST0wgIiIsIDEyMjk4LCAiQ09NQk9CT1giLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBXU19WU0NST0xMIHwgV1NfVklTSUJMRSB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfRFJPUERPV04sIDM2LCAzNywgMTgzLCAxMDAKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgNjIsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkNhbmNlbGFyIiwgSURDQU5DRUwsIDExNiwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJlByb2N1cmFyLi4uIiwgMTIyODgsIDE3MCwgNjMsIDUwLCAxNCwgV1NfVEFCU1RPUAp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU0hFTExfUlVOX0RMRyBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAwLCAwLCAyMjcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICIiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogSUNPTiAiIiwgMTIyOTcsIDcsIDExLCAxOCwgMjAsIFdTX1ZJU0lCTEUKIExURVhUICJEaWdpdGUgbyBub21lIGRvIHByb2dyYW1hLCBwYXN0YSwgZG9jdW1lbnRvLCBvdSBlbmRlcmXnbyBJbnRlcm5ldCwgcXVlIG8gV2luZSBpcuEgYWJy7S1sby4iLCAxMjI4OSwgMzYsIDExLCAxODIsIDE4CiBMVEVYVCAiJkFicmlyOiIsIDEyMzA1LCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDYyLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJDYW5jZWxhciIsIElEQ0FOQ0VMLCAxMTYsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZQcm9jdXJhci4uLiIsIDEyMjg4LCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKCkxBTkdVQUdFIExBTkdfUE9SVFVHVUVTRSwgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTgoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgICAgIC8qIGNvbHVtbnMgaW4gdGhlIHNoZWxsdmlldyAqLwoJSURTX1NIVl9DT0xVTU4xCQkiQXJxdWl2byIKCUlEU19TSFZfQ09MVU1OMgkJIlRhbWFuaG8iCglJRFNfU0hWX0NPTFVNTjMJCSJUaXBvIgoJSURTX1NIVl9DT0xVTU40CQkiTW9kaWZpY2FkbyIKCUlEU19TSFZfQ09MVU1ONQkJIkF0cmlidXRvcyIKCUlEU19TSFZfQ09MVU1ONgkJIlRhbWFuaG8iCglJRFNfU0hWX0NPTFVNTjcJCSJEaXNwb27tdmVsIgoJSURTX1NIVl9DT0xVTU44CQkiTm9tZSIKCUlEU19TSFZfQ09MVU1OOQkJIkNvbWVudOFyaW9zIgoJSURTX1NIVl9DT0xVTU4xMAkiRG9ubyIKCUlEU19TSFZfQ09MVU1OMTEJIkdydXBvIgoKICAgICAgICAvKiBzcGVjaWFsIGZvbGRlcnMgKi8KCUlEU19ERVNLVE9QCQkiwXJlYSBkZSB0cmFiYWxobyIKCUlEU19NWUNPTVBVVEVSCQkiTWV1IGNvbXB1dGFkb3IiCgogICAgICAgIC8qIGNvbnRleHQgbWVudXMgKi8KCUlEU19WSUVXX0xBUkdFCQkizWNvbmVzICZncmFuZGVzIgoJSURTX1ZJRVdfU01BTEwJCSLNY29uZXMgJnBlcXVlbm9zIgoJSURTX1ZJRVdfTElTVAkJIiZMaXN0YSIKCUlEU19WSUVXX0RFVEFJTFMJIiZEZXRhbGhlcyIKCUlEU19TRUxFQ1QJCSJTZWxlY2lvbmFyIgoJSURTX09QRU4JCSJBYnJpciIKCglJRFNfQ1JFQVRFRk9MREVSX0RFTklFRCAiTuNvIHBvZGUgY3JpYXIgbm92YSBwYXN0YTogUGVybWlzc+NvIG5lZ2FkYS4iCglJRFNfQ1JFQVRFRk9MREVSX0NBUFRJT04gIkVycm8gZHVyYW50ZSBhIGNyaWHn428gZGEgbm92YSBwYXN0YSIKCUlEU19ERUxFVEVJVEVNX0NBUFRJT04gIkNvbmZpcm1hciBleGNsdXPjbyBkZSBhcnF1aXZvIgoJSURTX0RFTEVURUZPTERFUl9DQVBUSU9OICJDb25maXJtYXIgZXhjbHVz428gZGUgcGFzdGEiCglJRFNfREVMRVRFSVRFTV9URVhUICJWb2PqIHRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZXhjbHVpciAnJTEnPyIKCUlEU19ERUxFVEVNVUxUSVBMRV9URVhUICJWb2PqIHRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZXhjbHVpciBlc3RlcyAlMSBpdGVucz8iCglJRFNfT1ZFUldSSVRFRklMRV9URVhUICJUaGlzIGZvbGRlciBhbHJlYWR5IGNvbnRhaW5zIGEgZmlsZSBjYWxsZWQgJyUxJy5cblxuRG8geW91IHdhbnQgdG8gcmVwbGFjZSBpdD8iCglJRFNfT1ZFUldSSVRFRklMRV9DQVBUSU9OICJDb25maXJtYXIgc29icmVlc2NyZXZlciBhcnF1aXZvIgoJSURTX09WRVJXUklURUZPTERFUl9URVhUICJUaGlzIGZvbGRlciBhbHJlYWR5IGNvbnRhaW5zIGEgZm9sZGVyIG5hbWVkICclMScuXG5cbiJcCgkgICAgIklmIHRoZSBmaWxlcyBpbiB0aGUgZGVzdGluYXRpb24gZm9sZGVyIGhhdmUgdGhlIHNhbWUgbmFtZXMgYXMgZmlsZXMgaW4gdGhlXG4iXAoJICAgICJzZWxlY3RlZCBmb2xkZXIgdGhleSB3aWxsIGJlIHJlcGxhY2VkLiBEbyB5b3Ugc3RpbGwgd2FudCB0byBtb3ZlIG9yIGNvcHlcbiJcCgkgICAgInRoZSBmb2xkZXI/IgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCglJRFNfUkVTVEFSVF9USVRMRSAgICAgICAiUmVpbmljaWFyIgoJSURTX1JFU1RBUlRfUFJPTVBUICAgICAgIlZvY+ogcXVlciBzaW11bGFyIGEgcmVpbmljaWFsaXph5+NvIGRvIFdpbmRvd3M/IgoJSURTX1NIVVRET1dOX1RJVExFICAgICAgIkRlc2xpZ2FyIgoJSURTX1NIVVRET1dOX1BST01QVCAgICAgIlZvY+ogcXVlciBmaW5hbGl6YXIgYSBzZXNz428gbm8gV2luZT8iCgogICAgICAgIC8qIHNoZWxsIGZvbGRlciBwYXRoIGRlZmF1bHQgdmFsdWVzICovCglJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzIgoJSURTX1BFUlNPTkFMICAgICAgICAgICAgICAgICJNZXVzIERvY3VtZW50b3MiCglJRFNfRkFWT1JJVEVTICAgICAgICAgICAgICAgIkZhdm9yaXRvcyIKCUlEU19TVEFSVFVQICAgICAgICAgICAgICAgICAiTWVudSBJbmljaWFyXFxQcm9ncmFtYXNcXEluaWNpYXIiCglJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIlJlY2VudCIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiU2VuZFRvIgoJSURTX1NUQVJUTUVOVSAgICAgICAgICAgICAgICJNZW51IEluaWNpYXIiCglJRFNfTVlNVVNJQyAgICAgICAgICAgICAgICAgIk1pbmhhcyBN+nNpY2FzIgoJSURTX01ZVklERU8gICAgICAgICAgICAgICAgICJNZXVzIFbtZGVvcyIKCUlEU19ERVNLVE9QRElSRUNUT1JZICAgICAgICAiRGVza3RvcCIKCUlEU19ORVRIT09EICAgICAgICAgICAgICAgICAiTmV0SG9vZCIKCUlEU19URU1QTEFURVMgICAgICAgICAgICAgICAiVGVtcGxhdGVzIgoJSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJBcHBsaWNhdGlvbiBEYXRhIgoJSURTX1BSSU5USE9PRCAgICAgICAgICAgICAgICJQcmludEhvb2QiCglJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxEYWRvcyBkZSBhcGxpY2F0aXZvcyIKCUlEU19JTlRFUk5FVF9DQUNIRSAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXFRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIKCUlEU19DT09LSUVTICAgICAgICAgICAgICAgICAiQ29va2llcyIKCUlEU19ISVNUT1JZICAgICAgICAgICAgICAgICAiQ29uZmlndXJh5/VlcyBsb2NhaXNcXEhpc3TzcmljbyIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiQXJxdWl2b3MgZGUgcHJvZ3JhbWFzIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJNaW5oYXMgSW1hZ2VucyIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiQXJxdWl2b3MgZGUgcHJvZ3JhbWFzXFxBcnF1aXZvcyBjb211bnMiCglJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRvY3VtZW50b3MiCglJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzXFxGZXJyYW1lbnRhcyBBZG1pbmlzdHJhdGl2YXMiCglJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIkRvY3VtZW50b3NcXE1pbmhhcyBN+nNpY2FzIgoJSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2N1bWVudG9zXFxNaW5oYXMgSW1hZ2VucyIKCUlEU19DT01NT05fVklERU8gICAgICAgICAgICAiRG9jdW1lbnRvc1xcTWV1cyBW7WRlb3MiCglJRFNfQ0RCVVJOX0FSRUEgICAgICAgICAgICAgIkNvbmZpZ3VyYef1ZXMgbG9jYWlzXFxEYWRvcyBkZSBhcGxpY2F0aXZvc1xcTWljcm9zb2Z0XFxDRCBCdXJuaW5nIgp9CgpMQU5HVUFHRSBMQU5HX1BPUlRVR1VFU0UsIFNVQkxBTkdfUE9SVFVHVUVTRQoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKewogICAgICAgIC8qIGNvbHVtbnMgaW4gdGhlIHNoZWxsdmlldyAqLwoJSURTX1NIVl9DT0xVTU4xCQkiRmljaGVpcm8iCglJRFNfU0hWX0NPTFVNTjIJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU4zCQkiVGlwbyIKCUlEU19TSFZfQ09MVU1ONAkJIk1vZGlmaWNhZG8iCglJRFNfU0hWX0NPTFVNTjUJCSJBdHJpYnV0b3MiCglJRFNfU0hWX0NPTFVNTjYJCSJUYW1hbmhvIgoJSURTX1NIVl9DT0xVTU43CQkiRGlzcG9u7XZlbCIKCUlEU19TSFZfQ09MVU1OOAkJIk5vbWUiCglJRFNfU0hWX0NPTFVNTjkJCSJDb21lbnThcmlvcyIKCUlEU19TSFZfQ09MVU1OMTAJIkRvbm8iCglJRFNfU0hWX0NPTFVNTjExCSJHcnVwbyIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCglJRFNfREVTS1RPUAkJIkFtYmllbnRlIGRlIHRyYWJhbGhvIgoJSURTX01ZQ09NUFVURVIJCSJPIE1ldSBDb21wdXRhZG9yIgoKICAgICAgICAvKiBjb250ZXh0IG1lbnVzICovCglJRFNfVklFV19MQVJHRQkJIs1jb25lcyAmZ3JhbmRlcyIKCUlEU19WSUVXX1NNQUxMCQkizWNvbmVzICZwZXF1ZW5vcyIKCUlEU19WSUVXX0xJU1QJCSImTGlzdGEiCglJRFNfVklFV19ERVRBSUxTCSImRGV0YWxoZXMiCglJRFNfU0VMRUNUCQkiU2VsZWNjaW9uYXIiCglJRFNfT1BFTgkJIkFicmlyIgoKCUlEU19DUkVBVEVGT0xERVJfREVOSUVEICJO428g6SBwb3Nz7XZlbCBjcmlhciBub3ZhIHBhc3RhOiBQZXJtaXNz428gbmVnYWRhLiIKCUlEU19DUkVBVEVGT0xERVJfQ0FQVElPTiAiRXJybyBkdXJhbnRlIGEgY3JpYefjbyBkYSBub3ZhIHBhc3RhIgoJSURTX0RFTEVURUlURU1fQ0FQVElPTiAiQ29uZmlybWFyIGV4Y2x1c+NvIGRvIGZpY2hlaXJvIgoJSURTX0RFTEVURUZPTERFUl9DQVBUSU9OICJDb25maXJtYXIgZXhjbHVz428gZGEgcGFzdGEiCglJRFNfREVMRVRFSVRFTV9URVhUICJUZW0gY2VydGV6YSBxdWUgZGVzZWphIGV4Y2x1aXIgJyUxJz8iCglJRFNfREVMRVRFTVVMVElQTEVfVEVYVCAiVGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyIGVzdGVzICUxIGl0ZW5zPyIKCUlEU19PVkVSV1JJVEVGSUxFX1RFWFQgIlN1YnN0aXR1aXIgZmljaGVpcm8gJTE/IgoJSURTX09WRVJXUklURUZJTEVfQ0FQVElPTiAiQ29uZmlybWFyIHN1YnN0aXR1aefjbyBkZSBmaWNoZWlybyIKCiAgICAgICAgLyogbWVzc2FnZSBib3ggc3RyaW5ncyAqLwoJSURTX1JFU1RBUlRfVElUTEUgICAgICAgIlJlaW5pY2lhciIKCUlEU19SRVNUQVJUX1BST01QVCAgICAgICJEZXNlamEgc2ltdWxhciBhIHJlaW5pY2lhbGl6YefjbyBkbyBXaW5kb3dzPyIKCUlEU19TSFVURE9XTl9USVRMRSAgICAgICJEZXNsaWdhciIKCUlEU19TSFVURE9XTl9QUk9NUFQgICAgICJEZXNlamEgZmluYWxpemFyIGVzdGEgc2Vzc+NvIGRvIFdpbmU/IgoKICAgICAgICAvKiBzaGVsbCBmb2xkZXIgcGF0aCBkZWZhdWx0IHZhbHVlcyAqLwoJSURTX1BST0dSQU1TICAgICAgICAgICAgICAgICJNZW51IEluaWNpYXJcXFByb2dyYW1hcyIKCUlEU19QRVJTT05BTCAgICAgICAgICAgICAgICAiT1MgTWV1cyBEb2N1bWVudG9zIgoJSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0b3MiCglJRFNfU1RBUlRVUCAgICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzXFxJbmljaWFyIgoJSURTX1JFQ0VOVCAgICAgICAgICAgICAgICAgICJSZWNlbnRlcyIKCUlEU19TRU5EVE8gICAgICAgICAgICAgICAgICAiRW52aWFyIFBhcmEiCglJRFNfU1RBUlRNRU5VICAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhciIKCUlEU19NWU1VU0lDICAgICAgICAgICAgICAgICAiQXMgTWluaGFzIE36c2ljYXMiCglJRFNfTVlWSURFTyAgICAgICAgICAgICAgICAgIk9zIE1ldXMgVu1kZW9zIgoJSURTX0RFU0tUT1BESVJFQ1RPUlkgICAgICAgICJBbWJpZW50ZSBkZSBUcmFiYWxobyIKCUlEU19ORVRIT09EICAgICAgICAgICAgICAgICAiTmV0SG9vZCIKCUlEU19URU1QTEFURVMgICAgICAgICAgICAgICAiTW9kZWxvcyIKCUlEU19BUFBEQVRBICAgICAgICAgICAgICAgICAiQXBwbGljYXRpb24gRGF0YSIKCUlEU19QUklOVEhPT0QgICAgICAgICAgICAgICAiUHJpbnRIb29kIgoJSURTX0xPQ0FMX0FQUERBVEEgICAgICAgICAgICJEZWZpbmnn9WVzIGxvY2Fpc1xcQXBwbGljYXRpb24gRGF0YSIKCUlEU19JTlRFUk5FVF9DQUNIRSAgICAgICAgICAiRGVmaW5p5/VlcyBsb2NhaXNcXFRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIKCUlEU19DT09LSUVTICAgICAgICAgICAgICAgICAiQ29va2llcyIKCUlEU19ISVNUT1JZICAgICAgICAgICAgICAgICAiRGVmaW5p5/VlcyBsb2NhaXNcXEhpc3TzcmljbyIKCUlEU19QUk9HUkFNX0ZJTEVTICAgICAgICAgICAiUHJvZ3JhbWFzIgoJSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJBcyBNaW5oYXMgSW1hZ2VucyIKCUlEU19QUk9HUkFNX0ZJTEVTX0NPTU1PTiAgICAiUHJvZ3JhbWFzXFxGaWNoZWlyb3MgY29tdW5zIgoJSURTX0NPTU1PTl9ET0NVTUVOVFMgICAgICAgICJPcyBNZXVzIERvY3VtZW50b3MiCglJRFNfQURNSU5UT09MUyAgICAgICAgICAgICAgIk1lbnUgSW5pY2lhclxcUHJvZ3JhbWFzXFxGZXJyYW1lbnRhcyBBZG1pbmlzdHJhdGl2YXMiCglJRFNfQ09NTU9OX01VU0lDICAgICAgICAgICAgIk9zIE1ldXMgRG9jdW1lbnRvc1xcQXMgTWluaGFzIE36c2ljYXMiCglJRFNfQ09NTU9OX1BJQ1RVUkVTICAgICAgICAgIk9zIE1ldXMgRG9jdW1lbnRvc1xcQXMgTWluaGFzIEltYWdlbnMiCglJRFNfQ09NTU9OX1ZJREVPICAgICAgICAgICAgIk9zIE1ldXMgRG9jdW1lbnRvc1xcT3MgTWV1cyBW7WRlb3MiCglJRFNfQ0RCVVJOX0FSRUEgICAgICAgICAgICAgIkRlZmluaef1ZXMgbG9jYWlzXFxBcHBsaWNhdGlvbiBEYXRhXFxNaWNyb3NvZnRcXENEIEJ1cm5pbmciCgoJSURTX05FV0ZPTERFUgkJIk5ldyBGb2xkZXIiCn0K