LyoKICogUmVnZWRpdCAoRHV0Y2ggcmVzb3VyY2VzKQogKgogKiBDb3B5cmlnaHQgMjAwMyBIYW5zIExlaWRla2tlcgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAicmVzb3VyY2UuaCIKCkxBTkdVQUdFIExBTkdfRFVUQ0gsIFNVQkxBTkdfTkVVVFJBTAoKCi8qCiAqIE1lbnUKICovCgpJRFJfUkVHRURJVF9NRU5VIE1FTlUgRElTQ0FSREFCTEUKQkVHSU4KICAgIFBPUFVQICImUmVnaXN0ZXJiZXN0YW5kIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiUmVnaXN0ZXJiZXN0YW5kICZpbXBvcnRlcmVuLi4uIiwgICAgSURfUkVHSVNUUllfSU1QT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gIlJlZ2lzdGVyYmVzdGFuZCAmZXhwb3J0ZXJlbi4uLiIsICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICJWZXJiaW5kaW5nICZtYWtlbiBtZXQgbmV0d2Vya3JlZ2lzdGVyLi4uIiwgSURfUkVHSVNUUllfQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIlZlcmJpbmRpbmcgJnZlcmJyZWtlbiBtZXQgbmV0d2Vya3JlZ2lzdGVyLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIkFmJmRydWtrZW5cdEN0cmwrUCIsICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkFmc2x1aXRlbiIsICAgICAgICAgICAgICAgICAgICAgICAgSURfUkVHSVNUUllfRVhJVAogICAgRU5ECiAgICBQT1BVUCAiJkJld2Vya2VuIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJldpanppZ2VuIiwgICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBQT1BVUCAiJk5pZXV3IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU2xldXRlbCIsICAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0tFWQogICAgICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICAgICAgTUVOVUlURU0gIiZUZWtlbnJlZWtzd2FhcmRlIiwgICAgICAgICAgICAgSURfRURJVF9ORVdfU1RSSU5HVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZCaW5haXJlIHdhYXJkZSIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRC13YWFyZGUiLCAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJk11bHRpLVRla2VucmVla3N3YWFyZGUiLCAgICAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRQogICAgICAgIEVORAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVmVyd2lqZGVyZW5cdERlbCIsICAgICAgICAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImTmFhbSB3aWp6aWdlblx0RjIiICAgICAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImU2xldXRlbG5hYW0ga29waetyZW4iLCAgICAgICAgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZab2VrZW5cdEN0cmwrRiIsICAgICAgICAgICAgICAgICAgIElEX0VESVRfRklORCwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gIlZvbGdlbmRlIFpvZWtlblx0RjMiLCAgICAgICAgICAgICAgIElEX0VESVRfRklORE5FWFQsIEdSQVlFRAogICAgRU5ECiAgICBQT1BVUCAiQmVlJmxkIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlN0YXR1c2JhbGsiLCAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TVEFUVVNCQVIKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiUyZwbGl0c2VuIiwgICAgICAgICAgICAgICAgICAgICAgICAgSURfVklFV19TUExJVAogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImVmVybmlldXdlblx0RjUiLCAgICAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIiZGYXZvcmlldGVuIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJlRvZXZvZWdlbiBhYW4gZmF2b3JpZXRlbi4uLiIsICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIiZWZXJ3aWpkZXJlbiB1aXQgZmF2b3JpZXRlbi4uLiIsICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJkhlbHAiCiAgICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImSGVscC1vbmRlcndlcnBlbiIsICAgICAgICAgICAgICAgICBJRF9IRUxQX0hFTFBUT1BJQ1MKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJkluZm8iLCAgICAgIElEX0hFTFBfQUJPVVQKICAgIEVORApFTkQKCklEUl9QT1BVUF9NRU5VUyBNRU5VIERJU0NBUkRBQkxFCkJFR0lOCiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIE1FTlVJVEVNICImV2lqemlnZW4iLCAgICAgICAgICAgICAgICAgIElEX0VESVRfTU9ESUZZCiAgICAgICAgTUVOVUlURU0gIiZCaW5haXJlIGRhdGEgd2lqemlnZW4iLCAgICAgSURfRURJVF9NT0RJRllfQklOCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZWZXJ3aWpkZXJlblx0RGVsIiwgICAgICAgICAgSURfRURJVF9ERUxFVEUKICAgICAgICBNRU5VSVRFTSAiJk5hYW0gd2lqemlnZW4iLCAgICAgICAgICAgICBJRF9FRElUX1JFTkFNRQogIEVORAogIFBPUFVQICIiCiAgQkVHSU4KICAgICAgICBQT1BVUCAiJk5pZXV3IgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImU2xldXRlbCIsICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJlRla2VucmVla3N3YWFyZGUiLCAgICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImQmluYWlyZSB3YWFyZGUiLCAgICAgICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUKICAgICAgICAgICAgTUVOVUlURU0gIiZEV09SRCB3YWFyZGUiLCAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImTXVsdGktVGVrZW5yZWVrc3dhYXJkZSIsSURfRURJVF9ORVdfTVVMVElfU1RSSU5HVkFMVUUKICAgICAgICBFTkQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJlZlcndpamRlcmVuXHREZWwiLCAgICAgICAgICBJRF9FRElUX0RFTEVURQogICAgICAgIE1FTlVJVEVNICImTmFhbSB3aWp6aWdlblx0RjIiLCAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZFeHBvcnRlcmVuLi4uIiwgICAgICAgICAgICAgSURfRURJVF9FWFBPUlQKICAgICAgICBNRU5VSVRFTSAiJlNsZXV0ZWxuYWFtIGtvcGnrcmVuIiwgICAgICBJRF9FRElUX0NPUFlLRVlOQU1FCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIiZab2VrZW5cdEN0cmwrRiIsICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0VYUE9SVF9URU1QTEFURSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjc4LCA1NApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBHUk9VUEJPWCAiUmVnaXN0ZXJiZXN0YW5kICZleHBvcnRlcmVuIiwgSURDX0VYUE9SVF9CQVNFLCA2LCA2LCAyNjYsIDQyLCBXU19HUk9VUAogICAgQVVUT1JBRElPQlVUVE9OICImQWxsZXMiLCBJRENfRVhQT1JUX0FMTCwgMTIsIDE1LCAyNDQsIDEyCiAgICBBVVRPUkFESU9CVVRUT04gIiZHZWtvemVuIHN1YnNsZXV0ZWw6IiwgSURDX0VYUE9SVF9TRUxFQ1RFRCwgMTIsIDMwLCA5MCwgMTIKICAgIEVESVRURVhUIElEQ19FWFBPUlRfUEFUSCwgMTAyLCAzMCwgMTY0LCAxMgpFTkQKCklERF9GSU5EIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMjAsIDg1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJab2VrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiWm9lazoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICJJbjoiLElEQ19TVEFUSUMsNSwgMjIsIDExOSwgOAogICAgQ0hFQ0tCT1ggICAgICAgICJTbGV1dGVscyIsIElEQ19GSU5EX0tFWVMsIDUsIDM0LCA5MCwgMTAsIFdTX1RBQlNUT1AgfCBXU19HUk9VUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJXYWFyZGVuIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgIkdlZ2V2ZW5zIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICJIZWxlIHRla2VucmVla3MiLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICJab2VrZW4iLElET0ssMTc1LDUsNDAsMTUsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiU2x1aXRlbiIsSURDQU5DRUwsMTc1LDI0LDQwLDE1LCBXU19HUk9VUApFTkQKCklERF9BRERGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA1NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVG9ldm9lZ2VuIGFhbiBmYXZvcmlldGVuIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIk5hYW06IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDM2LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDM2LDQwLDE1LCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRmF2b3JpZXRlbiB2ZXJ3aWpkZXJlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJGYXZvcmlldGVuOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIExJU1RCT1ggICAgICAgICBJRENfTkFNRV9MSVNULDUsMTUsMjAwLDUyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgTEJTX1NPUlQgfCBMQlNfTk9JTlRFR1JBTEhFSUdIVCB8IFdTX1ZTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDcyLDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDcyLDQwLDE1LCBXU19HUk9VUApFTkQKCklERF9FRElUX1NUUklORyBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVGVrZW5yZWVrcyBiZXdlcmtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVuYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVnZWdldmVuczoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDU2LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDU2LDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfRFdPUkQgRElBTE9HIERJU0NBUkRBQkxFICAyMiwgMTcsIDIxMCwgMTAwClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJEV09SRCB3YWFyZGUgYmV3ZXJrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiV2FhcmRlbmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FhcmRlZ2VnZXZlbnM6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAiR3JvbmR0YWwiLCBJRENfRFdPUkRfQkFTRSwgMTIwLCAzMCwgODUsIDM3LCBCU19HUk9VUEJPWAogICAgQVVUT1JBRElPQlVUVE9OICJIZXhhZGVjaW1hYWwiLCBJRENfRFdPUkRfSEVYLCAxMzAsIDQwLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIEFVVE9SQURJT0JVVFRPTiAiRGVjaW1hYWwiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA2MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTIwLDc4LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDc4LDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAxNzAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiQmluYWlyZSB3YWFyZGUgYmV3ZXJrZW4iCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICAgIExURVhUICAgICAgICAgICAiV2FhcmRlbmFhbToiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwxNjAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAiV2FhcmRlZ2VnZXZlbnM6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgQ09OVFJPTCAgICAgICAgICIiLElEQ19WQUxVRV9EQVRBLCJIZXhFZGl0IixXU19UQUJTVE9QLDUsNDAsMTYwLDQwCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDgwLDgzLDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTI1LDgzLDQwLDE1LFdTX0dST1VQCkVORAoKSUREX0VESVRfTVVMVElfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDE3NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiTXVsdGktdGVrZW5yZWVrcyBiZXdlcmtlbiIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVuYWFtOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICJXYWFyZGVnZWdldmVuczoiLElEQ19TVEFUSUMsNSwzMCwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsMjAwLDExMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IFdTX0hTQ1JPTEwgfCBXU19WU0NST0xMIHwgRVNfTVVMVElMSU5FIHwgRVNfV0FOVFJFVFVSTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMjAsMTU2LDQwLDE1LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIkFubnVsZXJlbiIsSURDQU5DRUwsMTY1LDE1Niw0MCwxNSxXU19HUk9VUApFTkQKCi8qCiAqIFN0cmluZyBUYWJsZQogKi8KClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfTElTVF9DT0xVTU5fTkFNRSAgICAiTmFhbSIKICAgIElEU19MSVNUX0NPTFVNTl9UWVBFICAgICJUeXBlIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIkdlZ2V2ZW5zIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAiUmVnaXN0ZXItZWRpdG9yIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRF9SRUdJU1RSWV9NRU5VICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCB3ZXJrZW4gbWV0IGhldCBnZWhlbGUgcmVnaXN0ZXIiCiAgICBJRF9FRElUX01FTlUgICAgICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCBiZXdlcmtlbiB2YW4gd2FhcmRlbiBvZiBzbGV1dGVscyIKICAgIElEX1ZJRVdfTUVOVSAgICAgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IGFhbnBhc3NlbiB2YW4gaGV0IHJlZ2lzdGVydmVuc3RlciIKICAgIElEX0ZBVk9SSVRFU19NRU5VICAgICAgICJPcGRyYWNodGVuIHZvb3IgdG9lZ2FuZyB0b3QgdmFhayBnZWJydWlrdGUgc2xldXRlbHMiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAiT3BkcmFjaHRlbiB2b29yIGhldCB3ZWVyZ2V2ZW4gdmFuIEhlbHAgZW4gaW5mb3JtYXRpZSBvdmVyIGRlIFJlZ2lzdGVyLWVkaXRvciIKICAgIElEX0VESVRfTkVXX01FTlUgICAgICAgICJPcGRyYWNodGVuIHZvb3IgaGV0IG1ha2VuIHZhbiBuaWV1d2Ugc2xldXRlbHMgb2Ygd2FhcmRlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfRURJVF9NT0RJRlkgICAgICAgICAgIkRlIGdlZ2V2ZW5zIHZhbiBkZSB3YWFyZGUgd2lqemlnZW4iCiAgICBJRF9FRElUX05FV19LRVkgICAgICAgICAiRWVuIG5pZXV3ZSBzbGV1dGVsIHRvZXZvZWdlbiIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICJFZW4gbmlldXdlIHRla2VucmVla3N3YWFyZGUgdG9ldm9lZ2VuIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIkVlbiBuaWV1d2UgYmluYWlyZSB3YWFyZGUgdG9ldm9lZ2VuIgogICAgSURfRURJVF9ORVdfRFdPUkRWQUxVRSAgIkVlbiBuaWV1d2UgRFdPUkQtd2FhcmRlIHRvZXZvZWdlbiIgCiAgICBJRF9FRElUX05FV19NVUxUSV9TVFJJTkdWQUxVRSAiRWVuIG5pZXV3ZSBtdWx0aS10ZWtlbnJlZWtzd2FhcmRlIHRvZXZvZWdlbiIKICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRSAiRWVuIHRla3N0YmVzdGFuZCBpbiBoZXQgcmVnaXN0ZXIgaW1wb3J0ZXJlbiIKICAgIElEX1JFR0lTVFJZX0VYUE9SVFJFR0lTVFJZRklMRQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldCByZWdpc3RlciBvZiBlZW4gZ2VkZWVsdGUgZXJ2YW4gbmFhciBlZW4gdGVrc3RiZXN0YW5kIGV4cG9ydGVyZW4iCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRWVuIHZlcmJpbmRpbmcgbWFrZW4gbWV0IGhldCByZWdpc3RlciB2YW4gZWVuIGV4dGVybmUgY29tcHV0ZXIiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGUgdmVyYmluZGluZyBtZXQgaGV0IHJlZ2lzdGVyIHZhbiBlZW4gZXh0ZXJuZSBjb21wdXRlciB2ZXJicmVrZW4iCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAiSGV0IHJlZ2lzdGVyIG9mIGVlbiBnZWRlZWx0ZSBlcnZhbiBhZmRydWtrZW4iCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJIZWxwIHZvb3IgZGUgUmVnaXN0ZXItZWRpdG9yIG9wZW5lbiIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICJQcm9ncmFtbWFnZWdldmVucywgdmVyc2llbnVtbWVyIGVuIGNvcHlyaWdodGdlZ2V2ZW5zIHdlZXJnZXZlbiIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIkRlIFJlZ2lzdGVyLWVkaXRvciBhZnNsdWl0ZW4iCiAgICBJRF9GQVZPUklURVNfQUREVE9GQVZPUklURVMgIlNsZXV0ZWxzIHRvZXZvZWdlbiBhYW4gZGUgbGlqc3QgbWV0IGZhdm9yaWV0ZW4iCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIlNsZXV0ZWxzIHZlcndpamRlcmVuIHVpdCBkZSBsaWpzdCBtZXQgZmF2b3JpZXRlbiIKICAgIElEX1ZJRVdfU1RBVFVTQkFSICAgICAgICJEZSBzdGF0dXNiYWxrIHdlZXJnZXZlbiBvZiB2ZXJiZXJnZW4iCiAgICBJRF9WSUVXX1NQTElUICAgICAgICAgICAiRGUgcG9zaXRpZSB2YW4gZGUgc3BsaXRzaW5nIHR1c3NlbiB0d2VlIGRlZWx2ZW5zdGVycyB3aWp6aWdlbiIKICAgIElEX1ZJRVdfUkVGUkVTSCAgICAgICAgICJIZXQgdmVuc3RlciB2ZXJuaWV1d2VuIgogICAgSURfRURJVF9ERUxFVEUgICAgICAgICAgIkRlIHNlbGVjdGllIHZlcndpamRlcmVuIgogICAgSURfRURJVF9SRU5BTUUgICAgICAgICAgIkRlIG5hYW0gdmFuIGRlIHNlbGVjdGllIHdpanppZ2VuIgogICAgSURfRURJVF9DT1BZS0VZTkFNRSAgICAgIkRlIG5hYW0gdmFuIGRlIGdlc2VsZWN0ZWVyZGUgc2xldXRlbCBuYWFyIGhldCBLbGVtYm9yZCBrb3Bp63JlbiIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICJFZW4gdGVrZW5yZWVrcyB6b2VrZW4gaW4gZWVuIHNsZXV0ZWwsIGVlbiB3YWFyZGUgb2YgZ2VnZXZlbnMiCiAgICBJRF9FRElUX0ZJTkRORVhUICAgICAgICAiRGUgb3BnZWdldmVuIHRla3N0IG5vZ21hYWxzIHpvZWtlbiIKICAgIElEX0VESVRfRVhQT1JUICAgICAgICAgICJFeHBvcnRlZXJ0IGRlIGdlc2VsZWN0ZWVyZGUgc3Vic2xldXRlbCB2YW4gaGV0IHJlZ2lzdGVyIG5hYXIgZWVuIHRla3N0IGJlc3RhbmQiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUiAgICAgICAgICAgICAgICJGb3V0IgogICAgSURTX0JBRF9LRVkgICAgICAgICAgICAgIkthbiBzbGV1dGVsICclcycgbmlldCBvcHZyYWdlbiIKICAgIElEU19CQURfVkFMVUUgICAgICAgICAgICJLYW4gd2FhcmRlICclcycgbmlldCBvcHZyYWdlbiIKICAgIElEU19VTlNVUFBPUlRFRF9UWVBFICAgICJLYW4gZGl0IHR5cGUgc2xldXRlbCAoJXUpIG5pZXQgYmV3ZXJrZW4iCiAgICBJRFNfVE9PX0JJR19WQUxVRSAgICAgICAiV2FhcmRlIHRlIGdyb290ICgldSkiCiAgICBJRFNfREVMRVRFX0JPWF9USVRMRSAgICAiV2FhcmRlIHZlcndpamRlcmVuIGJldmVzdGlnZW4iCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAiV2VldCB1IHpla2VyIGRhdCB1IGRlIHdhYXJkZSAnJXMnIHdpbHQgdmVyd2lqZGVyZW4/IgogICAgSURTX0RFTEVURV9CT1hfVEVYVF9NVUxUSVBMRSAiV2VldCB1IHpla2VyIGRhdCB1IGRlemUgd2FhcmRlbiB3aWx0IHZlcndpamRlcmVuPyIKICAgIElEU19ORVdLRVkgICAgICAgICAgICAgICJOaWV1d2Ugc2xldXRlbCAjJWQiCiAgICBJRFNfTkVXVkFMVUUgICAgICAgICAgICAiTmlldXdlIHdhYXJkZSAjJWQiCiAgICBJRFNfTk9URk9VTkQgICAgICAgICAgICAiVGVrZW5yZWVrcyAnJXMnIG5pZXQgZ2V2b25kZW4iCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19GSUxFRElBTE9HX0lNUE9SVF9USVRMRSAgICJSZWdpc3RlcmJlc3RhbmQgaW1wb3J0ZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0VYUE9SVF9USVRMRSAgICJSZWdpc3RlcmJlc3RhbmQgZXhwb3J0ZXJlbiIKICAgIElEU19GSUxFRElBTE9HX0ZJTFRFUiAgICAgICAgICJSZWdpc3RlciBCZXN0YW5kZW5cMCoucmVnXDBXaW45eC9OVDQgUmVnaXN0ZXIgQmVzdGFuZGVuIChSRUdFRElUNClcMCoucmVnXDBBbGxlIEJlc3RhbmRlbiAoKi4qKVwwKi4qXDBcMCIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURTX1JFR0lTVFJZX1JPT1RfTkFNRSAgICAgICAgICAgIkRlemUgQ29tcHV0ZXIiCiAgICBJRFNfUkVHSVNUUllfREVGQVVMVF9WQUxVRSAgICAgICAiKFN0YW5kYWFyZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfTk9UX1NFVCAgICAgICAiKEdlZW4gd2FhcmRlIGluZ2VzdGVsZCkiCiAgICBJRFNfUkVHSVNUUllfVkFMVUVfQ0FOVF9ESVNQTEFZICAiKGthbiB3YWFyZGUgbmlldCB3ZWVyZ2V2ZW4pIgogICAgSURTX1JFR0lTVFJZX1VOS05PV05fVFlQRSAgICAgICAgIihvbmJla2VuZCAlZCkiCkVORAoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKICogVEVYVElOQ0xVREUKICovCgoxIFRFWFRJTkNMVURFIERJU0NBUkRBQkxFCkJFR0lOCiAgICAicmVzb3VyY2UuaFwwIgpFTkQK