bw0NCgAAAAClNI1jcVQAAOMAAAAAAAAAAAAAAAAAAAAACgAAAEAAAABzHAYAAGQAZAFsAFoAZABkAWwBWgFkAGQBbAJaAmQAZAFsA1oDZABkAWwEWgRkAGQBbAVaBWQAZAFsBloGZABkAWwHWgdkAGQBbAhaCGQAZAFsCVoJZABkAWwKWgpkAGQBbAtaDGQAZAJsBG0NWg0BAGQAZANsDm0PWg9tEFoQbRFaEQEAZABkBGwSbRNaEwEAZABkBWwUbRVaFW0WWhZtF1oXbRhaGG0ZWhltGloabRtaG20cWhxtHVodbR5aHm0fWh9tIFogbSFaIW0iWiJtI1ojAQBkAGQGbCRtJVolAQBkAGQHbCZtJ1onbShaKG0pWikBAGQAZAhsKm0rWisBAGQAZAlsLG0tWi0BAGQAZApsLm0vWi8BAGQAZAtsMG0xWjEBAGQAZAxsMm0zWjMBAGcAZA2iAVo0ZQWgNWU2oQFaN2UiZA6DAVo4ZSBlIWU5GQBlOWUTZgMZAFo6ZSBlO2U7ZTtmAxkAWjxlIGU9ZSBlHmU9GQBlHmU9GQBmAhkAZgIZAFo+ZA9lPWYCZBBkEYQEWj9kEmUgZTtkE2YCGQBkD2UgZTtlO2U7ZgMZAGYEZBRkFYQEWkBkFmU9ZA9kAWYEZBdkGIQEWkFkD2U9ZgJkGWQahARaQmUnZBtlKGQcgwFlKWQdgwFkHo0DZJxkIGU9ZCFlQ2QPZAFmBmQiZCOEBYMBWkRkJGUXZBNlFWYCGQBkFmU9ZCVlOmQPZAFmCGQmZCeEBFpFZBZlPWQPZT1mBGQoZCmEBFpGZJ1kIGU9ZCtlPWQPZT1mBmQsZC2EBVpHZC5lPWQvZRtlPRkAZA9lPWYGZDBkMYQEWkhkLmU9ZA9kAWYEZDJkM4QEWklkLmU9ZC9lG2U9GQBkD2U9ZgZkNGQ1hARaSmQuZT1kD2U9ZgRkNmQ3hARaS2QuZT1kD2U9ZgRkOGQ5hARaTGQ6ZT1kD2U7ZgRkO2Q8hARaTWQ9ZU5kD2U9ZgRkPmQ/hARaT2RAZRtlG2UVGQAZAGQPZSBlHWU9GQBlHWU7GQBmAhkAZgRkQWRChARaUGQWZT1kD2VDZgRkQ2REhARaUWUEalJmAWRFZRZkRmU7ZA9lGmVTZAFkAWYDGQBmBmRHZEiEBVpUZJ5kFmU9ZEllQ2QPZT1mBmRKZEuEBVpVZBZlPWQPZSBlPWU9ZgIZAGYEZExkTYQEWlZkTmU9ZE9lPWQPZAFmBmRQZFGEBFpXZBZlPWQPZUNmBGRSZFOEBFpYZFRlFWRVZRVkD2QBZgZkVmRXhARaWUcAZFhkWYQAZFllDYMDWlplAGpbZFplPWQPZRplWmQBZAFmAxkAZgRkW2RchASDAVpcZA9lGGVaGQBmAmRdZF6EBFpdZA9lGGVaGQBmAmRfZGCEBFpeZGFlFWRiZRVkD2UhZRUZAGYGZGNkZIQEWl9kZWU9ZGZlHmU7GQBkD2U9ZgZkZ2RohARaYGSfZGplPWRrZT1kD2U9ZgZkbGRthAVaYWRqZT1kD2UgZT1lHmU7GQBmAhkAZgRkbmRvhARaYmRqZT1kD2U+ZgRkcGRxhARaY2RqZT1kD2U9ZgRkcmRzhARaZGR0ZT1kdWUXZT1nAWUgZRVkE2YCGQBmAhkAZA9lIGU9ZT5mAhkAZgZkdmR3hARaZWRqZT1kD2U+ZgRkeGR5hARaZmRqZT1kD2UgZT0ZAGYEZHpke4QEWmdkdGU9ZA9lIGU9ZT1lIGU9ZT1mAhkAZgMZAGYEZHxkfYQEWmhkdGU9ZA9lPWYEZH5kf4QEWmlkdGU9ZA9lPWYEZIBkgYQEWmpHAGSCZIOEAGSDgwJaa2SEZT1kD2VrZgRkhWSGhARabGR0ZT1kD2VrZgRkh2SIhARabWSJZUNkD2QBZgRkimSLhARabmQPZUNmAmSMZI2EBFpvZKBkFmU9ZI9lO2QPZSBlFWU7ZgIZAGYGZJBkkYQFWnBkD2VDZgJkkmSThARacWSUZRtlFRkAZA9lHGUgZRVlFWYCGQAZAGYEZJVkloQEWnJkl2UXZThnAWVDZgIZAGSUZRtlOBkAZA9lIGUbZTgZAGUbZTgZAGYCGQBmBmSYZJmEBFpzRwBkmmSbhABkm2UlgwNadGQBUwApoekAAAAATikB2ghTdHJpbmdJTykD2gtmaWx0ZXJmYWxzZdoDdGVl2gt6aXBfbG9uZ2VzdCkB2g1UcmFjZWJhY2tUeXBlKQ/aA0FuedoIQmluYXJ5SU/aCENhbGxhYmxl2g5Db250ZXh0TWFuYWdlctoERGljdNoJR2VuZXJhdG9y2ghJdGVyYWJsZdoISXRlcmF0b3LaBExpc3TaCE9wdGlvbmFs2gZUZXh0SU/aBVR1cGxl2gRUeXBl2gdUeXBlVmFy2gRjYXN0KQHaEFBlcDUxN0hvb2tDYWxsZXIpA9oFcmV0cnnaEHN0b3BfYWZ0ZXJfZGVsYXnaCndhaXRfZml4ZWQpAdoLX192ZXJzaW9uX18pAdoMQ29tbWFuZEVycm9yKQHaF2dldF9tYWpvcl9taW5vcl92ZXJzaW9uKQHaB1dJTkRPV1MpAdoYcnVubmluZ191bmRlcl92aXJ0dWFsZW52KQ7aBnJtdHJlZdoMZGlzcGxheV9wYXRo2gpiYWNrdXBfZGly2gNhc2vaCHNwbGl0ZXh02gtmb3JtYXRfc2l6ZdoSaXNfaW5zdGFsbGFibGVfZGly2g5ub3JtYWxpemVfcGF0aNoHcmVuYW1lc9oIZ2V0X3Byb2faD2NhcHR1cmVkX3N0ZG91dNoKZW5zdXJlX2RpctoUcmVtb3ZlX2F1dGhfZnJvbV91cmzaGkNvbmZpZ3VyZWRQZXA1MTdIb29rQ2FsbGVy2gFU2gZyZXR1cm5jAAAAAAAAAAAAAAAAAQAAAAUAAABDAAAAczQAAAB0AGoBoAJ0AGoBoAN0BKEBZAFkAaEDfQB0AGoBoAV8AKEBfQBkAqAGdAd8AHQIgwChA1MAKQNOegIuLnoacGlwIHt9IGZyb20ge30gKHB5dGhvbiB7fSkpCdoCb3PaBHBhdGjaBGpvaW7aB2Rpcm5hbWXaCF9fZmlsZV9f2gdhYnNwYXRo2gZmb3JtYXRyGgAAAHIcAAAAKQHaC3BpcF9wa2dfZGlyqQByNwAAAPpjL3Jvb3QvZ2YxODAtZGVtby9jYXJhdmVsX3VzZXJfcHJvamVjdC92ZW52L2xpYi9weXRob24zLjEwL3NpdGUtcGFja2FnZXMvcGlwL19pbnRlcm5hbC91dGlscy9taXNjLnB52g9nZXRfcGlwX3ZlcnNpb25IAAAAcw4AAAAYAQwBBAICAQIBBAEE/XI5AAAA2g9weV92ZXJzaW9uX2luZm8uYwEAAAAAAAAAAAAAAAEAAAAEAAAAQwAAAHNEAAAAdAB8AIMBZAFrAHIRfABkAXQAfACDARgAZAIUADcAfQBuDHQAfACDAWQBawRyHXwAZANkAYUCGQB9AHQBZAR8AIMCUwApBWF4AQAACiAgICBDb252ZXJ0IGEgdHVwbGUgb2YgaW50cyByZXByZXNlbnRpbmcgYSBQeXRob24g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