LyoKICogUmVnZWRpdCBCdWxnYXJpYW4gcmVzb3VyY2VzCiAqCiAqIENvcHlyaWdodCAyMDA1IE1pbGtvIEtyYWNob3Vub3YKICoKICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgogKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAqCiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiAqLwoKCkxBTkdVQUdFIExBTkdfQlVMR0FSSUFOLCBTVUJMQU5HX0RFRkFVTFQKCi8qU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0ZBVk9SSVRFU19BRERUT0ZBVk9SSVRFUyAixO7h4OL/IOrr/vfu4uUg6vrsIPHv6PH66uAg8SDu8uzl8uro8uUiCiAgICBJRF9GQVZPUklURVNfUkVNT1ZFRkFWT1JJVEUgIs/w5ezg9eLgIOrr/vfu4uUg7vIg8e/o8frq4CDxIO7y7OXy6ujy5SIKRU5EKi8KCklEUl9SRUdFRElUX01FTlUgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogICAgUE9QVVAgIibQ5ePo8fL68CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibC7Prq7egg9ODp6yDiIPDl4+jx8vrw4C4uLiIsICAgIElEX1JFR0lTVFJZX0lNUE9SVFJFR0lTVFJZRklMRQogICAgICAgIE1FTlVJVEVNICImyOft5fHoIPTg6esg7vIg8OXj6PHy+vDgLi4uIiwgICAgSURfUkVHSVNUUllfRVhQT1JUUkVHSVNUUllGSUxFCiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibR4vrw5ugg8eUg8SDs8OXm7uIg8OXj6PHy+vAuLi4iLCBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZLCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSAiyOcm6uv+9+gg7PDl5u7iIPDl4+jx8vrwLi4uIiwgSURfUkVHSVNUUllfRElTQ09OTkVDVE5FVFdPUktSRUdJU1RSWSwgR1JBWUVECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibP5ffg8lx0Q3RybCtQIiwgICAgICAgICAgICAgIElEX1JFR0lTVFJZX1BSSU5ULCBHUkFZRUQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiyOcm9e7kIiwgICAgICAgICAgICAgICAgICAgICAgIElEX1JFR0lTVFJZX0VYSVQKICAgIEVORAogICAgUE9QVVAgIibQ5eTg6vLo8ODt5SIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIibP8O7s5e3oIiwgICAgICAgICAgICAgICAgICAgICBJRF9FRElUX01PRElGWQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIFBPUFVQICImze7iIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImyuv+9yIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJtLl6vHy7uLgIPHy7unt7vHyIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJsTi7uj37eAg8fLu6e3u8fIiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQg8fLu6e3u8fIiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibI5/Lw6OlcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIs/w5egm7OXt8+Lg6Vx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJsru7+jw4Okg6Ozl8u4g7eAg6uv+9+AiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0vrw8ehcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ECiAgICAgICAgTUVOVUlURU0gIs3g7OXw6CAm8evl5OLg+Vx0RjMiLCAgICAgICAgICAgICAgSURfRURJVF9GSU5ETkVYVAogICAgRU5ECiAgICBQT1BVUCAiJsjn4+vl5CIKICAgIEJFR0lOCiAgICAgICAgTUVOVUlURU0gIsvl7fLgIO3gICbx+vHy7v/t6OXy7iIsICAgICAgICAgICAgICAgICBJRF9WSUVXX1NUQVRVU0JBUgogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0ODn5OXr6PLl6yIsICAgICAgICAgICAgICAgICAgICAgIElEX1ZJRVdfU1BMSVQKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJs7h7e7i6Fx0RjUiLCAgICAgICAgICAgICAgICBJRF9WSUVXX1JFRlJFU0gKICAgIEVORAogICAgUE9QVVAgIibO8uzl8uroIgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJsTu4eDi6CDq+uwg7vLs5fLq6PLlIiwgICAgICAgICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTCiAgICAgICAgTUVOVUlURU0gIibP8OXs4PXt6CDu8uzl8urgIiwgICAgICAgICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURQogICAgRU5ECiAgICBQT1BVUCAiJs/u7O75IgogICAgQkVHSU4KICAgICAgICBNRU5VSVRFTSAiJs/u7O757egg8uXs6Fx0RjEiLCAgICAgICAgICAgIElEX0hFTFBfSEVMUFRPUElDUwogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICImzvLt7vHt7iDw5eTg6vLu8OAg7eAg8ejx8uXs7ej/IPDl4+jx8vrwIiwgICAgICBJRF9IRUxQX0FCT1VUCiAgICBFTkQKRU5ECgpJRFJfUE9QVVBfTUVOVVMgTUVOVSBESVNDQVJEQUJMRQpCRUdJTgogIFBPUFVQICIiCiAgQkVHSU4KCU1FTlVJVEVNICImz/Du7OXt6CIsICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9NT0RJRlkKCU1FTlVJVEVNICLP8O7s5e3oIOTi7uj37ejy5SDk4O3t6CIsICAgICAgICAgIElEX0VESVRfTU9ESUZZX0JJTgoJTUVOVUlURU0gU0VQQVJBVE9SCglNRU5VSVRFTSAiJsjn8vDo6Vx0RGVsIiwgICAgICAgICAgICAgICAgSURfRURJVF9ERUxFVEUKCU1FTlVJVEVNICImz/Dl6Ozl7fPi4OkiLCAgICAgICAgICAgICAgICAgICAgIElEX0VESVRfUkVOQU1FCiAgRU5ECiAgUE9QVVAgIiIKICBCRUdJTgogICAgICAgIFBPUFVQICImze7iIgogICAgICAgIEJFR0lOCiAgICAgICAgICAgIE1FTlVJVEVNICImyuv+9yIsICAgICAgICAgICAgICAgICAgICAgICAgSURfRURJVF9ORVdfS0VZCiAgICAgICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgICAgICBNRU5VSVRFTSAiJtLl6vHy7uLgIPHy7unt7vHyIiwgICAgICAgICAgICAgICBJRF9FRElUX05FV19TVFJJTkdWQUxVRQogICAgICAgICAgICBNRU5VSVRFTSAiJsTi7uj37eAg8fLu6e3u8fIiLCAgICAgICAgICAgICAgIElEX0VESVRfTkVXX0JJTkFSWVZBTFVFCiAgICAgICAgICAgIE1FTlVJVEVNICImRFdPUkQg8fLu6e3u8fIiLCAgICAgICAgICAgICAgICBJRF9FRElUX05FV19EV09SRFZBTFVFCiAgICAgICAgRU5ECiAgICAgICAgTUVOVUlURU0gU0VQQVJBVE9SCiAgICAgICAgTUVOVUlURU0gIibI5/Lw6OlcdERlbCIsICAgICAgICAgICAgICAgIElEX0VESVRfREVMRVRFCiAgICAgICAgTUVOVUlURU0gIibP8OXo7OXt8+Lg6Vx0RjIiLCAgICAgICAgICAgICAgICAgSURfRURJVF9SRU5BTUUKICAgICAgICBNRU5VSVRFTSBTRVBBUkFUT1IKICAgICAgICBNRU5VSVRFTSAiJsru7+jw4Okg6Ozl8u4g7eAg6uv+9+AiLCAgICAgICAgICAgICAgSURfRURJVF9DT1BZS0VZTkFNRQogICAgICAgIE1FTlVJVEVNIFNFUEFSQVRPUgogICAgICAgIE1FTlVJVEVNICIm0vrw8ehcdEN0cmwrRiIsICAgICAgICAgICAgICAgSURfRURJVF9GSU5ELCBHUkFZRUQKICBFTkQKRU5ECgoKLyoKICogRGlhbG9nCiAqLwoKSUREX0FCT1VUQk9YIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMzAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19OT0lETEVNU0cgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLO8u3u8e3uIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBJQ09OICAgICAgICAgICAgSURJX1JFR0VESVQsSURJX1JFR0VESVQsMTQsOSwxNiwxNgogICAgTFRFWFQgICAgICAgICAgICJSZWFjdE9TIPDl5ODq8u7wIO3gIPDl4+jx8vrw4CDi5fDx6P8gMS4wIixJRENfU1RBVElDLDQ5LDEwLDExOSw4LAogICAgICAgICAgICAgICAgICAgIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkNvcHlyaWdodCAoQykgMjAwMiBSZWFjdE9TIFRlYW0iLElEQ19TVEFUSUMsNDksMjAsMTE5LDgKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTk1LDYsMzAsMTEsV1NfR1JPVVAKRU5ECgpJRERfRklORCBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0vrw8eXt5SIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLS+vDx6DoiLElEQ19TVEFUSUMsNSw3LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNDAsNSwxMjUsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTAogICAgTFRFWFQgICAgICAgICAgICLS+vDx6CDiOiIsSURDX1NUQVRJQyw1LCAyMiwgMTE5LCA4CiAgICBDSEVDS0JPWCAgICAgICAgIsrr/vfu4uUiLCBJRENfRklORF9LRVlTLCA1LCAzNCwgOTAsIDEwLCBXU19UQUJTVE9QIHwgV1NfR1JPVVAgfCBCU19BVVRPQ0hFQ0tCT1gKICAgIENIRUNLQk9YICAgICAgICAiyOzl7eAg7eAg8fLu6e3u8fLoIiwgSURDX0ZJTkRfVkFMVUVTLCA1LCA0NiwgOTAsIDEwLCBXU19UQUJTVE9QIHwgQlNfQVVUT0NIRUNLQk9YCiAgICBDSEVDS0JPWCAgICAgICAgItH65Prw5uDt6OUg7eAg8fLu6e3u8fLoIiwgSURDX0ZJTkRfQ09OVEVOVCwgNSwgNTgsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgQ0hFQ0tCT1ggICAgICAgICLS+vDx6CDn4CD25evo/yDt6OciLCBJRENfRklORF9XSE9MRSwgNSwgNzAsIDkwLCAxMCwgV1NfVEFCU1RPUCB8IEJTX0FVVE9DSEVDS0JPWAogICAgREVGUFVTSEJVVFRPTiAgICLS+vDx6CIsSURPSywxNzUsNSwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICLH4PLi7vDoIixJRENBTkNFTCwxNzUsMjIsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0FEREZBVk9SSVRFIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDU1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLE7uHg4ugg7vLs5fLq4CIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9OQU1FLDUsMTUsMjAwLDEyLCBXU19CT1JERVIgfCBXU19UQUJTVE9QIHwgRVNfQVVUT0hTQ1JPTEwKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDQwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIs7y7OXt6CIsSURDQU5DRUwsMTc1LDQwLDMwLDExLCBXU19HUk9VUApFTkQKCklERF9ERUxGQVZPUklURSBESUFMT0cgRElTQ0FSREFCTEUgIDIyLCAxNywgMjEwLCA5MApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiz/Dl7OD17egg7vLs5fLq4CIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OU6IixJRENfU1RBVElDLDUsNSwxMTksOAogICAgTElTVEJPWCAgICAgICAgIElEQ19OQU1FX0xJU1QsNSwxNSwyMDAsNTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBMQlNfU09SVCB8IExCU19OT0lOVEVHUkFMSEVJR0hUIHwgV1NfVlNDUk9MTAogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxNDAsNzMsMzAsMTEsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAizvLs5e3oIixJRENBTkNFTCwxNzUsNzMsMzAsMTEsIFdTX0dST1VQCkVORAoKSUREX0VESVRfU1RSSU5HIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDc1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICLQ5eTg6vLo8ODpIPHo7OLu6+XtIO3o5yIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OUg7eAg8fLu6e3u8fLy4DoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMDAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAixODt7eg6IixJRENfU1RBVElDLDUsMzAsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfREFUQSw1LDQwLDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMCiAgICBERUZQVVNIQlVUVE9OICAgIk9LIixJRE9LLDE0MCw2MCwzMCwxMSxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICLO8uzl7egiLElEQ0FOQ0VMLDE3NSw2MCwzMCwxMSxXU19HUk9VUApFTkQKCklERF9FRElUX0RXT1JEIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMjAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0OXk4Ory6PDg6SBEV09SRCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgTFRFWFQgICAgICAgICAgICLI7OUg7eAg8fLu6e3u8fLy4DoiLElEQ19TVEFUSUMsNSw1LDExOSw4CiAgICBFRElUVEVYVCAgICAgICAgSURDX1ZBTFVFX05BTUUsNSwxNSwyMTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AgfCBFU19BVVRPSFNDUk9MTHwgV1NfRElTQUJMRUQKICAgIExURVhUICAgICAgICAgICAixODt7eg6IixJRENfU1RBVElDLDUsMzAsOTAsOAogICAgRURJVFRFWFQgICAgICAgIElEQ19WQUxVRV9EQVRBLDUsNDAsOTAsMTIsIFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKICAgIEdST1VQQk9YICAgICAgICAizvHt7uLgIiwgSURDX0RXT1JEX0JBU0UsIDEyMCwgMzAsIDk1LCAzNywgQlNfR1JPVVBCT1gKICAgIEFVVE9SQURJT0JVVFRPTiAi2OXx8uDt5eTl8eXy6Pft4CIsIElEQ19EV09SRF9IRVgsIDEzMCwgNDAsIDgwLCAxMCwgV1NfVEFCU1RPUAogICAgQVVUT1JBRElPQlVUVE9OICLE5fHl8uj37eAiLCBJRENfRFdPUkRfREVDLCAxMzAsIDUyLCA3MCwgMTAsIFdTX1RBQlNUT1AKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTUwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIs7y7OXt6CIsSURDQU5DRUwsMTg1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKSUREX0VESVRfQklOQVJZIERJQUxPRyBESVNDQVJEQUJMRSAgMjIsIDE3LCAyMTAsIDEwMApTVFlMRSBEU19NT0RBTEZSQU1FIHwgRFNfTk9JRExFTVNHIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAi0OXk4Ory6PDg6SDk4u7o9+3gIPHy7unt7vHyIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCiAgICBMVEVYVCAgICAgICAgICAgIsjs5SDt4CDx8u7p7e7x8vLgOiIsSURDX1NUQVRJQyw1LDUsMTE5LDgKICAgIEVESVRURVhUICAgICAgICBJRENfVkFMVUVfTkFNRSw1LDE1LDIwMCwxMiwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUCB8IEVTX0FVVE9IU0NST0xMfCBXU19ESVNBQkxFRAogICAgTFRFWFQgICAgICAgICAgICLE4O3t6DoiLElEQ19TVEFUSUMsNSwzMCw5MCw4CiAgICBDT05UUk9MICAgICAgICAgIiIsSURDX1ZBTFVFX0RBVEEsIkhleEVkaXQiLFdTX1RBQlNUT1AsNCw0MCwxNjAsNDAKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMTQwLDgwLDMwLDExLFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgIs7y7OXt6CIsSURDQU5DRUwsMTc1LDgwLDMwLDExLFdTX0dST1VQCkVORAoKLyoKICogU3RyaW5nIFRhYmxlCiAqLwoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19MSVNUX0NPTFVNTl9OQU1FICAgICLI7OUiCiAgICBJRFNfTElTVF9DT0xVTU5fVFlQRSAgICAi0ujvIgogICAgSURTX0xJU1RfQ09MVU1OX0RBVEEgICAgIsTg7e3oIgpFTkQKClNUUklOR1RBQkxFIERJU0NBUkRBQkxFCkJFR0lOCiAgICBJRFNfQVBQX1RJVExFICAgICAgICAgICAi0OXk4Ory7vAg7eAg8ejx8uXs7ej/IPDl4+jx8vrwIgogICAgSURDX1JFR0VESVQgICAgICAgICAgICAgIlJFR0VESVQiCiAgICBJRENfUkVHRURJVF9GUkFNRSAgICAgICAiUkVHRURJVF9GUkFNRSIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfTUVOVSAgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDz7/Dg4uvl7ejlIO3gIPbl6+j/IPDl4+jx8vrwIgogICAgSURfRURJVF9NRU5VICAgICAgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDw5eTg6vLo8ODt5SDt4CDx8u7p7e7x8ugg6OvoIOrr/vfu4uUiCiAgICBJRF9WSUVXX01FTlUgICAgICAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIO/l8PHu7eDr6Ofo8ODt5SDt4CDi+u347ej/IOLo5CDt4CDw5eTg6vLu8OAiCiAgICBJRF9GQVZPUklURVNfTUVOVSAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIOTu8fL67yDk7iD35fHy7iDo5+/u6+fi4O3oIOrr/vfu4uUiCiAgICBJRF9IRUxQX01FTlUgICAgICAgICAgICAi0frk+vDm4CDq7uzg7eToIOfgIOjn4ujq4uDt5SDt4CDv7uzu+SDn4CDw5eTg6vLu8OAg7eAg8OXj6PHy+vDgIgogICAgSURfRURJVF9ORVdfTUVOVSAgICAgICAgItH65Prw5uAg6u7s4O3k6CDn4CDx+ufk4OLg7eUg7eAg7e7i6CDx8u7p7e7x8ugg6OvoIOrr/vfu4uUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEX0VESVRfTU9ESUZZICAgICAgICAgICLP8O7s5e3/IOTg7e3o8uUg4iDx8u7p7e7x8vLgIgogICAgSURfRURJVF9ORVdfS0VZICAgICAgICAgIsTu4eDi/yDt7uIg6uv+9yIKICAgIElEX0VESVRfTkVXX1NUUklOR1ZBTFVFICLE7uHg4v8g7e7i4CDx8u7p7e7x8iDu8iDy6O8g8ejs4u7r5e0g7ejnIgogICAgSURfRURJVF9ORVdfQklOQVJZVkFMVUUgIsTu4eDi/yDt7uLgIOTi7uj37eAg8fLu6e3u8fIiCiAgICBJRF9FRElUX05FV19EV09SRFZBTFVFICAixO7h4OL/IO3u4uAgRFdPUkQg8fLu6e3u8fIiCiAgICBJRF9SRUdJU1RSWV9JTVBPUlRSRUdJU1RSWUZJTEUgIsLs+uri4CDy5erx8u7iIPTg6esg4iDx6PHy5ezt6P8g8OXj6PHy+vAiCiAgICBJRF9SRUdJU1RSWV9FWFBPUlRSRUdJU1RSWUZJTEUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICLH4O/o8eLgIPb/6+7y7iDo6+gg9+Dx8iDu8iDx+uT68Obg7ejl8u4g7eAg8ejx8uXs7ej/IPDl4+jx8vrwIOL64iDy5erx8u7iIPTg6esiCiAgICBJRF9SRUdJU1RSWV9DT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAi0eL68Ofi4CDx5SDx+vEg8ejx8uXs7ej/IPDl4+jx8vrwIO3gIOTw8+Mg6u7s7/7y+vAiCiAgICBJRF9SRUdJU1RSWV9ESVNDT05ORUNUTkVUV09SS1JFR0lTVFJZCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiz/Dl6vDg8v/i4CDi8Prn6uDy4CDx+vEg8ejx8uXs7ej/IPDl4+jx8vrwIO3gIOTw8+Mg6u7s7/7y+vAiCiAgICBJRF9SRUdJU1RSWV9QUklOVCAgICAgICAi0ODn7+X34PLi4CD25evo/yDo6+gg9+Dx8iDu8iDx6PHy5ezt6P8g8OXj6PHy+vAiCi8qICAgIElEX0hFTFBfSEVMUFRPUElDUyAgICAgICJPcGVucyByZWdpc3RyeSBlZGl0b3IgaGVscCIgKi8KICAgIElEX0hFTFBfQUJPVVQgICAgICAgICAgICLP7urg5+LgIOjt9O7w7OD26P8g5+Ag7/Du4/Dg7OAsIOLl8PHo//LgIOgg4OLy7vDx6ujy5SDv8ODi4CIKRU5ECgpTVFJJTkdUQUJMRSBESVNDQVJEQUJMRQpCRUdJTgogICAgSURfUkVHSVNUUllfRVhJVCAgICAgICAgIsjn6+jn4CDu8iDw5eTg6vLu8OAg7eAg8ejx8uXs7ej/IPDl4+jx8vrwIgogICAgSURfRkFWT1JJVEVTX0FERFRPRkFWT1JJVEVTICLE7uHg4v8g6uv+9+7i5SDq+uwg8e/o8frq4CDxIO7y7OXy6ujy5SIKICAgIElEX0ZBVk9SSVRFU19SRU1PVkVGQVZPUklURSAiz/Dl7OD14uAg6uv+9+7i5SDu8iDx7+jx+urgIPEg7vLs5fLq6PLlIgogICAgSURfVklFV19TVEFUVVNCQVIgICAgICAgIs/u6uDn4uAg6OvoIPHq8Oji4CDr5e3y4PLgIO3gIPH68fLu/+3o5fLuIgogICAgSURfVklFV19TUExJVCAgICAgICAgICAgIs/w7uzl7f8g7OXx8u7v7uvu5uXt6OXy7iDt4CDw4Ofk5evo8uXr/yDs5ebk8yDk4uXy5SDv7uvu4ujt6CDt4CDw5eTg6vLu8OAiCiAgICBJRF9WSUVXX1JFRlJFU0ggICAgICAgICAizuHt7uL/4uAg8frk+vDm4O3o5fLuIO3gIO/w7ufu8OX24CIKICAgIElEX0VESVRfREVMRVRFICAgICAgICAgICLI5/Lw6OLgIOjn4fDg7e7y7iIKICAgIElEX0VESVRfUkVOQU1FICAgICAgICAgICLP8OXo7OXt8+LgIOjn4fDg7e7y7iIKICAgIElEX0VESVRfQ09QWUtFWU5BTUUgICAgICLK7u/o8OAg6Ozl8u4g7eAg6Ofh8ODt6P8g6uv+9yDiIPHo8fLl7O3o/yDh8/Tl8CIKICAgIElEX0VESVRfRklORCAgICAgICAgICAgICLS+vDx6CDn4CDy5erx8u7iIO3o5yDiIOrr/vfu4uXy5Swg8fLu6e3u8fLo8uUg6CDk4O3t6PLlIgogICAgSURfRURJVF9GSU5ETkVYVCAgICAgICAgItL68PHoIPHr5eTi4Pnu8u4g7P/x8u4sIO3gIOru5fLuIPHlIPHw5fngIPLl6vHy4CDu8iDv8OXk6Pjt7vLuIPL68PHl7eUiCkVORAoKU1RSSU5HVEFCTEUgRElTQ0FSREFCTEUKQkVHSU4KICAgIElEU19FUlJPUgkJICAgICLD8OX46uAiCiAgICBJRFNfQkFEX0tFWQkJICAgICLH4P/i6uDy4CDn4CDq6/73ICclcycg7eXz8e/l+O3gIgogICAgSURTX0JBRF9WQUxVRSAgICAgICAgICAgIsfg/+Lq4PLgIOfgIPHy7unt7vHyICclcycg7eXz8e/l+O3gIgogICAgSURTX1VOU1VQUE9SVEVEX1RZUEUgICAgIs3lIOzu5uUg5OAg8OXk4Ory6PDg8uUg6uv+9+7i5SDu8iDy7ufoIPLo7yAoJWxkKSIKICAgIElEU19UT09fQklHX1ZBTFVFICAgICAgICLR8u7p7e7x8vLgIOUg7/Dl6uDr5e3uIOPu6//s4CAoJWxkKSIKICAgIElEU19ERUxFVEVfQk9YX1RJVExFICAgICLP7vLi+vDk5fLlIOjn8vDo4uDt5fLuIO3gIPHy7unt7vHy8uAiCiAgICBJRFNfREVMRVRFX0JPWF9URVhUICAgICAizeDo8fLo7eAg6+gg6PHq4PLlIOTgIOjn8vDo5fLlIPHy7unt7vHy8uAgJyVzJz8iCiAgICBJRFNfTkVXS0VZICAgICAgICAgICAgICAize7iIOrr/vcgIyVkIgogICAgSURTX05FV1ZBTFVFICAgICAgICAgICAgIs3u4uAg8fLu6e3u8fIgIyVkIgpFTkQKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgovKgogKiBEaWFsb2cKICovCgpJRERfRElBTE9HMSBESUFMT0cgRElTQ0FSREFCTEUgIDUwLCA1MCwgMjY4LCA5OApTVFlMRSBEU18zRExPT0sgfCBEU19DT05UUk9MIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfQ0xJUFNJQkxJTkdTIHwKICAgIFdTX0JPUkRFUgpGT05UIDgsICJNUyBTaGVsbCBEbGciCkJFR0lOCkVORAoKSUREX0RJQUxPRzIgRElBTE9HIERJU0NBUkRBQkxFICAwLCAwLCAxODcsIDk1ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkRpYWxvZyIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxMzAsNyw1MCwxNAogICAgUFVTSEJVVFRPTiAgICAgICLO8uzl7egiLElEQ0FOQ0VMLDEzMCwyNCw1MCwxNApFTkQKCgovKgogKiBURVhUSU5DTFVERQogKi8KCjEgVEVYVElOQ0xVREUgRElTQ0FSREFCTEUKQkVHSU4KICAgICJyZXNvdXJjZS5oXDAiCkVORAoKCgovKgogKiBTdHJpbmcgVGFibGUKICovCgovKgogKlNUUklOR1RBQkxFIERJU0NBUkRBQkxFCiAqQkVHSU4KICogICAgSURfSEVMUF9IRUxQVE9QSUNTICAgICAgIk9wZW5zIFJlZ2lzdHJ5IEVkaXRvciBIZWxwLiIKICogICAgSURfSEVMUF9BQk9VVCAgICAgICAgICAgIkRpc3BsYXlzIHByb2dyYW0gaW5mb3JtYXRpb24sIHZlcnNpb24gbnVtYmVyLCBhbmQgY29weXJpZ2h0LiIKICpFTkQKICovCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCg==