LyoKICogUmVnZWRpdCByZXNvdXJjZXMKICoKICogQ29weXJpZ2h0IDIwMDMgTWFyY2VsbyBEdWFydGUKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKTEFOR1VBR0UgTEFOR19QT1JUVUdVRVNFLCBTVUJMQU5HX0RFRkFVTFQKCi8qCiAqIE1lbnUKICovCgpJRENfUkVHRURJVCBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgICBQT1BVUCAiJkFycXVpdm8iCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICBJRF9SRUdJU1RSWV9FWElUCiAgICBFTkQKICAgIFBPUFVQICJBaiZ1ZGEiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImU29icmUuLi4iLCAgICAgICAgICAgICAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIiZSZWdpc3RybyIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZJbXBvcnRhciBhcnF1aXZvIGRvIFJlZ2lzdHJvLi4uIiwgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnRhciBhcnF1aXZvIGRvIFJlZ2lzdHJvLi4uIiwgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb25lY3RhciBSZWdpc3RybyBkYSByZWRlLi4uIiwgICAgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIiZEZXNjb25lY3RhciBSZWdpc3RybyBkYSByZWRlLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkltJnByaW1pclx0Q3RybCtQIiwgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfUFJJTlQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJTYWkmciIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIiZFZGl0YXIiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImTW9kaWZpY2FyIiwgICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgUE9QVVAgIiZOb3ZvIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImQ2hhdmUiLCAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJlRleHRvIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmQmlu4XJpbyIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZEV09SRCIsICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeGNsdWlyXHREZWwiLCAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJlJlbm9tZWFyXHRGMiIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImQ29waWFyIG5vbWUgZGEgY2hhdmUiLCAgICAgICAgICAgIElEX0VESVRfQ09QWUtFWU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkxvY2FsaXphclx0Q3RybCtGIiwgICAgICAgICAgICAgICBJRF9FRElUX0ZJTkQsIEdSQVlFRAogICAgICAgIE1FTlVJVEVNICJMJm9jYWxpemFyIHBy83hpbWFcdEYzIiwgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiRSZ4aWJpciIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZCYXJyYSBkZSBzdGF0dXMiLCAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkRpdmlkaXIiLCAgICAgICAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1NQTElUCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZBdHVhbGl6YXJcdEY1IiwgICAgICAgICAgICAgICAgICAgSURfVklFV19SRUZSRVNICiAgICBFTkQKICAgIFBPUFVQICImRmF2b3JpdG9zIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJkFkaWNpb25hciBhb3MgRmF2b3JpdG9zIiwgICAgIElEX0ZBVk9VUklURVNfQUREVE9GQVZPVVJJVEVTCiAgICAgICAgLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiJlJlbW92ZXIgRmF2b3JpdG8iLCAgICAgICAgICAgIElEX0ZBVk9VUklURVNfUkVNT1ZFRkFWT1VSSVRFCiAgICAgICAgLCBHUkFZRUQKICAgIEVORAogICAgUE9QVVAgIkFqJnVkYSIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIiZUb3BpY3MgZGEgQWp1ZGEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU29icmUgbyBFZGl0b3IgZG8gUmVnaXN0cm8iLCBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImTW9kaWZpY2FyIiwgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQoJTUVOVUlURU0gIk1vZGlmaWNhciBkYWRvcyBiaW7hcmlvcyIsICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImUmVub21lYXIiLCAgICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk5vdm8iCiAgICAgICAgQkVHSU4KICAgICAgICAgICAgTUVOVUlURU0gIiZDaGF2ZSIsICAgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX05FV19LRVkKICAgICAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgICAgIE1FTlVJVEVNICJWYWxvciAmVGV4dG8iLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIlZhbG9yICZCaW7hcmlvIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19CSU5BUllWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiVmFsb3IgJkRXT1JEIiwgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0RXT1JEVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkV4Y2x1aXJcdERlbCIsICAgICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImUmVub21lYXJcdEYyIiwgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZDb3BpYXIgbm9tZSBkYSBjaGF2ZSIsICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImTG9jYWxpemFyXHRDdHJsK0YiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgRU5ECkVORAoKCi8qCiAqIERpYWxvZwogKi8KCklERF9BQk9VVEJPWCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjMwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiU29icmUiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIElDT04gICAgICAgICAgICBJRElfUkVHRURJVCxJRElfUkVHRURJVCwxNCw5LDE2LDE2CiAgICBMVEVYVCAgICAgICAgICAgIlJlYWN0T1MgcmVnZWRpdCBWZXJzaW9uIDEuMCIsSURDX1NUQVRJQyw0OSwxMCwxMTksOCwKICAgICAgICAgICAgICAgICAgICBTU19OT1BSRUZJWAogICAgTFRFWFQgICAgICAgICAgICJDb3B5cmlnaHQgKEMpIDIwMDIgUmVhY3RPUyBUZWFtIixJRENfU1RBVElDLDQ5LDIwLDExOSw4CiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE5NSw2LDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YXIgdGV4dG8iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYWRvcyBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgREVGUFVTSEJVVFRPTiAgICJDYW5jZWxhciIsSURDQU5DRUwsMTc1LDYwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJFZGl0YXIgRFdPUkQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiTm9tZSBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJEYWRvcyBkbyB2YWxvcjoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX0RBVEEsNSw0MCw5MCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJCYXNlIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDg1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAiSGV4YWRlY2ltYWwiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hbCIsIElEQ19EV09SRF9ERUMsIDEzMCwgNTIsIDYwLCAxMCwgV1NfVEFCU1RPUAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsODAsMzAsMTEsV1NfR1JPVVAKICAgIERFRlBVU0hCVVRUT04gICAiQ2FuY2VsYXIiLElEQ0FOQ0VMLDE3NSw4MCwzMCwxMSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTm9tZSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUaXBvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkRhZG9zIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiRWRpdG9yIGRvIFJlZ2lzdHJvIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHRyYWJhbGhhciBjb20gbyBSZWdpc3RybyBpbnRlaXJvLiIKICAgIElEX0VESVRfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBlZGnn428gZGUgdmFsb3JlcyBvdSBjaGF2ZXMuIgogICAgSURfVklFV19NRU5VICAgICAgICAgICAgIkNvbnTpbSBjb21hbmRvcyBwYXJhIHBlcnNvbmFsaXph5+NvIGRhIGphbmVsYSBkbyBSZWdpc3Ryby4iCiAgICBJRF9GQVZPVVJJVEVTX01FTlUgICAgICAiQ29udOltIGNvbWFuZG9zIHBhcmEgYWNlc3NhciBjaGF2ZXMgZnJlcXVlbnRlbWVudGUgdXNhZGFzLiIKICAgIElEX0hFTFBfTUVOVSAgICAgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBleGliaefjbyBkYSBhanVkYSBlIGluZm9ybWHn9WVzIHNvYnJlIG8gRWRpdG9yIGRvIFJlZ2lzdHJvLiIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJDb2506W0gY29tYW5kb3MgcGFyYSBjcmlh5+NvIGRlIG5vdmFzIGNoYXZlcyBvdSB2YWxvcmVzIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9FRElUX01PRElGWSAgICAgICAgICAiTW9kaWZpY2Egb3MgZGFkb3MgZG8gdmFsb3IuIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIkFkaWNpb25hIHVtYSBub3ZhIGNoYXZlIgogICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgdGV4dG8uIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkFkaWNpb25hIHVtIG5vdm8gdmFsb3IgYmlu4XJpby4iCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAiQWRpY2lvbmEgdW0gbm92byB2YWxvciBEV09SRC4iCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIkltcG9ydGEgdW0gYXJxdWl2byB0ZXh0byBwYXJhIG8gcmVnaXN0cm8uIgogICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwb3J0YSB0b2RvIG91IHBhcnRlIGRvIHJlZ2lzdHJvIHBhcmEgdW0gYXJxdWl2byB0ZXh0by4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZWN0YSBhIHVtIHJlZ2lzdHJvIGVtIHVtIGNvbXB1dGFkb3IgcmVtb3RvLiIKICAgIElEX1JFR0lTVFJZX0RJU0NPTk5FQ1RORVRXT1JLUkVHSVNUUlkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXNjb25lY3RhIGRlIHVtIHJlZ2lzdHJvIHVtIGNvbXB1dGFkb3IgcmVtb3RvLiIKICAgIElEX1JFR0lTVFJZX1BSSU5UICAgICAgICJJbXByaW1lIHRvZG8gb3UgcGFydGUgZG8gcmVnaXN0cm8uIgovKiAgICBJRF9IRUxQX0hFTFBUT1BJQ1MgICAgICAiQWJyZSBhIGFqdWRhIGRvIEVkaXRvciBkbyBSZWdpc3Ryby4iICovCiAgICBJRF9IRUxQX0FCT1VUICAgICAgICAgICAiRXhpYmUgaW5mb3JtYef1ZXMgZG8gcHJvZ3JhbWEsIG76bWVybyBkYSB2ZXJz428gZSBjb3B5cmlnaHQuIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9FWElUICAgICAgICAiRW5jZXJyYSBvIEVkaXRvciBkbyBSZWdpc3Ryby4iCiAgICBJRF9GQVZPVVJJVEVTX0FERFRPRkFWT1VSSVRFUyAiQWRpY2lvbmEgY2hhdmVzIGEgbGlzdGEgZGUgZmF2b3JpdG9zLiIKICAgIElEX0ZBVk9VUklURVNfUkVNT1ZFRkFWT1VSSVRFICJSZW1vdmUgY2hhdmVzIGRhIGxpc3RhIGRlIGZhdm9yaXRvcy4iCiAgICBJRF9WSUVXX1NUQVRVU0JBUiAgICAgICAiTW9zdHJhIG91IG9jdWx0YSBhIGJhcnJhIGRlIHN0YXR1cy4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiQWx0ZXJhIGEgcG9zaefjbyBkYSBkaXZpc+NvIGVudHJlIG9zIHBhaW7paXMuIgogICAgSURfVklFV19SRUZSRVNIICAgICAgICAgIkF0dWFsaXphIGEgamFuZWxhLiIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICJFeGNsdWkgYSBzZWxlY+NvLiIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICJSZW5vbWVpYSBhIHNlbGVj428uIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkNvcGlhIG8gbm9tZSBkYSBjaGF2ZSBzZWxlY2lvbmFkYSBwYXJhIGEgwXJlYSBkZSB0cmFuc2ZlcupuY2lhLiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJMb2NhbGl6YSB1bSB0ZXh0byBlbSB1bWEgY2hhdmUsIHZhbG9yIG91IGRhZG8uIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgIkxvY2FsaXphIGEgcHLzeGltYSBvY29ycupuY2lhIGRvIHRleHRvIGVzcGVjaWZpY2FkbyBuYSBwZXNxdWlzYSBhbnRlcmlvci4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICJFcnJvIgogICAgSURTX0JBRF9LRVkJCSAgICAiTuNvIHBvZGUgY29uc3VsdGFyIGEgY2hhdmUgJyVzJyIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJO428gcG9kZSBjb25zdWx0YXIgbyB2YWxvciAnJXMnIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIk7jbyBwb2RlIGVkaXRhciBjaGF2ZXMgZGVzdGUgdGlwbyAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICJWYWxvciDpIG11aXRvIGdyYW5kZSAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICJDb25maXJtYXIgZXhjbHVz428gZGUgdmFsb3IiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiVGVtIGNlcnRlemEgcXVlIGRlc2VqYSBleGNsdWlyIG8gdmFsb3IgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAiTm92YSBjaGF2ZSAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTm92byB2YWxvciAjJWQiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCi8qCiAqIERpYWxvZwogKi8KCklERF9ESUFMT0cxIERJQUxPRyBESVNDQVJEQUJMRSAgNTAsIDUwLCAyNjgsIDk4ClNUWUxFIERTXzNETE9PSyB8IERTX0NPTlRST0wgfCBXU19DSElMRCB8IFdTX1ZJU0lCTEUgfCBXU19DTElQU0lCTElOR1MgfAogICAgV1NfQk9SREVSCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KRU5ECgpJRERfRElBTE9HMiBESUFMT0cgRElTQ0FSREFCTEUgIDAsIDAsIDE4NywgOTUKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRGlhbG9nIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDEzMCw3LDUwLDE0CiAgICBQVVNIQlVUVE9OICAgICAgIkNhbmNlbGFyIixJRENBTkNFTCwxMzAsMjQsNTAsMTQKRU5ECgoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIFJlZ2lzdHJ5IEVkaXRvciBIZWxwLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkRpc3BsYXlzIHByb2dyYW0gaW5mb3JtYXRpb24sIHZlcnNpb24gbnVtYmVyLCBhbmQgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==