LyoKICogWENPUFkgLSBXaW5lLWNvbXBhdGlibGUgeGNvcHkgcHJvZ3JhbQogKiBSdXNzaWFuIGxhbmd1YWdlIHN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA3IEouIEVkbWVhZGVzCiAqIENvcHlyaWdodCAoQykgMjAwNyBLaXJpbGwgSy4gU21pcm5vdgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgoKTEFOR1VBR0UgTEFOR19SVVNTSUFOLCBTVUJMQU5HX0RFRkFVTFQKClNUUklOR1RBQkxFCnsKICAgIFNUUklOR19JTlZQQVJNUywKIs3l5O7v8/Hy6Ozu5SD36PHr7iDv4PDg7OXy8O7iIC0g7+7v8O7h8+ny5SAneGNvcHkgLz8nIOTr/yDv7uvz9+Xt6P9cblwK7+7k8O7h7e7j7iDu7+jx4O3o/y5cbiIKICAgIFNUUklOR19JTlZQQVJNLAoizeXk7u/z8fLo7PvpIO/g8ODs5fLwICclcycgLSDv7u/w7uHz6fLlICd4Y29weSAvPycg5Ov/IO/u6/P35e3o/yDv7uTw7uHt7uPuXG5cCu7v6PHg7ej/LlxuIgogICAgU1RSSU5HX1BBVVNFLCAgICAizeDm7Ojy5SDq6+Di6PjzIDxlbnRlcj4sIPfy7uH7IO3g9+Dy/CDq7u/o8O7i4O3o5S5cbiIKICAgIFNUUklOR19TSU1DT1BZLCAgIiVkIPTg6eso7uIpIOH76+4g4fsg8eru7+jw7uLg7e4uXG4iCiAgICBTVFJJTkdfQ09QWSwgICAgICIlZCD04OnrKO7iKSDx6u7v6PDu4uDt7i5cbiIKICAgIFNUUklOR19RSVNESVIsICAgIiclcycg/+Lr/+Xy8f8g9ODp6+7sIOjr6CDv4O/q7uk/XG4iIFwKICAgICAgICAgICAgICAgICAgICAgIihGIC0g1ODp6ywgRCAtIM/g7+rgKVxuIgogICAgU1RSSU5HX1NSQ1BST01QVCwiJXM/IChZZXN8Tm8pXG4iCiAgICBTVFJJTkdfT1ZFUldSSVRFLCLP5fDl7+jx4PL8ICVzPyAoWWVzfE5vfEFsbClcbiIKICAgIFNUUklOR19DT1BZRkFJTCwgIs/w6CDq7u/o8O7i4O3o6CAnJXMnIOIgJyVzJyDv8O7o5+746+Ag7vjo4ergOiAlZFxuIgogICAgU1RSSU5HX09QRU5GQUlMLCAizeXi7ufs7ubt7iDu8urw+/L8ICclcydcbiIKICAgIFNUUklOR19SRUFERkFJTCwgIs/w6CD38uXt6OggJyVzJyDv8O7o5+746+Ag7vjo4ergXG4iCiAgICBTVFJJTkdfWUVTX0NIQVIsICJZIgogICAgU1RSSU5HX05PX0NIQVIsICAiTiIKICAgIFNUUklOR19BTExfQ0hBUiwgIkEiCiAgICBTVFJJTkdfRklMRV9DSEFSLCJGIgogICAgU1RSSU5HX0RJUl9DSEFSLCAiRCIKCiAgICBTVFJJTkdfSEVMUCwKIlhDT1BZIC0gyu7v6PDz5fIg9ODp6/sg6CDk5fDl4vz/IO/g7+7qXG5cClxuXArR6O3y4Orx6PE6XG5cClhDT1BZIHNvdXJjZSBbZGVzdF0gWy9JXSBbL1NdIFsvUV0gWy9GXSBbL0xdIFsvV10gWy9UXSBbL05dIFsvVV0gXG5cClx0ICAgICBbL1JdIFsvSF0gWy9DXSBbL1BdIFsvQV0gWy9NXSBbL0VdIFsvRF0gWy9ZXSBbLy1ZXVxuXApcblwKw+TlOlxuXApcblwKWy9JXSAgxfHr6CDq7u3l9+3g/yDv4O/q4CDu8vHz8vHy4vPl8iDoIOru7+jw8+Xy8f8g4e7r5eUg7uTt7uPuIPTg6evgLCBcblwKICAgICAg8u4g7/Dl5O/u6+Dj4OXy8f8g7+Dv6uAg4iDq4Pfl8fLi5SDs5fHy4CDt4Oft4Pfl7ej/LlxuXApbL1NdICDK7u/o8PPl8iDv4O/q6CDoIO/u5O/g7+roLlxuXApbL0VdICDK7u/o8PPl8iDv4O/q6CDoIO/u5O/g7+roLCDi6uv+9+D/IO/z8fL75S5cblwKWy9RXSAgzeUg7vLu4fDg5uDl8iDo7OXt4CDq7u/o8PPl7Pv1IPTg6evu4i5cblwKWy9GXSAgzvLu4fDg5uDl8iDv7uvt++Ug6Ozl7eAg6PH17uTt+/Ug6CDq7u3l9+379SD04Onr7uIuXG5cClsvTF0gIML74u7k6PIg8e/o8e7qIPTg6evu4iwg6u7y7vD75SDh8+Tz8iDx6u7v6PDu4uDt+y5cblwKWy9XXSAgx+Dv8OD46OLg5fIg7+7k8uLl8Obk5e3o5SDv5fDl5CDt4Pfg6+7sIOru7+jw7uLg7ej/LlxuXApbL1RdICDR7ufk4OXyIPHy8PPq8vPw8yDv4O/u6iwg7e4g7eUg6u7v6PDz5fIg9ODp6/suXG5cClsvWV0gIM/u5ODi6//l8iDn4O/w7vEg7eAg7+7k8uLl8Obk5e3o5SDv5fDl5+Dv6PHoIPTg6evu4i5cblwKWy8tWV0gx+Dv8OD46OLg5fIg7+7k8uLl8Obk5e3o5SDt4CDv5fDl5+Dv6PH8IPTg6evu4i5cblwKWy9QXSAgx+Dv8OD46OLg5fIg7+7k8uLl8Obk5e3o5SDk6/8g6uDm5O7j7iDq7u/o8PPl7O7j7iD04Onr4C5cblwKWy9OXSAgyPHv7uv85/Pl8iDq7vDu8uro5SDo7OXt4CD04Onr7uIg7/DoIOru7+jw7uLg7ejoLlxuXApbL1VdICDK7u/o8PPl8iDy7uv86u4g8uUg9ODp6/ssIOru8u7w++Ug8+blIPHz+eXx8uLz/vIg4iDq7u3l9+3u6SDv4O/q5S5cblwKWy9SXSAgz+Xw5efg7+jx++Lg5fIg9ODp6/ssIOTu8fLz7+375SDy7uv86u4g5Ov/IPfy5e3o/y5cblwKWy9IXSAgyu7v6PDz5fIg8erw+/L75SDoIPHo8fLl7O375SD04Onr+y5cblwKWy9DXSAgz/Du5O7r5uDl8iDw4OHu8vMsIOTg5uUg5fHr6CDv8O7o5+746+Ag7vjo4ergLlxuXApbL0FdICDK7u/o8PPl8iDy7uv86u4g8uUg9ODp6/ssIOTr/yDq7vLu8Pv1IPPx8uDt7uLr5e0g4PLw6OHz8iBcIuDw9eji7fvpXCIuIFxuXApbL01dICDK7u/o8PPl8iDy7uv86u4g8uUg9ODp6/ssIOTr/yDq7vLu8Pv1IPPx8uDt7uLr5e0g4PLw6OHz8iBcIuDw9eji7fvpXCIsXG5cCiAgICAgIO/w6CD98u7sIODy8Ojh8/Ig8+Tg6//l8vH/LlxuXApbL0QgfCAvRDptLWQteV0gyu7v6PDz5fIg8u7r/OruIO3u4vvlIPTg6ev7IOjr6CDy5Swg6u7y7vD75SDh++voIOjn7OXt5e37XG5cCiAgICAgICAgICAgICAgICDv7vHr5SDz6uDn4O3t7ukg5ODy+y4gxfHr6CDk4PLgIO3lIPPq4Ofg7eAsIOru7+jw8+XyIPLu6/zq7lxuXAogICAgICAgICAgICAgICAg8uUg9ODp6/ssIOru8u7w++Ug7e7i5eUg4iDo8fXu5O3u6SDv4O/q5S5cbiIKfQo=