LyoKICogQ29weXJpZ2h0IDE5OTggSnVlcmdlbiBTY2htaWVkCiAqIENvcHlyaWdodCAyMDA4IEplbnMgQWxicmV0c2VuCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCkxBTkdVQUdFIExBTkdfREFOSVNILCBTVUJMQU5HX0RFRkFVTFQKCk1FTlVfMDAxIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN0b3JlIElrb25lciIsICAgICAgIEZDSURNX1NIVklFV19CSUdJQ09OCiAgICAgICAgTUVOVUlURU0gIlMmbeUgSWtvbmVyIiAsICAgICAgICBGQ0lETV9TSFZJRVdfU01BTExJQ09OCiAgICAgICAgTUVOVUlURU0gIiZMaXN0ZSIsICAgICAgICAgICAgICBGQ0lETV9TSFZJRVdfTElTVFZJRVcKICAgICAgICBNRU5VSVRFTSAiJkRldGFsamVyIiwgICAgICAgICAgIEZDSURNX1NIVklFV19SRVBPUlRWSUVXCkVORAoKLyoKIHNoZWxsdmlldyBiYWNrZ3JvdW5kIG1lbnUKKi8KTUVOVV8wMDIgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgICAgIFBPUFVQICIiCiAgICAgICAgQkVHSU4KICAgICAgICAgIFBPUFVQICImVmlldyIKICAgICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU3RvcmUgSWtvbmVyIiwgICBGQ0lETV9TSFZJRVdfQklHSUNPTgogICAgICAgICAgICBNRU5VSVRFTSAiUyZt5SBJa29uZXIiLCAgICAgRkNJRE1fU0hWSUVXX1NNQUxMSUNPTgogICAgICAgICAgICBNRU5VSVRFTSAiJkxpc3RlIiwgICAgICAgICAgRkNJRE1fU0hWSUVXX0xJU1RWSUVXCiAgICAgICAgICAgIE1FTlVJVEVNICImRGV0YWxqZXIiLCAgICAgICBGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwogICAgICAgICAgRU5ECiAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgIFBPUFVQICJBcnJhbmfpciAmSWtvbmVyIgogICAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gImVmdGVyICZuYXZuIiwgICAgICAgIDB4MzAgICAgLyogY29sdW1uIDAgKi8KICAgICAgICAgICAgTUVOVUlURU0gImVmdGVyICZ0eXBlIiwgICAgICAgIDB4MzIgICAgLyogY29sdW1uIDIgKi8KICAgICAgICAgICAgTUVOVUlURU0gImVmdGVyICZzdPhycmVsc2UiLCAgICAgICAgMHgzMSAgICAvKiAuLi4gKi8KICAgICAgICAgICAgTUVOVUlURU0gImVmdGVyICZkYXRvIiwgICAgICAgIDB4MzMKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICImQXV0b2FycmFuZ+lyIiwgICBGQ0lETV9TSFZJRVdfQVVUT0FSUkFOR0UKICAgICAgICAgIEVORAogICAgICAgICAgTUVOVUlURU0gIk9wc3RpbCBpa29uZXIiLCAgICAgRkNJRE1fU0hWSUVXX1NOQVBUT0dSSUQKICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgTUVOVUlURU0gIk9wZGF0ZXIiLCAgICAgICAgICAgRkNJRE1fU0hWSUVXX1JFRlJFU0gKICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgTUVOVUlURU0gIkluZHPmdCIsICAgICAgICAgICAgRkNJRE1fU0hWSUVXX0lOU0VSVAogICAgICAgICAgTUVOVUlURU0gIkluZHPmdCBzb20gZ2VudmVqIiwgRkNJRE1fU0hWSUVXX0lOU0VSVExJTksKICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgUE9QVVAgIk5ldyIKICAgICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICJOeSAmZm9sZGVyIiwgICAgICBGQ0lETV9TSFZJRVdfTkVXRk9MREVSCiAgICAgICAgICAgIE1FTlVJVEVNICJOeSAmZ2VudmVqIiwgICAgICBGQ0lETV9TSFZJRVdfTkVXTElOSwogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgIEVORAogICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICBNRU5VSVRFTSAiRWdlbnNrYWJlciIsICAgICAgICBGQ0lETV9TSFZJRVdfUFJPUEVSVElFUwogICAgICAgIEVORApFTkQKCi8qCiBzaGVsbHZpZXcgaXRlbSBtZW51CiovCk1FTlVfU0hWX0ZJTEUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgoJUE9QVVAgIiIKCUJFR0lOCgkgIE1FTlVJVEVNICImVuZsZyIJCUZDSURNX1NIVklFV19PUEVOCgkgIE1FTlVJVEVNICJVJmRmb3JzayIsCQlGQ0lETV9TSFZJRVdfRVhQTE9SRQoJICBNRU5VSVRFTSAiJsViZW4iLAkJRkNJRE1fU0hWSUVXX09QRU4KCSAgTUVOVUlURU0gU0VQQVJBVE9SCgkgIE1FTlVJVEVNICJLJmxpcCIsCQlGQ0lETV9TSFZJRVdfQ1VUCgkgIE1FTlVJVEVNICImS29waWVyIiwJCUZDSURNX1NIVklFV19DT1BZCgkgIE1FTlVJVEVNIFNFUEFSQVRPUgoJICBNRU5VSVRFTSAiT3ByZXQgJmdlbnZlaiIsCUZDSURNX1NIVklFV19DUkVBVEVMSU5LCgkgIE1FTlVJVEVNICImU2xldCIsCQlGQ0lETV9TSFZJRVdfREVMRVRFCgkgIE1FTlVJVEVNICImT21k+GIiLAkJRkNJRE1fU0hWSUVXX1JFTkFNRQoJICBNRU5VSVRFTSBTRVBBUkFUT1IKCSAgTUVOVUlURU0gIiZFZ2Vuc2thYmVyIiwJRkNJRE1fU0hWSUVXX1BST1BFUlRJRVMKCUVORApFTkQKCk1FTlVfQ1BBTkVMIE1FTlUKQkVHSU4KICAgIFBPUFVQICImRmlsZSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkUmeGl0IiwgSURNX0NQQU5FTF9FWElUCiAgICBFTkQKCiAgICBQT1BVUCAiJlZpZXciCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU3RvcmUgSWtvbmVyIiwgRkNJRE1fU0hWSUVXX0JJR0lDT04KICAgICAgICBNRU5VSVRFTSAiUyZt5SBJa29uZXIiLCBGQ0lETV9TSFZJRVdfU01BTExJQ09OCiAgICAgICAgTUVOVUlURU0gIiZMaXN0ZSIsIEZDSURNX1NIVklFV19MSVNUVklFVwogICAgICAgIE1FTlVJVEVNICImRGV0YWxqZXIiLCBGQ0lETV9TSFZJRVdfUkVQT1JUVklFVwogICAgRU5ECgogICAgUE9QVVAgIiZIZWxwIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFib3V0IENvbnRyb2wgUGFuZWwuLi4iLCBJRE1fQ1BBTkVMX0FCT1VUCiAgICBFTkQKRU5ECgpTSEJSU0ZPUkZPTERFUl9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAxODgsIDE5MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUgfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJW5mxnIGZvbGRlciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBERUZQVVNIQlVUVE9OICJPSyIsIDEsIDgwLCAxNzYsIDUwLCAxMiwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiQW5udWxsZXIiLCAyLCAxMzQsIDE3NiwgNTAsIDEyLCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIExURVhUICIiLCBJRERfVElUTEUsIDQsIDQsIDE4MCwgMTIKIExURVhUICIiLCBJRERfU1RBVFVTLCA0LCAyNSwgMTgwLCAxMgogQ09OVFJPTCAiIiwgSUREX1RSRUVWSUVXLCAiU3lzVHJlZVZpZXczMiIsCiAgICAgICAgVFZTX0hBU0JVVFRPTlMgfCBUVlNfSEFTTElORVMgfCBUVlNfTElORVNBVFJPT1QgfAogICAgICAgIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AsCiAgICAgICAgNCwgNDAsIDE4MCwgMTIwCn0KClNITkVXQlJTRk9SRk9MREVSX01TR0JPWCBESUFMT0cgTE9BRE9OQ0FMTCBNT1ZFQUJMRSBESVNDQVJEQUJMRSAxNSwgNDAsIDIxOCwgMTk2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8IFdTX1NJWkVCT1ggfCBEU19NT0RBTEZSQU1FIHwgRFNfU0VURk9OVCB8IERTXzNETE9PSwpDQVBUSU9OICJW5mxnIEZvbGRlciIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiIiwgSUREX1RJVExFLCAxMCwgOCwgMTk4LCAyNAogTFRFWFQgIiIsIElERF9TVEFUVVMsIDEwLCAyNSwgMTk4LCAxMgogTFRFWFQgIkZvbGRlcjoiLCBJRERfRk9MREVSLCAxMCwgMTU2LCA0MCwgMTIKIENPTlRST0wgIiIsIElERF9UUkVFVklFVywgIlN5c1RyZWVWaWV3MzIiLAogICAgICAgIFRWU19IQVNCVVRUT05TIHwgVFZTX0hBU0xJTkVTIHwgVFZTX0xJTkVTQVRST09UIHwKICAgICAgICBXU19CT1JERVIgfCBXU19UQUJTVE9QLAogICAgICAgIDEyLCAzOCwgMTk0LCAxMDUKIEVESVRURVhUIElERF9GT0xERVJURVhULCA0NiwgMTUwLCAxNjAsIDE0LCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZMYXYgbnkgZm9sZGVyIiwgSUREX01BS0VORVdGT0xERVIsIDEyLCAxNzQsIDcwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDEwMiwgMTc0LCA1MCwgMTQsIEJTX0RFRlBVU0hCVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIkFubnVsbGVyIiwgSURDQU5DRUwsIDE1NiwgMTc0LCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAp9CgpTSEVMTF9ZRVNUT0FMTF9NU0dCT1ggRElBTE9HIDIwMCwgMTAwLCAyODAsIDkwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJNZXNzYWdlIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIERFRlBVU0hCVVRUT04gIiZKYSIsIElEWUVTLCAzNCwgNjksIDUzLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICJKYSB0byAmYWx0IiwgSUREX1lFU1RPQUxMLCA5MiwgNjksIDY1LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBQVVNIQlVUVE9OICImTmVqIiwgSUROTywgMTYyLCA2OSwgNTMsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIFBVU0hCVVRUT04gIiZBbm51bGxlciIsIElEQ0FOQ0VMLCAyMjAsIDY5LCA1MywgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogICAgSUNPTiAiIiwgSUREX0lDT04sIDEwLCAxMCwgMTYsIDE2CiAgICBMVEVYVCAiIiwgSUREX01FU1NBR0UsIDQwLCAxMCwgMjM4LCA1MiwgMAp9CgpTSEVMTF9BQk9VVF9NU0dCT1ggRElBTE9HIExPQURPTkNBTEwgTU9WRUFCTEUgRElTQ0FSREFCTEUgMTUsIDQwLCAyMjAsIDE1MgpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19WSVNJQkxFIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiT20gJXMiCkZPTlQgMTAsICJNUyBTaGVsbCBEbGciCnsKIERFRlBVU0hCVVRUT04gIk9LIiwgSURPSywgMTUzLCAxMzMsIDYwLCAxMiwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiV2luZSAmbGljZW5zLi4uIiwgSURDX0FCT1VUX0xJQ0VOU0UsIDE1MywgMTEzLCA2MCwgMTIsIFdTX1RBQlNUT1AKIExJU1RCT1ggSURDX0FCT1VUX0xJU1RCT1gsIDgsIDY1LCAxMzcsIDgyLCBMQlNfTk9USUZZIHwgV1NfVlNDUk9MTCB8IFdTX0JPUkRFUgogSUNPTiAiIiwgc3RjMSwgMTAsIDEwLCAzMCwgMzAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQxLCA0MiwgMTAsIDE3MCwgMTAKIExURVhUICIiLCBJRENfQUJPVVRfU1RBVElDX1RFWFQyLCA0MiwgMjIsIDE3MCwgMTAKIExURVhUICJL+HJlciBw5SAlcyIsIElEQ19BQk9VVF9TVEFUSUNfVEVYVDMsIDQyLCAzNCwgMTcwLCAxMAogTFRFWFQgIldpbmUgaGF2ZGUgaWtrZSB25nJldCBtdWxpZyB1ZGVuIGhq5mxwIGZyYSBkaXNzZSBwZXJzb25lcjoiLCBJRENfQUJPVVRfV0lORV9URVhULCA4LCA1NCwgMjA0LCAxMAp9CgpTSEVMTF9SVU5fRExHIERJQUxPRyBMT0FET05DQUxMIE1PVkVBQkxFIERJU0NBUkRBQkxFIDAsIDAsIDIyNywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfVklTSUJMRSB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBJQ09OICIiLCAxMjI5NywgNywgMTEsIDE4LCAyMCwgV1NfVklTSUJMRQogTFRFWFQgIlNrcml2IG5hdm5ldCBw5SBldCBQcm9ncmFtLCBNYXBwZSwgRG9jdW1lbnQgZWxsZXIgSW50ZXJuZXQgUmVzc291cmNlLCBmb3IgYXQgZuUgV2luZSB0aWwgYXQg5WJuZSBkZXQuIiwgMTIyODksIDM2LCAxMSwgMTgyLCAxOAogTFRFWFQgIibFYmVuOiIsIDEyMzA1LCA3LCAzOSwgMjQsIDEwCiBDT05UUk9MICIiLCAxMjI5OCwgIkNPTUJPQk9YIiwgV1NfVEFCU1RPUCB8IFdTX0dST1VQIHwgV1NfVlNDUk9MTCB8IFdTX1ZJU0lCTEUgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX0RST1BET1dOLCAzNiwgMzcsIDE4MywgMTAwCiBERUZQVVNIQlVUVE9OICJPSyIsIElET0ssIDYyLCA2MywgNTAsIDE0LCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJBbm51bGxlciIsIElEQ0FOQ0VMLCAxMTYsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZHZW5uZW1zZS4uLiIsIDEyMjg4LCAxNzAsIDYzLCA1MCwgMTQsIFdTX1RBQlNUT1AKfQoKU1RSSU5HVEFCTEUKewogICAgICAgIC8qIGNvbHVtbnMgaW4gdGhlIHNoZWxsdmlldyAqLwogICAgICAgIElEU19TSFZfQ09MVU1OMSAgICAgICAgICJGaWwiCiAgICAgICAgSURTX1NIVl9DT0xVTU4yICAgICAgICAgIlN0+HJyZWxzZSIKICAgICAgICBJRFNfU0hWX0NPTFVNTjMgICAgICAgICAiVHlwZSIKICAgICAgICBJRFNfU0hWX0NPTFVNTjQgICAgICAgICAiTW9kaWZpY2VyZXQiCiAgICAgICAgSURTX1NIVl9DT0xVTU41ICAgICAgICAgIkF0dHJpYnV0ZXIiCiAgICAgICAgSURTX1NIVl9DT0xVTU42ICAgICAgICAgIlN0+HJyZWxzZSIKICAgICAgICBJRFNfU0hWX0NPTFVNTjcgICAgICAgICAiU3T4cnJlbHNlIGxlZGlnIgogICAgICAgIElEU19TSFZfQ09MVU1OOCAgICAgICAgICJOYXZuIgogICAgICAgIElEU19TSFZfQ09MVU1OOSAgICAgICAgICJLb21tZW50YXJlIgogICAgICAgIElEU19TSFZfQ09MVU1OMTAgICAgICAgICJFamVyIgogICAgICAgIElEU19TSFZfQ09MVU1OMTEgICAgICAgICJHcnVwcGUiCiAgICAgICAgSURTX1NIVl9DT0xVTU5fREVMRlJPTSAgIk9yaWdpbmFsIHN0ZWQiCiAgICAgICAgSURTX1NIVl9DT0xVTU5fREVMREFURSAgIkRhdG8gc2xldHRldCIKCiAgICAgICAgLyogc3BlY2lhbCBmb2xkZXJzICovCiAgICAgICAgSURTX0RFU0tUT1AgICAgICAgICAgICAgIlNrcml2ZWJvcmQiCiAgICAgICAgSURTX01ZQ09NUFVURVIgICAgICAgICAgIk1pbiBDb21wdXRlciIKICAgICAgICBJRFNfUkVDWUNMRUJJTl9GT0xERVJfTkFNRSAiU2tyYWxkZXNwYW5kIgoJSURTX0NPTlRST0xQQU5FTAkiQ29udHJvbCBQYW5lbCIKCiAgICAgICAgLyogY29udGV4dCBtZW51cyAqLwogICAgICAgIElEU19WSUVXX0xBUkdFICAgICAgICAgICJTdG9yZSBJa29uZXIiCiAgICAgICAgSURTX1ZJRVdfU01BTEwgICAgICAgICAgIlMmbeUgSWtvbmVyIgogICAgICAgIElEU19WSUVXX0xJU1QgICAgICAgICAgICImTGlzdGUiCiAgICAgICAgSURTX1ZJRVdfREVUQUlMUyAgICAgICAgIiZEZXRhbGplciIKICAgICAgICBJRFNfU0VMRUNUICAgICAgICAgICAgICAiVuZsZyIKICAgICAgICBJRFNfT1BFTiAgICAgICAgICAgICAgICAixWJlbiIKCiAgICAgICAgSURTX0NSRUFURUZPTERFUl9ERU5JRUQgIkthbiBpa2tlIGxhdmUgbnkgZm9sZGVyOiBJbmdlbiByZXR0aWdoZWRlci4iCiAgICAgICAgSURTX0NSRUFURUZPTERFUl9DQVBUSU9OICJFcnJvciBkdXJpbmcgY3JlYXRpb24gb2YgYSBuZXcgZm9sZGVyIgogICAgICAgIElEU19ERUxFVEVJVEVNX0NBUFRJT04gIkNvbmZpcm0gZmlsZSBkZWxldGlvbiIKICAgICAgICBJRFNfREVMRVRFRk9MREVSX0NBUFRJT04gIkNvbmZpcm0gZm9sZGVyIGRlbGV0aW9uIgogICAgICAgIElEU19ERUxFVEVJVEVNX1RFWFQgIkVyIGR1IHNpa2tlciBw5SBhdCBkdSB2aWwgc2xldHRlICclMSc/IgogICAgICAgIElEU19ERUxFVEVNVUxUSVBMRV9URVhUICJFciBkdSBzaWtrZXIgcOUgYXQgZHUgdmlsIHNsZXR0ZSBkaXNzZSAlMSBmaWxlcj8iCiAgICAgICAgSURTX0RFTEVURVNFTEVDVEVEX1RFWFQgIkVyIGR1IHNpa2tlciBw5SBhdCBkdSB2aWwgc2xldHRlIGRlIG1hcmtlZGUgZmlsZXI/IgogICAgICAgIElEU19UUkFTSElURU1fVEVYVCAiRXIgZHUgc2lra2VyIHDlIGF0IGR1IHZpbCBzbWlkZSAnJTEnIGkgc2tyYWxkZXNwYW5kZW4/IgogICAgICAgIElEU19UUkFTSEZPTERFUl9URVhUICJFciBkdSBzaWtrZXIgcOUgYXQgZHUgdmlsIHNtaWRlICclMScgb2cgYWwgZGVucyBpbmRob2xkIG5lZCBpIHNrcmFsZGVzcGFuZGVuPyIKICAgICAgICBJRFNfVFJBU0hNVUxUSVBMRV9URVhUICJFciBkdSBzaWtrZXIgcOUgYXQgZHUgdmlsIHNtaWRlIGRpc3NlICUxIGZpbGVyIG5lZCBpIHNrcmFsZGVzcGFuZGVuPyIKICAgICAgICBJRFNfQ0FOVFRSQVNIX1RFWFQgImZpbGVuICclMScga2FuIGlra2Ugc21pZGVzIGkgc2tyYWxkZXNwYW5kZW4uIFZpbCBkdSBzbGV0dGUgZGVuIGlzdGVkZXQgZm9yPyIKICAgICAgICBJRFNfT1ZFUldSSVRFRklMRV9URVhUICJGb2xkZXJlbiBoYXIgYWxsZXJlZGUgZW4gZmlsIGthbGR0ICclMScuXG5cblZpbCBkdSBvdmVyc2tyaXZlIGRlbj8iCiAgICAgICAgSURTX09WRVJXUklURUZJTEVfQ0FQVElPTiAiQ29uZmlybSBmaWxlIG92ZXJ3cml0ZSIKICAgICAgICBJRFNfT1ZFUldSSVRFRk9MREVSX1RFWFQgIkRlbm5lIGZvbGRlciBoYXIgYWxsZXJlZGUgZW4gZm9sZGVyIG1lZCBuYXZuZXQgJyUxJy5cblxuIlwKICAgICAgICAgICAgIkh2aXMgZmlsZXJuZSBpIGRlc3RpbmF0aW9uIGZvbGRlcmVuIGhhciBkZSBzYW1tZSBuYXZuZSBzb20gZmlsZXJuZSBpIGRlblxuIlwKICAgICAgICAgICAgIm1hcmtlcmVkZSBmb2xkZXIgdmlsIGRlIGJsaXZlIG92ZXJza3JldmV0LiBWaWwgZHUgc3RhZGlnIHJ5a2tlIGVsbGVyIGtvcGllcmVcbiJcCiAgICAgICAgICAgICJkZW5uZSBmb2xkZXI/IgoKICAgICAgICAvKiBtZXNzYWdlIGJveCBzdHJpbmdzICovCiAgICAgICAgSURTX1JFU1RBUlRfVElUTEUgICAgICAgIkdlbnN0YXJ0IgogICAgICAgIElEU19SRVNUQVJUX1BST01QVCAgICAgICJWaWwgZHUgc2ltdWxlcmUgZW4gZ2Vuc3RhcnQgYWYgV2luZG93cz8iCiAgICAgICAgSURTX1NIVVRET1dOX1RJVExFICAgICAgIkx1ayBuZWQiCiAgICAgICAgSURTX1NIVVRET1dOX1BST01QVCAgICAgIlZpbCBkdSBsdWtrZSBkaW4gV2luZSBzZXNzaW9uPyIKCiAgICAgICAgLyogc2hlbGwgZm9sZGVyIHBhdGggZGVmYXVsdCB2YWx1ZXMgKi8KICAgICAgICBJRFNfUFJPR1JBTVMgICAgICAgICAgICAgICAgIlN0YXJ0IE1lbnVcXFByb2dyYW1tZXIiCiAgICAgICAgSURTX1BFUlNPTkFMICAgICAgICAgICAgICAgICJNaW5lIERva3VtZW50ZXIiCiAgICAgICAgSURTX0ZBVk9SSVRFUyAgICAgICAgICAgICAgICJGYXZvcml0ZXIiCiAgICAgICAgSURTX1NUQVJUVVAgICAgICAgICAgICAgICAgICJTdGFydCBNZW51XFxQcm9ncmFtbWVyXFxTdGFydCIKICAgICAgICBJRFNfUkVDRU5UICAgICAgICAgICAgICAgICAgIlJlY2VudCIKICAgICAgICBJRFNfU0VORFRPICAgICAgICAgICAgICAgICAgIlNlbmRUbyIKICAgICAgICBJRFNfU1RBUlRNRU5VICAgICAgICAgICAgICAgIlN0YXJ0IE1lbnUiCiAgICAgICAgSURTX01ZTVVTSUMgICAgICAgICAgICAgICAgICJNaW4gTXVzaWsiCiAgICAgICAgSURTX01ZVklERU8gICAgICAgICAgICAgICAgICJNaW5lIEZpbG0iCiAgICAgICAgSURTX0RFU0tUT1BESVJFQ1RPUlkgICAgICAgICJTa3JpdmVib3JkIgogICAgICAgIElEU19ORVRIT09EICAgICAgICAgICAgICAgICAiTmV0SG9vZCIKICAgICAgICBJRFNfVEVNUExBVEVTICAgICAgICAgICAgICAgIlNrYWJlbG9uZXIiCiAgICAgICAgSURTX0FQUERBVEEgICAgICAgICAgICAgICAgICJQcm9ncmFtZGF0YSIKICAgICAgICBJRFNfUFJJTlRIT09EICAgICAgICAgICAgICAgIlByaW50SG9vZCIKICAgICAgICBJRFNfTE9DQUxfQVBQREFUQSAgICAgICAgICAgIkxva2FsZSBpbmRzdGlsbGluZ2VyXFxBcHBsaWNhdGlvbiBEYXRhIgogICAgICAgIElEU19JTlRFUk5FVF9DQUNIRSAgICAgICAgICAiTG9rYWxlIGluZHN0aWxsaW5nZXJcXFRlbXBvcmFyeSBJbnRlcm5ldCBGaWxlcyIKICAgICAgICBJRFNfQ09PS0lFUyAgICAgICAgICAgICAgICAgIkNvb2tpZXMiCiAgICAgICAgSURTX0hJU1RPUlkgICAgICAgICAgICAgICAgICJMb2thbGUgaW5kc3RpbGxpbmdlclxcSGlzdG9yeSIKICAgICAgICBJRFNfUFJPR1JBTV9GSUxFUyAgICAgICAgICAgIlByb2dyYW0gRmlsZXMiCiAgICAgICAgSURTX01ZUElDVFVSRVMgICAgICAgICAgICAgICJNeSBQaWN0dXJlcyIKICAgICAgICBJRFNfUFJPR1JBTV9GSUxFU19DT01NT04gICAgIlByb2dyYW1tZXJcXENvbW1vbiBGaWxlcyIKICAgICAgICBJRFNfQ09NTU9OX0RPQ1VNRU5UUyAgICAgICAgIkRvY3VtZW50ZXIiCiAgICAgICAgSURTX0FETUlOVE9PTFMgICAgICAgICAgICAgICJTdGFydCBNZW51XFxQcm9ncmFtc1xcQWRtaW5pc3RyYXRpdmUgVG9vbHMiCiAgICAgICAgSURTX0NPTU1PTl9NVVNJQyAgICAgICAgICAgICJEb2t1bWVudGVyXFxNaW4gTXVzaWsiCiAgICAgICAgSURTX0NPTU1PTl9QSUNUVVJFUyAgICAgICAgICJEb2t1bWVudGVyXFxNaW5lIEJpbGxlZGVyIgogICAgICAgIElEU19DT01NT05fVklERU8gICAgICAgICAgICAiRG9rdW1lbnRlclxcTWluZSBGaWxtIgogICAgICAgIElEU19DREJVUk5fQVJFQSAgICAgICAgICAgICAiTG9rYWxlIGluZHN0aWxsaW5nZXJcXEFwcGxpY2F0aW9uIERhdGFcXE1pY3Jvc29mdFxcQ0QgQnVybmluZyIKCiAgICAgICAgSURTX05FV0ZPTERFUiAgICAgICAgICAgIk55IEZvbGRlciIKCiAgICAgICAgSURTX0NQQU5FTF9USVRMRSAgICAgICAgICAgICJXaW5lIENvbnRyb2wgUGFuZWwiCiAgICAgICAgSURTX0NQQU5FTF9OQU1FICAgICAgICAgICAgICJOYW1lIgogICAgICAgIElEU19DUEFORUxfREVTQ1JJUFRJT04gICAgICAiRGVzY3JpcHRpb24iCn0KClNUUklOR1RBQkxFCnsKSURTX0xJQ0VOU0VfQ0FQVElPTiwgICAgICAgICAgICAiTGljZW5zYmV0aW5nZWxzZXIiCklEU19MSUNFTlNFLAoiV2luZSBlciBmcmkgc29mdHdhcmU7IGR1IG3lIGRpc3RyaWJ1ZXJlIGRldCBvZy9lbGxlciBcCuZuZHJlIGRldCBpIGhlbmhvbGQgdGlsIHZpbGvlcmVuZSBpIKtHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZbssIHVkZ2l2ZXQgYWYgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZW50ZW4gXAp2ZXJzaW9uIDIuMSBhZiBMaWNlbnNlbiwgZWxsZXIgKGh2aXMgZHUg+G5za2VyIGRldCkgZW4gbnllcmUgdmVyc2lvbi5cblxuXApXaW5lIHVkZ2l2ZXMgaSBo5WIgb20gYXQgZGV0IGVyIG55dHRpZ3QsIFwKbWVuIFVERU4gRU5IVkVSIEdBUkFOVEk7IHVkZW4gZW5nYW5nIGRlbiBhbnR5ZGVkZSBnYXJhbnRpIG9tIFwKSEFOREVMU0VHTkVUSEVEIGVsbGVyIEVHTkVUSEVEIEZPUiBFVCBTUEVDSUVMVCBGT1JNxUwuICBTZSCrR05VIFwKTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2W7IGZvciBmbGVyZSBkZXRhbGplci5cblxuXApEdSBza2FsIGhhdmUgbW9kdGFnZXQgZXQgZWtzZW1wbGFyIGFmIKtHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIFwKTGljZW5zZbsgc2FtbWVuIG1lZCBkZXR0ZSBwcm9ncmFtOyBodmlzIGlra2UsIHNrcml2IHRpbDogdGhlIEZyZWUgU29mdHdhcmUgXApGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiIKfQo=