@decentro-dev/polkadot-sufficient-assets 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +60 -0
- package/package.json +99 -0
- package/packages/client/README.md +333 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.js +2 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.mjs +2 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/paseo/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/paseo/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/paseo/index.js +2 -0
- package/packages/client/dist/chain-specs/paseo/index.mjs +2 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/polkadot/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/polkadot/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/polkadot/index.js +2 -0
- package/packages/client/dist/chain-specs/polkadot/index.mjs +2 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.js +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.mjs +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/westend2/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/westend2/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/westend2/index.js +2 -0
- package/packages/client/dist/chain-specs/westend2/index.mjs +2 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.mjs +2 -0
- package/packages/client/dist/index.d.mts +106 -0
- package/packages/client/dist/index.d.ts +106 -0
- package/packages/client/dist/index.js +2 -0
- package/packages/client/dist/index.mjs +2 -0
- package/packages/client/dist/smoldot/from-node-worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/from-node-worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/from-node-worker/index.js +2 -0
- package/packages/client/dist/smoldot/from-node-worker/index.mjs +2 -0
- package/packages/client/dist/smoldot/from-worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/from-worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/from-worker/index.js +2 -0
- package/packages/client/dist/smoldot/from-worker/index.mjs +2 -0
- package/packages/client/dist/smoldot/index.d.mts +14 -0
- package/packages/client/dist/smoldot/index.d.ts +14 -0
- package/packages/client/dist/smoldot/index.js +2 -0
- package/packages/client/dist/smoldot/index.mjs +2 -0
- package/packages/client/dist/smoldot/worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/worker/index.js +2 -0
- package/packages/client/dist/smoldot/worker/index.mjs +2 -0
- package/packages/core/.papi/descriptors/dist/common-types.d.ts +21274 -0
- package/packages/core/.papi/descriptors/dist/descriptors-EQXQJ7SL.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/descriptors.d.ts +11 -0
- package/packages/core/.papi/descriptors/dist/hdx.d.ts +366 -0
- package/packages/core/.papi/descriptors/dist/hdx_metadata-XH2Y6EGQ.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/hdx_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/index.d.mts +24579 -0
- package/packages/core/.papi/descriptors/dist/index.d.ts +23 -0
- package/packages/core/.papi/descriptors/dist/index.js +1 -0
- package/packages/core/.papi/descriptors/dist/index.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/kah_metadata-OCBL5LAN.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/kusama.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/kusama_metadata-TGJ43LLG.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kusama_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/metadataTypes-MIM6CGSL.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/metadataTypes.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/pah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/pah_metadata-JG7F7QDO.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/pah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/paseo.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/paseo_metadata-5VVMOYKO.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/paseo_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/paseoah.d.ts +242 -0
- package/packages/core/.papi/descriptors/dist/paseoah_metadata-KVQKFE5R.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/paseoah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/polkadot.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/polkadot_metadata-ASE5745E.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/polkadot_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/rah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/rah_metadata-FL7L2MWD.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/rah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/rococo.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/rococo_metadata-CHYQZIV5.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/rococo_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/wah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/wah_metadata-M2H6IX7C.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/wah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/westend.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/westend_metadata-IAM3KHRQ.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/westend_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/package.json +24 -0
- package/packages/core/.papi/metadata/hdx.scale +0 -0
- package/packages/core/.papi/metadata/kah.scale +0 -0
- package/packages/core/.papi/metadata/kusama.scale +0 -0
- package/packages/core/.papi/metadata/pah.scale +0 -0
- package/packages/core/.papi/metadata/paseo.scale +0 -0
- package/packages/core/.papi/metadata/paseoah.scale +0 -0
- package/packages/core/.papi/metadata/polkadot.scale +0 -0
- package/packages/core/.papi/metadata/rah.scale +0 -0
- package/packages/core/.papi/metadata/rococo.scale +0 -0
- package/packages/core/.papi/metadata/wah.scale +0 -0
- package/packages/core/.papi/metadata/westend.scale +0 -0
- package/packages/core/.papi/polkadot-api.json +50 -0
- package/packages/core/dist/index.d.mts +676 -0
- package/packages/core/dist/index.d.ts +676 -0
- package/packages/core/dist/index.js +1 -0
- package/packages/core/dist/index.mjs +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var G="bWV0YQ+RCAAMHHNwX2NvcmUYY3J5cHRvLEFjY291bnRJZDMyAAAEAAQBIFt1ODsgMzJdAAAEAAADIAAAAAgACAAABQMADAgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQEQLEFjY291bnREYXRhARQAFAEUbm9uY2UQARROb25jZQABJGNvbnN1bWVycxABIFJlZkNvdW50AAEkcHJvdmlkZXJzEAEgUmVmQ291bnQAASxzdWZmaWNpZW50cxABIFJlZkNvdW50AAEQZGF0YRQBLEFjY291bnREYXRhAAAQAAAFBQAUDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBGAAQARBmcmVlGAEcQmFsYW5jZQABIHJlc2VydmVkGAEcQmFsYW5jZQABGGZyb3plbhgBHEJhbGFuY2UAARRmbGFncxwBKEV4dHJhRmxhZ3MAABgAAAUHABwMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEABgBEHUxMjgAACAAAAUAACQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEoAAwBGG5vcm1hbCgBBFQAASxvcGVyYXRpb25hbCgBBFQAASRtYW5kYXRvcnkoAQRUAAAoDChzcF93ZWlnaHRzJHdlaWdodF92MhhXZWlnaHQAAAgBIHJlZl90aW1lLAEMdTY0AAEocHJvb2Zfc2l6ZSwBDHU2NAAALAAABjAAMAAABQYANAg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQABAEgW3U4OyAzMl0AADgAAAIIADwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzQAE8VmVjPERpZ2VzdEl0ZW0+AABAAAACRABEEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgASAFEQ29uc2Vuc3VzRW5naW5lSWQAADgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAEABBTZWFsCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAFABRPdGhlcgQAOAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAEgAAAMEAAAACABMAAACUABQCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBVARUATQADAEUcGhhc2WFAgEUUGhhc2UAARRldmVudFQBBEUAARh0b3BpY3OJAgEYVmVjPFQ+AABUCGRhc3NldF9odWJfd2VzdGVuZF9ydW50aW1lMFJ1bnRpbWVFdmVudAABbBhTeXN0ZW0EAFgBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAB8AbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBCYWxhbmNlcwQAhAF8cGFsbGV0X2JhbGFuY2VzOjpFdmVudDxSdW50aW1lPgAKAEhUcmFuc2FjdGlvblBheW1lbnQEAIwBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALADhBc3NldFR4UGF5bWVudAQAkAHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQBEQ29sbGF0b3JTZWxlY3Rpb24EANwBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EAOQBVHBhbGxldF9zZXNzaW9uOjpFdmVudAAWACRYY21wUXVldWUEAOgBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADsAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBADRAQGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAERUb1JvY29jb1hjbVJvdXRlcgQA1QEBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEAN0BAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwAcVXRpbGl0eQQA7QEBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQA+QEBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAAECAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAGEFzc2V0cwQADQIB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQAEQIBeHBhbGxldF91bmlxdWVzOjpFdmVudDxSdW50aW1lPgAzABBOZnRzBAAtAgFscGFsbGV0X25mdHM6OkV2ZW50PFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAEkCAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAUE5mdEZyYWN0aW9uYWxpemF0aW9uBABNAgGwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbjo6RXZlbnQ8UnVudGltZT4ANgAoUG9vbEFzc2V0cwQAUQIB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMz4ANwA8QXNzZXRDb252ZXJzaW9uBABVAgGccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb246OkV2ZW50PFJ1bnRpbWU+ADgANEFzc2V0c0ZyZWV6ZXIEAGkCAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMT4AOQBQRm9yZWlnbkFzc2V0c0ZyZWV6ZXIEAG0CAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMj4AOgBEUG9vbEFzc2V0c0ZyZWV6ZXIEAHECAR0BcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6Okluc3RhbmNlMz4AOwBIU3RhdGVUcmllTWlncmF0aW9uBAB1AgGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBGAGBBc3NldENvbnZlcnNpb25NaWdyYXRpb24EAIECAaxwYWxsZXRfYXNzZXRfY29udmVyc2lvbl9vcHM6OkV2ZW50PFJ1bnRpbWU+AMgAAFgMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARxARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm9cATBEaXNwYXRjaEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9yaAE0RGlzcGF0Y2hFcnJvcgABNGRpc3BhdGNoX2luZm9cATBEaXNwYXRjaEluZm8AAQRQQW4gZXh0cmluc2ljIGZhaWxlZC4sQ29kZVVwZGF0ZWQAAgRQYDpjb2RlYCB3YXMgdXBkYXRlZC4oTmV3QWNjb3VudAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgABMFQ6OkFjY291bnRJZAABEGhhc2g0ARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC5EVXBncmFkZUF1dGhvcml6ZWQIASRjb2RlX2hhc2g0ARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbiABEGJvb2wABgRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC5cDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoMERpc3BhdGNoSW5mbwAADAEYd2VpZ2h0KAEYV2VpZ2h0AAEUY2xhc3NgATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWVkARBQYXlzAABgDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAABkDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAGgIKHNwX3J1bnRpbWU0RGlzcGF0Y2hFcnJvcgABOBRPdGhlcgAAADBDYW5ub3RMb29rdXAAAQAkQmFkT3JpZ2luAAIAGE1vZHVsZQQAbAEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAcAEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAB0ATxBcml0aG1ldGljRXJyb3IACAA0VHJhbnNhY3Rpb25hbAQAeAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AAGwIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4CAEIdTgAARRlcnJvckgBjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAABwCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAHQINHNwX2FyaXRobWV0aWM8QXJpdGhtZXRpY0Vycm9yAAEMJFVuZGVyZmxvdwAAACBPdmVyZmxvdwABADhEaXZpc2lvbkJ5WmVybwACAAB4CChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAB8DHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBRFdmVudAQEVAABGGBWYWxpZGF0aW9uRnVuY3Rpb25TdG9yZWQAAATQVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGJlZW4gc2NoZWR1bGVkIHRvIGFwcGx5LmRWYWxpZGF0aW9uRnVuY3Rpb25BcHBsaWVkBAFUcmVsYXlfY2hhaW5fYmxvY2tfbnVtEAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEERQFUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiB3YXMgYXBwbGllZCBhcyBvZiB0aGUgY29udGFpbmVkIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlci5sVmFsaWRhdGlvbkZ1bmN0aW9uRGlzY2FyZGVkAAIEsFRoZSByZWxheS1jaGFpbiBhYm9ydGVkIHRoZSB1cGdyYWRlIHByb2Nlc3MuYERvd253YXJkTWVzc2FnZXNSZWNlaXZlZAQBFGNvdW50EAEMdTMyAAMEAQFTb21lIGRvd253YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuZERvd253YXJkTWVzc2FnZXNQcm9jZXNzZWQIASx3ZWlnaHRfdXNlZCgBGFdlaWdodAABIGRtcV9oZWFkNAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2iAATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIAEGE9wdGlvbgQEVAEEAQgQTm9uZQAAABBTb21lBAAEAAABAACEDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAFYHEVuZG93ZWQIARxhY2NvdW50AAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlGAEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8AATBUOjpBY2NvdW50SWQAARBmcmVlGAEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVziAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAIBB0BU29tZSBhbW91bnQgd2FzIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4cU2xhc2hlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4YQnVybmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQALBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4kU3VzcGVuZGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAMBBUBU29tZSBhbW91bnQgd2FzIHN1c3BlbmRlZCBmcm9tIGFuIGFjY291bnQgKGl0IGNhbiBiZSByZXN0b3JlZCBsYXRlcikuIFJlc3RvcmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQANBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwABMFQ6OkFjY291bnRJZAAOBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50GAEoVDo6QmFsYW5jZQAPBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudBgBKFQ6OkJhbGFuY2UAEAQlAVRvdGFsIGlzc3VhbmNlIHdhcyBkZWNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgZGVidCB0byBiZSBiYWxhbmNlZC4YTG9ja2VkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQARBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABIEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBmcm96ZW4uGFRoYXdlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAFARgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGQYAShUOjpCYWxhbmNlAAEMbmV3GAEoVDo6QmFsYW5jZQAVBKxUaGUgYFRvdGFsSXNzdWFuY2VgIHdhcyBmb3JjZWZ1bGx5IGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0iBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAIwMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8AATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVlGAEwQmFsYW5jZU9mPFQ+AAEMdGlwGAEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJAMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvAAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZRgBMEJhbGFuY2VPZjxUPgABDHRpcBgBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lklAEoVDo6QXNzZXRJZAAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLkRBc3NldFJlZnVuZEZhaWxlZAQBSG5hdGl2ZV9hbW91bnRfa2VwdBgBMEJhbGFuY2VPZjxUPgABBPRBIHN3YXAgb2YgdGhlIHJlZnVuZCBpbiBuYXRpdmUgY3VycmVuY3kgYmFjayB0byBhc3NldCBmYWlsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0lBAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMIAQh1OAABIGludGVyaW9ymAEkSnVuY3Rpb25zAACYECxzdGFnaW5nX3hjbQh2NCRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAJwBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAwAFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBADEAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAMgBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAzAFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BADQAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEANQBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQA2AFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAJwAAAMBAAAAoACgECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAKQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuoAURPcHRpb248TmV0d29ya0lkPgABCGlkBAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrqAFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleCwBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrqAFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXmwASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQACAEIdTgABAAwR2VuZXJhbEluZGV4BAC0ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgIAQh1OAABEGRhdGEEASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWS4ARhCb2R5SWQAARBwYXJ0vAEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBACsASROZXR3b3JrSWQACQAApAAABhAAqAQYT3B0aW9uBARUAawBCBBOb25lAAAAEFNvbWUEAKwAAAEAAKwQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAQBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcjABDHU2NAABKGJsb2NrX2hhc2gEASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWQsAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAACwAAADFAAAAAgAtAAABhgAuBAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAEgBHFt1ODsgNF0AAQAUSW5kZXgEAKQBDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAvBAMeGNtCHYzIGp1bmN0aW9uIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudKQBDHUzMgABACBGcmFjdGlvbggBDG5vbaQBDHUzMgABFGRlbm9tpAEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9tpAEMdTMyAAEUZGVub22kAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9tpAEMdTMyAAEUZGVub22kAQx1MzIABAAAwAAAAwIAAACgAMQAAAMDAAAAoADIAAADBAAAAKAAzAAAAwUAAACgANAAAAMGAAAAoADUAAADBwAAAKAA2AAAAwgAAACgANwMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEV2ZW50BARUAAEoQE5ld0ludnVsbmVyYWJsZXMEATRpbnZ1bG5lcmFibGVz4AFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAABMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAABMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzEAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudBgBMEJhbGFuY2VPZjxUPgAEBGxUaGUgY2FuZGlkYWN5IGJvbmQgd2FzIHNldC44Q2FuZGlkYXRlQWRkZWQIAShhY2NvdW50X2lkAAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdBgBMEJhbGFuY2VPZjxUPgAFBFxBIG5ldyBjYW5kaWRhdGUgam9pbmVkLlBDYW5kaWRhdGVCb25kVXBkYXRlZAgBKGFjY291bnRfaWQAATBUOjpBY2NvdW50SWQAARxkZXBvc2l0GAEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQAATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkAAEwVDo6QWNjb3VudElkAAEMbmV3AAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdBgBMEJhbGFuY2VPZjxUPgAIBPRBbiBhY2NvdW50IHdhcyByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgYnkgYW5vdGhlciBvbmUuaEludmFsaWRJbnZ1bG5lcmFibGVTa2lwcGVkBAEoYWNjb3VudF9pZAABMFQ6OkFjY291bnRJZAAJCFUBQW4gYWNjb3VudCB3YXMgdW5hYmxlIHRvIGJlIGFkZGVkIHRvIHRoZSBJbnZ1bG5lcmFibGVzIGJlY2F1c2UgdGhleSBkaWQgbm90IGhhdmUga2V5c8hyZWdpc3RlcmVkLiBPdGhlciBJbnZ1bG5lcmFibGVzIG1heSBoYXZlIGJlZW4gc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOAAAAIAAOQMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFdmVudAABBChOZXdTZXNzaW9uBAE0c2Vzc2lvbl9pbmRleBABMFNlc3Npb25JbmRleAAACDkBTmV3IHNlc3Npb24gaGFzIGhhcHBlbmVkLiBOb3RlIHRoYXQgdGhlIGFyZ3VtZW50IGlzIHRoZSBzZXNzaW9uIGluZGV4LCBub3QgdGhlnGJsb2NrIG51bWJlciBhcyB0aGUgdHlwZSBtaWdodCBzdWdnZXN0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOgMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEEPFhjbXBNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAQBHFhjbUhhc2gAAATAQW4gSFJNUCBtZXNzYWdlIHdhcyBzZW50IHRvIGEgc2libGluZyBwYXJhY2hhaW4uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV07AwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAWAkQXR0ZW1wdGVkBAEcb3V0Y29tZfABUHhjbTo6bGF0ZXN0OjpPdXRjb21lAAAEqEV4ZWN1dGlvbiBvZiBhbiBYQ00gbWVzc2FnZSB3YXMgYXR0ZW1wdGVkLhBTZW50EAEYb3JpZ2lulAEgTG9jYXRpb24AASxkZXN0aW5hdGlvbpQBIExvY2F0aW9uAAEcbWVzc2FnZfgBHFhjbTwoKT4AAShtZXNzYWdlX2lkBAEcWGNtSGFzaAABBFxBIFhDTSBtZXNzYWdlIHdhcyBzZW50LkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW6UASBMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAACDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQwARxRdWVyeUlkAAEgcmVzcG9uc2UlAQEgUmVzcG9uc2UAAwhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAQIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAE0YWN0dWFsX3dlaWdodCgBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQoARhXZWlnaHQABQxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQwARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4CAEIdTgAAShjYWxsX2luZGV4CAEIdTgABghVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZDABHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgIAQh1OAABKGNhbGxfaW5kZXgIAQh1OAAHDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW6UASBMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAABRGV4cGVjdGVkX2xvY2F0aW9uSQEBQE9wdGlvbjxMb2NhdGlvbj4ACAxZAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgb3JpZ2luIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzVQFub3QgbWF0Y2ggdGhhdCBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlxJbnZhbGlkUmVzcG9uZGVyVmVyc2lvbggBGG9yaWdpbpQBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkAAkcUQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIG9yaWdpbiBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuNFJlc3BvbnNlVGFrZW4EASBxdWVyeV9pZDABHFF1ZXJ5SWQACgTIUmVjZWl2ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVhZCBhbmQgcmVtb3ZlZC40QXNzZXRzVHJhcHBlZAwBEGhhc2g0ARBIMjU2AAEYb3JpZ2lulAEgTG9jYXRpb24AARhhc3NldHNpAQE8VmVyc2lvbmVkQXNzZXRzAAsEuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb26UASBMb2NhdGlvbgABGHJlc3VsdBABKFhjbVZlcnNpb24AARBjb3N0BQEBGEFzc2V0cwABKG1lc3NhZ2VfaWQEARxYY21IYXNoAAwMJQFBbiBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIG1lc3NhZ2UgaGFzIGJlZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnQuAOBUaGUgY29zdCBvZiBzZW5kaW5nIGl0IChib3JuZSBieSB0aGUgY2hhaW4pIGlzIGluY2x1ZGVkLlxTdXBwb3J0ZWRWZXJzaW9uQ2hhbmdlZAgBIGxvY2F0aW9ulAEgTG9jYXRpb24AARx2ZXJzaW9uEAEoWGNtVmVyc2lvbgANCDkBVGhlIHN1cHBvcnRlZCB2ZXJzaW9uIG9mIGEgbG9jYXRpb24gaGFzIGJlZW4gY2hhbmdlZC4gVGhpcyBtaWdodCBiZSB0aHJvdWdoIGFuwGF1dG9tYXRpYyBub3RpZmljYXRpb24gb3IgYSBtYW51YWwgaW50ZXJ2ZW50aW9uLlBOb3RpZnlUYXJnZXRTZW5kRmFpbAwBIGxvY2F0aW9ulAEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQAARRlcnJvcvQBIFhjbUVycm9yAA4IWQFBIGdpdmVuIGxvY2F0aW9uIHdoaWNoIGhhZCBhIHZlcnNpb24gY2hhbmdlIHN1YnNjcmlwdGlvbiB3YXMgZHJvcHBlZCBvd2luZyB0byBhbiBlcnJvcnxzZW5kaW5nIHRoZSBub3RpZmljYXRpb24gdG8gaXQuZE5vdGlmeVRhcmdldE1pZ3JhdGlvbkZhaWwIASBsb2NhdGlvbs0BAURWZXJzaW9uZWRMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAAPCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3K0bWlncmF0aW5nIHRoZSBsb2NhdGlvbiB0byBvdXIgbmV3IFhDTSBmb3JtYXQuVEludmFsaWRRdWVyaWVyVmVyc2lvbggBGG9yaWdpbpQBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkABAcVQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIGV4cGVjdGVkIHF1ZXJpZXIgbG9jYXRpb24gcGxhY2VkIGluTQFzdG9yYWdlIGJ5IHRoaXMgcnVudGltZSBwcmV2aW91c2x5IGNhbm5vdCBiZSBkZWNvZGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkLgBBAVRoaXMgaXMgdW5leHBlY3RlZCAoc2luY2UgYSBsb2NhdGlvbiBwbGFjZWQgaW4gc3RvcmFnZSBpbiBhIHByZXZpb3VzbHkgZXhlY3V0aW5nTQFydW50aW1lIHNob3VsZCBiZSByZWFkYWJsZSBwcmlvciB0byBxdWVyeSB0aW1lb3V0KSBhbmQgZGFuZ2Vyb3VzIHNpbmNlIHRoZSBwb3NzaWJseVkBdmFsaWQgcmVzcG9uc2Ugd2lsbCBiZSBkcm9wcGVkLiBNYW51YWwgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcHJvYmFibHkgZ29pbmcgdG8gYmUcbmVlZGVkLjhJbnZhbGlkUXVlcmllchABGG9yaWdpbpQBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcpQBIExvY2F0aW9uAAFQbWF5YmVfYWN0dWFsX3F1ZXJpZXJJAQFAT3B0aW9uPExvY2F0aW9uPgARDF0BRXhwZWN0ZWQgcXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYnV0IHRoZSBxdWVyaWVyIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZSBkb2VzUQFub3QgbWF0Y2ggdGhlIGV4cGVjdGVkLiBUaGUgcXVlcnkgcmVtYWlucyByZWdpc3RlcmVkIGZvciBhIGxhdGVyLCB2YWxpZCwgcmVzcG9uc2UgdG9sYmUgcmVjZWl2ZWQgYW5kIGFjdGVkIHVwb24uUFZlcnNpb25Ob3RpZnlTdGFydGVkDAEsZGVzdGluYXRpb26UASBMb2NhdGlvbgABEGNvc3QFAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAEghZAUEgcmVtb3RlIGhhcyByZXF1ZXN0ZWQgWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBmcm9tIHVzIGFuZCB3ZSBoYXZlIGhvbm9yZWQgaXQuHQFBIHZlcnNpb24gaW5mb3JtYXRpb24gbWVzc2FnZSBpcyBzZW50IHRvIHRoZW0gYW5kIGl0cyBjb3N0IGlzIGluY2x1ZGVkLlhWZXJzaW9uTm90aWZ5UmVxdWVzdGVkDAEsZGVzdGluYXRpb26UASBMb2NhdGlvbgABEGNvc3QFAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAEwQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb26UASBMb2NhdGlvbgABEGNvc3QFAQEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAFAglAVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc3RvcHMgc2VuZGluZyB1cyBYQ00gdmVyc2lvbiBjaGFuZ2U4bm90aWZpY2F0aW9ucy4gRmVlc1BhaWQIARhwYXlpbmeUASBMb2NhdGlvbgABEGZlZXMFAQEYQXNzZXRzABUEMQFGZWVzIHdlcmUgcGFpZCBmcm9tIGEgbG9jYXRpb24gZm9yIGFuIG9wZXJhdGlvbiAob2Z0ZW4gZm9yIHVzaW5nIGBTZW5kWGNtYCkuNEFzc2V0c0NsYWltZWQMARBoYXNoNAEQSDI1NgABGG9yaWdpbpQBIExvY2F0aW9uAAEYYXNzZXRzaQEBPFZlcnNpb25lZEFzc2V0cwAWBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbhABKFhjbVZlcnNpb24AFwSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV08BAsc3RhZ2luZ194Y20IdjQYdHJhaXRzHE91dGNvbWUAAQwgQ29tcGxldGUEARB1c2VkKAEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkKAEYV2VpZ2h0AAEUZXJyb3L0ARRFcnJvcgABABRFcnJvcgQBFGVycm9y9AEURXJyb3IAAgAA9BAMeGNtCHYzGHRyYWl0cxRFcnJvcgABoCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAwAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgBMVW5oYW5kbGVkWGNtVmVyc2lvbgAjAEhXZWlnaHRMaW1pdFJlYWNoZWQEACgBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAA+Awsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAPwBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAPwAAAIBAQABAQwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQABQEBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAAUBARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQABQEBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2UlAQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllckkBAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMFAQEYQXNzZXRzAAEsYmVuZWZpY2lhcnmUASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwUBARhBc3NldHMAARBkZXN0lAEgTG9jYXRpb24AAQx4Y234ARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRNAQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QoARhXZWlnaHQAARBjYWxsUQEBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcqQBDHUzMgABQG1heF9tZXNzYWdlX3NpemWkAQx1MzIAATBtYXhfY2FwYWNpdHmkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudKQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3KkAQx1MzIAARhzZW5kZXKkAQx1MzIAASRyZWNpcGllbnSkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAmAFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAVQEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1kBASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5lAEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c1kBASxBc3NldEZpbHRlcgABEGRlc3SUASBMb2NhdGlvbgABDHhjbfgBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVZAQEsQXNzZXRGaWx0ZXIAARB3YW50BQEBGEFzc2V0cwABHG1heGltYWwgARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzWQEBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZZQBIExvY2F0aW9uAAEMeGNt+AEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzWQEBLEFzc2V0RmlsdGVyAAEQZGVzdJQBIExvY2F0aW9uAAEMeGNt+AEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1UBAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1kBASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzDQEBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAD4ASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPgBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHMFAQEYQXNzZXRzAAEYdGlja2V0lAEgTG9jYXRpb24AGAAQVHJhcAQALAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZCwBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KAEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAAUBARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAAUBARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJAQFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAKQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABBAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvVQEBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4pAEMdTMyAAEQbmFtZTgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcqQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcqQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAVQEBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBACgASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya6wBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9umAFASW50ZXJpb3JMb2NhdGlvbgABDHhjbfgBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXQNAQEUQXNzZXQAASB1bmxvY2tlcpQBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQNAQEUQXNzZXQAARh0YXJnZXSUASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0DQEBFEFzc2V0AAEUb3duZXKUASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXQNAQEUQXNzZXQAARhsb2NrZXKUASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdyABEGJvb2wAKwAgU2V0VG9waWMEAAQBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAJQBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdGUBASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkBAUBPcHRpb248TG9jYXRpb24+AC8AAAUBECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQACQEBKFZlYzxBc3NldD4AAAkBAAACDQEADQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZBEBARxBc3NldElkAAEMZnVuFQEBLEZ1bmdpYmlsaXR5AAARARAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABACUASBMb2NhdGlvbgAAFQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBAC0ARB1MTI4AAAALE5vbkZ1bmdpYmxlBAAZAQE0QXNzZXRJbnN0YW5jZQABAAAZARAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEALQBEHUxMjgAAQAYQXJyYXk0BABIARxbdTg7IDRdAAIAGEFycmF5OAQAHQEBHFt1ODsgOF0AAwAcQXJyYXkxNgQAIQEBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAQBIFt1ODsgMzJdAAUAAB0BAAADCAAAAAgAIQEAAAMQAAAACAAlAQwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAAUBARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BAApAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAEAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EADEBAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAQQEBOE1heWJlRXJyb3JDb2RlAAUAACkBBBhPcHRpb24EBFQBLQEBCBBOb25lAAAAEFNvbWUEAC0BAAABAAAtAQAABAgQ9AAxAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATUBBFMAAAQAPQEBGFZlYzxUPgAANQEMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4pAEMdTMyAAEQbmFtZTkBAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1lOQEBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3KkAQx1MzIAARRtaW5vcqQBDHUzMgABFHBhdGNopAEMdTMyAAA5AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAD0BAAACNQEAQQEMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBABFAQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAEUBAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAABFAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAEkBBBhPcHRpb24EBFQBlAEIEE5vbmUAAAAQU29tZQQAlAAAAQAATQEMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAUQEMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkOAEcVmVjPHU4PgAAVQEMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbpQBIExvY2F0aW9uAAEgcXVlcnlfaWQsARxRdWVyeUlkAAEobWF4X3dlaWdodCgBGFdlaWdodAAAWQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAAFAQEYQXNzZXRzAAAAEFdpbGQEAF0BASRXaWxkQXNzZXQAAQAAXQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZBEBARxBc3NldElkAAEMZnVuYQEBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBACkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWQRAQEcQXNzZXRJZAABDGZ1bmEBATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudKQBDHUzMgADAABhARAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAAGUBDAx4Y20IdjMsV2VpZ2h0TGltaXQAAQgkVW5saW1pdGVkAAAAHExpbWl0ZWQEACgBGFdlaWdodAABAABpAQgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMgQAbQEBPHYyOjpNdWx0aUFzc2V0cwABAAhWMwQAoQEBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQABQEBKHY0OjpBc3NldHMABAAAbQEQDHhjbQh2MihtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEAHEBATxWZWM8TXVsdGlBc3NldD4AAHEBAAACdQEAdQEQDHhjbQh2MihtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlkeQEBHEFzc2V0SWQAAQxmdW6ZAQEsRnVuZ2liaWxpdHkAAHkBEAx4Y20IdjIobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBAB9AQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQAOAEcVmVjPHU4PgABAAB9ARAMeGNtCHYyNG11bHRpbG9jYXRpb240TXVsdGlMb2NhdGlvbgAACAEccGFyZW50cwgBCHU4AAEgaW50ZXJpb3KBAQEkSnVuY3Rpb25zAACBARAMeGNtCHYyNG11bHRpbG9jYXRpb24kSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAIUBASBKdW5jdGlvbgABAAhYMggAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAgAIWDMMAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAwAIWDQQAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAEAAhYNRQAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24ABQAIWDYYAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24ABgAIWDccAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAHAAhYOCAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24AAIUBASBKdW5jdGlvbgAAhQEBIEp1bmN0aW9uAACFAQEgSnVuY3Rpb24ACAAAhQEQDHhjbQh2MiBqdW5jdGlvbiBKdW5jdGlvbgABJCRQYXJhY2hhaW4EAKQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmuJAQEkTmV0d29ya0lkAAEIaWQEASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmuJAQEkTmV0d29ya0lkAAEUaW5kZXgsAQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya4kBASROZXR3b3JrSWQAAQxrZXmwASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQACAEIdTgABAAwR2VuZXJhbEluZGV4BAC0ARB1MTI4AAUAKEdlbmVyYWxLZXkEAI0BAYBXZWFrQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWSRAQEYQm9keUlkAAEQcGFydJUBASBCb2R5UGFydAAIAACJAQwMeGNtCHYyJE5ldHdvcmtJZAABEAxBbnkAAAAUTmFtZWQEAI0BAYBXZWFrQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgABACBQb2xrYWRvdAACABhLdXNhbWEAAwAAjQEMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AACRAQwMeGNtCHYyGEJvZHlJZAABKBBVbml0AAAAFE5hbWVkBACNAQGAV2Vha0JvdW5kZWRWZWM8dTgsIENvbnN0VTMyPDMyPj4AAQAUSW5kZXgEAKQBDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAlQEMDHhjbQh2MiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnSkAQx1MzIAAQAgRnJhY3Rpb24IAQxub22kAQx1MzIAARRkZW5vbaQBDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbaQBDHUzMgABFGRlbm9tpAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbaQBDHUzMgABFGRlbm9tpAEMdTMyAAQAAJkBEAx4Y20IdjIobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAtAEQdTEyOAAAACxOb25GdW5naWJsZQQAnQEBNEFzc2V0SW5zdGFuY2UAAQAAnQEQDHhjbQh2MihtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARwkVW5kZWZpbmVkAAAAFEluZGV4BAC0ARB1MTI4AAEAGEFycmF5NAQASAEcW3U4OyA0XQACABhBcnJheTgEAB0BARxbdTg7IDhdAAMAHEFycmF5MTYEACEBASBbdTg7IDE2XQAEABxBcnJheTMyBAAEASBbdTg7IDMyXQAFABBCbG9iBAA4ARxWZWM8dTg+AAYAAKEBEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABAClAQE8VmVjPE11bHRpQXNzZXQ+AAClAQAAAqkBAKkBEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZK0BARxBc3NldElkAAEMZnVuxQEBLEZ1bmdpYmlsaXR5AACtARAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAsQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAQBIFt1ODsgMzJdAAEAALEBECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMIAQh1OAABIGludGVyaW9ytQEBJEp1bmN0aW9ucwAAtQEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEALkBASBKdW5jdGlvbgABAAhYMggAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AAgAIWDMMALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AAwAIWDQQALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAEAAhYNRQAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24ABQAIWDYYALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24ABgAIWDccALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAHAAhYOCAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24AALkBASBKdW5jdGlvbgAAuQEBIEp1bmN0aW9uAAC5AQEgSnVuY3Rpb24ACAAAuQEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAKQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmu9AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAQBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya70BAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4LAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmu9AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXmwASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQACAEIdTgABAAwR2VuZXJhbEluZGV4BAC0ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgIAQh1OAABEGRhdGEEASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWS4ARhCb2R5SWQAARBwYXJ0vAEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADBAQEkTmV0d29ya0lkAAkAAL0BBBhPcHRpb24EBFQBwQEBCBBOb25lAAAAEFNvbWUEAMEBAAABAADBARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAQBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcjABDHU2NAABKGJsb2NrX2hhc2gEASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWQsAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADFARAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEALQBEHUxMjgAAAAsTm9uRnVuZ2libGUEAMkBATRBc3NldEluc3RhbmNlAAEAAMkBEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAtAEQdTEyOAABABhBcnJheTQEAEgBHFt1ODsgNF0AAgAYQXJyYXk4BAAdAQEcW3U4OyA4XQADABxBcnJheTE2BAAhAQEgW3U4OyAxNl0ABAAcQXJyYXkzMgQABAEgW3U4OyAzMl0ABQAAzQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMgQAfQEBRHYyOjpNdWx0aUxvY2F0aW9uAAEACFYzBACxAQFEdjM6Ok11bHRpTG9jYXRpb24AAwAIVjQEAJQBMHY0OjpMb2NhdGlvbgAEAADRAQxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBRFdmVudAQEVAABDDRJbnZhbGlkRm9ybWF0BAAEASBbdTg7IDMyXQAACIBEb3dud2FyZCBtZXNzYWdlIGlzIGludmFsaWQgWENNLiBcWyBpZCBcXUhVbnN1cHBvcnRlZFZlcnNpb24EAAQBIFt1ODsgMzJdAAEIvERvd253YXJkIG1lc3NhZ2UgaXMgdW5zdXBwb3J0ZWQgdmVyc2lvbiBvZiBYQ00uIFxbIGlkIFxdQEV4ZWN1dGVkRG93bndhcmQIAAQBIFt1ODsgMzJdAADwARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTVAQxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWXZAQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVl2QEBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkBDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAAYARB1MTI4AADdAQxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0FEV2ZW50BARUAAEQQFByb2Nlc3NpbmdGYWlsZWQMAQhpZDQBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbuEBAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BFGVycm9y6QEBTFByb2Nlc3NNZXNzYWdlRXJyb3IQYFRoZSBlcnJvciB0aGF0IG9jY3VycmVkLgBJAVRoaXMgZXJyb3IgaXMgcHJldHR5IG9wYXF1ZS4gTW9yZSBmaW5lLWdyYWluZWQgZXJyb3JzIG5lZWQgdG8gYmUgZW1pdHRlZCBhcyBldmVudHNoYnkgdGhlIGBNZXNzYWdlUHJvY2Vzc29yYC4ABFUBTWVzc2FnZSBkaXNjYXJkZWQgZHVlIHRvIGFuIGVycm9yIGluIHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAgKHVzdWFsbHkgYSBmb3JtYXQgZXJyb3IpLiRQcm9jZXNzZWQQAQhpZDQBEEgyNTYElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbuEBAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BLHdlaWdodF91c2VkKAEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3MgARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkBAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbuEBAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXgQASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleBABHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbuEBAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4EAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV04QEIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQA5QEBGFBhcmFJZAACAADlAQx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAAQAQx1MzIAAOkBEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEACgBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAADtAQw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEV2ZW50AAEYQEJhdGNoSW50ZXJydXB0ZWQIARRpbmRleBABDHUzMgABFGVycm9yaAE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3JoATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTxAQE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPEBBBhSZXN1bHQIBFQB9QEERQFoAQgIT2sEAPUBAAAAAAxFcnIEAGgAAAEAAPUBAAAEAAD5AQw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABECxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwABMFQ6OkFjY291bnRJZAABIG11bHRpc2lnAAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoBAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwABMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludP0BAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcAATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gEASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nAAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50/QEBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwABMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAQBIENhbGxIYXNoAAEYcmVzdWx08QEBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcAATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnT9AQFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnAAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoBAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0BCDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgEQAAgBGGhlaWdodBABLEJsb2NrTnVtYmVyAAEUaW5kZXgQAQx1MzIAAAECDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEUNFByb3h5RXhlY3V0ZWQEARhyZXN1bHTxAQE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQQARBwdXJlAAEwVDo6QWNjb3VudElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZQUCATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRleAkCAQx1MTYAAQjcQSBwdXJlIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZCBieSBuZXcgcHJveHkgd2l0aCBnaXZlbpBkaXNhbWJpZ3VhdGlvbiBpbmRleCBhbmQgcHJveHkgdHlwZS4kQW5ub3VuY2VkDAEQcmVhbAABMFQ6OkFjY291bnRJZAABFHByb3h5AAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgACBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yAAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlAAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZQUCATBUOjpQcm94eVR5cGUAARRkZWxheRABREJsb2NrTnVtYmVyRm9yPFQ+AAMESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IAATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUAATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlBQIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4ABARQQSBwcm94eSB3YXMgcmVtb3ZlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFAghkYXNzZXRfaHViX3dlc3RlbmRfcnVudGltZSRQcm94eVR5cGUAARwMQW55AAAALE5vblRyYW5zZmVyAAEALENhbmNlbFByb3h5AAIAGEFzc2V0cwADAChBc3NldE93bmVyAAQAMEFzc2V0TWFuYWdlcgAFACBDb2xsYXRvcgAGAAAJAgAABQQADQIMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAFoHENyZWF0ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARxjcmVhdG9yAAEwVDo6QWNjb3VudElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABEGZyb20AATBUOjpBY2NvdW50SWQAAQh0bwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAARxiYWxhbmNlGAEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARhpc3N1ZXIAATBUOjpBY2NvdW50SWQAARRhZG1pbgABMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIAATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQQAQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmcQAQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkEAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZxABDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEYc291cmNlAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yAAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBECDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXZlbnQIBFQABEkAAWwcQ3JlYXRlZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yAAEwVDo6QWNjb3VudElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuGEZyb3plbggBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAYEXFNvbWUgYGl0ZW1gIHdhcyBmcm96ZW4uGFRoYXdlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAcEXFNvbWUgYGl0ZW1gIHdhcyB0aGF3ZWQuQENvbGxlY3Rpb25Gcm96ZW4EAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAgEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBmcm96ZW4uQENvbGxlY3Rpb25UaGF3ZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyB0aGF3ZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABMFQ6OkFjY291bnRJZAABFGFkbWluAAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgABMFQ6OkFjY291bnRJZAALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQEFwcHJvdmVkVHJhbnNmZXIQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5ESXRlbVN0YXR1c0NoYW5nZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAA4EEQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YRUCAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW4gARBib29sAA8EtE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gLmRDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAAQBLRNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYC4sTWV0YWRhdGFTZXQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABEGRhdGEVAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zGQIBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5IQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlJQIBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABQEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW0dAgFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXkhAgFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwABMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb24dAgFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AFgTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseRABDHUzMgAXBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlGAE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXIpAgFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRwcmljZRgBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgABMFQ6OkFjY291bnRJZAABFGJ1eWVyAAEwVDo6QWNjb3VudElkABoETEFuIGl0ZW0gd2FzIGJvdWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AABkCAAACEAAdAgQYT3B0aW9uBARUARABCBBOb25lAAAAEFNvbWUEABAAAAEAACECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAAJQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAApAgQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAC0CDCxwYWxsZXRfbmZ0cxhwYWxsZXQURXZlbnQIBFQABEkAAZgcQ3JlYXRlZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yAAEwVDo6QWNjb3VudElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuSEl0ZW1UcmFuc2ZlckxvY2tlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAYEiEFuIGBpdGVtYCBiZWNhbWUgbm9uLXRyYW5zZmVyYWJsZS5QSXRlbVRyYW5zZmVyVW5sb2NrZWQIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAAHBHhBbiBgaXRlbWAgYmVjYW1lIHRyYW5zZmVyYWJsZS5QSXRlbVByb3BlcnRpZXNMb2NrZWQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABNGxvY2tfbWV0YWRhdGEgARBib29sAAE8bG9ja19hdHRyaWJ1dGVzIAEQYm9vbAAIBKhgaXRlbWAgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyB3ZXJlIGxvY2tlZC5AQ29sbGVjdGlvbkxvY2tlZAQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGxvY2tlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgABMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyKQIBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEUYWRtaW4pAgFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxmcmVlemVyKQIBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AVHJhbnNmZXJBcHByb3ZlZBQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABIGRlYWRsaW5lHQIBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhMQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZGF0YTECAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXMZAgE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbR0CAURPcHRpb248VDo6SXRlbUlkPgABDGtleSUCAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZTECAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgABJG5hbWVzcGFjZTUCAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAVBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5JQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABJG5hbWVzcGFjZTUCAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAWBAUBQXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5sSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAAXBMxBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyBhZGRlZC50SXRlbUF0dHJpYnV0ZXNBcHByb3ZhbFJlbW92ZWQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkABgE1EEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIHJlbW92ZWQuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvAAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbh0CAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAZBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5EAEMdTMyABoEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24udENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkBAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAAbBKxNaW50IHNldHRpbmdzIGZvciBhIGNvbGxlY3Rpb24gaGFkIGNoYW5nZWQubE5leHRDb2xsZWN0aW9uSWRJbmNyZW1lbnRlZAQBHG5leHRfaWQdAgFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARRwcmljZRgBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyKQIBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AB0EfFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaXRlbS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAB4EjFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlGAE8SXRlbVByaWNlPFQsIEk+AAEYc2VsbGVyAAEwVDo6QWNjb3VudElkAAEUYnV5ZXIAATBUOjpBY2NvdW50SWQAHwRMQW4gaXRlbSB3YXMgYm91Z2h0LhxUaXBTZW50FAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARhzZW5kZXIAATBUOjpBY2NvdW50SWQAASByZWNlaXZlcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtEAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2U5AgGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lEAFEQmxvY2tOdW1iZXJGb3I8VD4AIQSIQW4gYGl0ZW1gIHN3YXAgaW50ZW50IHdhcyBjcmVhdGVkLjRTd2FwQ2FuY2VsbGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtEAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2U5AgGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lEAFEQmxvY2tOdW1iZXJGb3I8VD4AIgRcVGhlIHN3YXAgd2FzIGNhbmNlbGxlZC4sU3dhcENsYWltZWQgATxzZW50X2NvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAASRzZW50X2l0ZW0QASRUOjpJdGVtSWQAATxzZW50X2l0ZW1fb3duZXIAATBUOjpBY2NvdW50SWQAAUxyZWNlaXZlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAE0cmVjZWl2ZWRfaXRlbRABJFQ6Okl0ZW1JZAABTHJlY2VpdmVkX2l0ZW1fb3duZXIAATBUOjpBY2NvdW50SWQAARRwcmljZTkCAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmUQAURCbG9ja051bWJlckZvcjxUPgAjBGhUaGUgc3dhcCBoYXMgYmVlbiBjbGFpbWVkLlhQcmVTaWduZWRBdHRyaWJ1dGVzU2V0DAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASRuYW1lc3BhY2U1AgGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AJAT8TmV3IGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCBmb3IgYW4gYGl0ZW1gIG9mIHRoZSBgY29sbGVjdGlvbmAuSFBhbGxldEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRlRQIBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlMQIBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0MQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAA1AgwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBAAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAABJEFjY291bnRJZAADAAA5AgQYT3B0aW9uBARUAT0CAQgQTm9uZQAAABBTb21lBAA9AgAAAQAAPQIMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50ARgACAEYYW1vdW50GAEYQW1vdW50AAEkZGlyZWN0aW9uQQIBOFByaWNlRGlyZWN0aW9uAABBAgwscGFsbGV0X25mdHMUdHlwZXM4UHJpY2VEaXJlY3Rpb24AAQgQU2VuZAAAABxSZWNlaXZlAAEAAEUCDCxwYWxsZXRfbmZ0cxR0eXBlc0BQYWxsZXRBdHRyaWJ1dGVzBDBDb2xsZWN0aW9uSWQBEAEILFVzZWRUb0NsYWltBAAQATBDb2xsZWN0aW9uSWQAAABAVHJhbnNmZXJEaXNhYmxlZAABAABJAgw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAWgcQ3JlYXRlZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABHGNyZWF0b3IAATBUOjpBY2NvdW50SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEQZnJvbQABMFQ6OkFjY291bnRJZAABCHRvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABHGJhbGFuY2UYAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABGGlzc3VlcgABMFQ6OkFjY291bnRJZAABFGFkbWluAAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgABMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZBABDHUzMgABSGFjY291bnRzX3JlbWFpbmluZxABDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQQAQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nEAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARhzb3VyY2UAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlAAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWSUAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IAATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZJQBKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQIMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0FEV2ZW50BARUAAEIRE5mdEZyYWN0aW9uYWxpemVkFAE4bmZ0X2NvbGxlY3Rpb24QAUhUOjpOZnRDb2xsZWN0aW9uSWQAAQxuZnQQASBUOjpOZnRJZAABJGZyYWN0aW9ucxgBREFzc2V0QmFsYW5jZU9mPFQ+AAEUYXNzZXQQATBBc3NldElkT2Y8VD4AASxiZW5lZmljaWFyeQABMFQ6OkFjY291bnRJZAAABJxBbiBORlQgd2FzIHN1Y2Nlc3NmdWxseSBmcmFjdGlvbmFsaXplZC4oTmZ0VW5pZmllZBABOG5mdF9jb2xsZWN0aW9uEAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEMbmZ0EAEgVDo6TmZ0SWQAARRhc3NldBABMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5AAEwVDo6QWNjb3VudElkAAEEmEFuIE5GVCB3YXMgc3VjY2Vzc2Z1bGx5IHJldHVybmVkIGJhY2suBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0UQIMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAFoHENyZWF0ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARxjcmVhdG9yAAEwVDo6QWNjb3VudElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABEGZyb20AATBUOjpBY2NvdW50SWQAAQh0bwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAARxiYWxhbmNlGAEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARhpc3N1ZXIAATBUOjpBY2NvdW50SWQAARRhZG1pbgABMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIAATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARRvd25lcgABMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAQx3aG8AATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQQAQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmcQAQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkEAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZxABDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZBABKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZBABKFQ6OkFzc2V0SWQAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQQAShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEYc291cmNlAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEUb3duZXIAATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQABMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABFG93bmVyAAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUAATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yAAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFUCDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yAAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkWQIBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50AAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuEAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwABMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwABMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWRZAgEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZBgBKFQ6OkJhbGFuY2UE5FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgFAYW1vdW50Ml9wcm92aWRlZBgBKFQ6OkJhbGFuY2UE6FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BIGxwX3Rva2VuEAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgbWludGVkLgE8bHBfdG9rZW5fbWludGVkGAEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8AATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvAAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWRZAgEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDEYAShUOjpCYWxhbmNlBPRUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuARxhbW91bnQyGAEoVDo6QmFsYW5jZQT4VGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4BIGxwX3Rva2VuEAE4VDo6UG9vbEFzc2V0SWQEnFRoZSBpZCBvZiB0aGUgbHAgdG9rZW4gdGhhdCB3YXMgYnVybmVkLgE8bHBfdG9rZW5fYnVybmVkGAEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWVdAgEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8AATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwABMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW4YAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dBgBKFQ6OkJhbGFuY2UExFRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZWNlaXZlZC4BEHBhdGhhAgE4QmFsYW5jZVBhdGg8VD4I/FRoZSByb3V0ZSBvZiBhc3NldCBJRHMgd2l0aCBhbW91bnRzIHRoYXQgdGhlIHN3YXAgd2VudCB0aHJvdWdoLuxFLmcuIChBLCBhbW91bnRfaW4pIC0+IChEb3QsIGFtb3VudF9vdXQpIC0+IChCLCBhbW91bnRfb3V0KQMINQFBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLiBCb3RoIGBTd2FwRXhhY3RUb2tlbkZvclRva2VuYNhhbmQgYFN3YXBUb2tlbkZvckV4YWN0VG9rZW5gIHdpbGwgZ2VuZXJhdGUgdGhpcyBldmVudC5IU3dhcENyZWRpdEV4ZWN1dGVkDAEkYW1vdW50X2luGAEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXQYAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoYQIBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkEBLxBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLhxUb3VjaGVkCAEccG9vbF9pZFkCASRUOjpQb29sSWQETFRoZSBJRCBvZiB0aGUgcG9vbC4BDHdobwABMFQ6OkFjY291bnRJZASEVGhlIGFjY291bnQgaW5pdGlhdGluZyB0aGUgdG91Y2guBQQNAVBvb2wgaGFzIGJlZW4gdG91Y2hlZCBpbiBvcmRlciB0byBmdWxmaWxsIG9wZXJhdGlvbmFsIHJlcXVpcmVtZW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRZAgAABAiUlABdAgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAEAEMdTMyAABhAgAAAmUCAGUCAAAECJQYAGkCDFRwYWxsZXRfYXNzZXRzX2ZyZWV6ZXIYcGFsbGV0FEV2ZW50CARUAARJAAEIGEZyb3plbgwBDHdobwABMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvAAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0CDFRwYWxsZXRfYXNzZXRzX2ZyZWV6ZXIYcGFsbGV0FEV2ZW50CARUAARJAAEIGEZyb3plbgwBDHdobwABMFQ6OkFjY291bnRJZAABIGFzc2V0X2lklAEoVDo6QXNzZXRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvAAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWSUAShUOjpBc3NldElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHECDFRwYWxsZXRfYXNzZXRzX2ZyZWV6ZXIYcGFsbGV0FEV2ZW50CARUAARJAAEIGEZyb3plbgwBDHdobwABMFQ6OkFjY291bnRJZAABIGFzc2V0X2lkEAEoVDo6QXNzZXRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvAAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQQAShUOjpBc3NldElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQABAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHUCDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wEAEMdTMyAAEUY2hpbGQQAQx1MzIAARxjb21wdXRleQIBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AAQS0U29tZSBhY2NvdW50IGdvdCBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuVEF1dG9NaWdyYXRpb25GaW5pc2hlZAACBIRUaGUgYXV0byBtaWdyYXRpb24gdGFzayBmaW5pc2hlZC4YSGFsdGVkBAEUZXJyb3J9AgEgRXJyb3I8VD4AAwTsTWlncmF0aW9uIGdvdCBoYWx0ZWQgZHVlIHRvIGFuIGVycm9yIG9yIG1pc3MtY29uZmlndXJhdGlvbi4EcElubmVyIGV2ZW50cyBvZiB0aGlzIHBhbGxldC55AgxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldEBNaWdyYXRpb25Db21wdXRlAAEIGFNpZ25lZAAAABBBdXRvAAEAAH0CDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEVycm9yBARUAAEYPE1heFNpZ25lZExpbWl0cwAABIBNYXggc2lnbmVkIGxpbWl0cyBub3QgcmVzcGVjdGVkLihLZXlUb29Mb25nAAEctEEga2V5IHdhcyBsb25nZXIgdGhhbiB0aGUgY29uZmlndXJlZCBtYXhpbXVtLgARAVRoaXMgbWVhbnMgdGhhdCB0aGUgbWlncmF0aW9uIGhhbHRlZCBhdCB0aGUgY3VycmVudCBbYFByb2dyZXNzYF0gYW5kAQFjYW4gYmUgcmVzdW1lZCB3aXRoIGEgbGFyZ2VyIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUuIQFSZXRyeWluZyB3aXRoIHRoZSBzYW1lIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUgd2lsbCBub3Qgd29yay5FAVRoZSB2YWx1ZSBzaG91bGQgb25seSBiZSBpbmNyZWFzZWQgdG8gYXZvaWQgYSBzdG9yYWdlIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnRseZBzdG9yZWQgW2BjcmF0ZTo6UHJvZ3Jlc3M6Okxhc3RLZXlgXS44Tm90RW5vdWdoRnVuZHMAAgSUc3VibWl0dGVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzLihCYWRXaXRuZXNzAAMEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuZFNpZ25lZE1pZ3JhdGlvbk5vdEFsbG93ZWQABAQlAVNpZ25lZCBtaWdyYXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSB0aGUgbWF4aW11bSBsaW1pdCBpcyBub3Qgc2V0IHlldC4wQmFkQ2hpbGRSb290AAUEYEJhZCBjaGlsZCByb290IHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6BAgxscGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fb3BzGHBhbGxldBRFdmVudAQEVAABBFBNaWdyYXRlZFRvTmV3QWNjb3VudAwBHHBvb2xfaWRZAgEkVDo6UG9vbElkBChQb29sJ3MgSUQuATRwcmlvcl9hY2NvdW50AAEwVDo6QWNjb3VudElkBGBQb29sJ3MgcHJpb3IgYWNjb3VudCBJRC4BLG5ld19hY2NvdW50AAEwVDo6QWNjb3VudElkBFhQb29sJ3MgbmV3IGFjY291bnQgSUQuAAT4SW5kaWNhdGVzIHRoYXQgYSBwb29sIGhhcyBiZWVuIG1pZ3JhdGVkIHRvIHRoZSBuZXcgYWNjb3VudCBJRC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSFAggwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAAQAQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAAIkCAAACNACNAgAAApECAJECAAAECBAQAJUCCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9upAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZZkCAWRzcF9ydW50aW1lOjpSdW50aW1lU3RyaW5nAACZAgAABQIAnQIIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaDQBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uIAEQYm9vbAAAoQIMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcms4ARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMwAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlOAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZTgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtc6UCATRWZWM8S2V5VmFsdWU+AAQEaFNldCBzb21lIGl0ZW1zIG9mIHN0b3JhZ2UuMGtpbGxfc3RvcmFnZQQBEGtleXOtAgEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXg4AQxLZXkAARxzdWJrZXlzEAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyazgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g0ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDQBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZTgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6lAgAAAqkCAKkCAAAECDg4AK0CAAACOACxAgwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2soARhXZWlnaHQAASRtYXhfYmxvY2soARhXZWlnaHQAASRwZXJfY2xhc3O1AgGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AAC1Agw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAbkCAAwBGG5vcm1hbLkCAQRUAAEsb3BlcmF0aW9uYWy5AgEEVAABJG1hbmRhdG9yebkCAQRUAAC5AgwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljKAEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY70CAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbL0CAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkvQIBOE9wdGlvbjxXZWlnaHQ+AAC9AgQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAMECDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAEAQxtYXjFAgFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AADFAgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUARAADAEYbm9ybWFsEAEEVAABLG9wZXJhdGlvbmFsEAEEVAABJG1hbmRhdG9yeRABBFQAAMkCCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZDABDHU2NAABFHdyaXRlMAEMdTY0AADNAggoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1lmQIBNFJ1bnRpbWVTdHJpbmcAASRpbXBsX25hbWWZAgE0UnVudGltZVN0cmluZwABRGF1dGhvcmluZ192ZXJzaW9uEAEMdTMyAAEwc3BlY192ZXJzaW9uEAEMdTMyAAEwaW1wbF92ZXJzaW9uEAEMdTMyAAEQYXBpc9ECARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbhABDHUzMgABNHN0YXRlX3ZlcnNpb24IAQh1OAAA0QIEDENvdwQEVAHVAgAEANUCAAAA1QIAAALZAgDZAgAABAgdARAA3QIMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASQ8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC5ETm90aGluZ0F1dGhvcml6ZWQABwRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACASUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV04QIAAALlAgDlAgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBNAAMATh1c2VkX2JhbmR3aWR0aOkCATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2j9AgEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsAQMBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AADpAgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudBABDHUzMgABPHVtcF90b3RhbF9ieXRlcxABDHUzMgABNGhybXBfb3V0Z29pbmftAgGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AAO0CBCBCVHJlZU1hcAgESwHlAQRWAfECAAQA9QIAAADxAgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnRESHJtcENoYW5uZWxVcGRhdGUAAAgBJG1zZ19jb3VudBABDHUzMgABLHRvdGFsX2J5dGVzEAEMdTMyAAD1AgAAAvkCAPkCAAAECOUB8QIA/QIEGE9wdGlvbgQEVAE0AQgQTm9uZQAAABBTb21lBAA0AAABAAABAwQYT3B0aW9uBARUAQUDAQgQTm9uZQAAABBTb21lBAAFAwAAAQAABQMMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjg4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAAAJAwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBNAAMATh1c2VkX2JhbmR3aWR0aOkCATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmsdAgGAT3B0aW9uPHJlbGF5X2NoYWluOjpCbG9ja051bWJlcj4AAWBjb25zdW1lZF9nb19haGVhZF9zaWduYWwBAwGMT3B0aW9uPHJlbGF5X2NoYWluOjpVcGdyYWRlR29BaGVhZD4AAA0DDExwb2xrYWRvdF9wcmltaXRpdmVzCHY4XFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhCARIATQETgEQABABLHBhcmVudF9oZWFkEQMBIEhlYWREYXRhAAFMcmVsYXlfcGFyZW50X251bWJlchABBE4AAWRyZWxheV9wYXJlbnRfc3RvcmFnZV9yb290NAEESAABMG1heF9wb3Zfc2l6ZRABDHUzMgAAEQMMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAOAEcVmVjPHU4PgAAFQMEGE9wdGlvbgQEVAEZAwEIEE5vbmUAAAAQU29tZQQAGQMAAAEAABkDDExwb2xrYWRvdF9wcmltaXRpdmVzCHY4SFVwZ3JhZGVSZXN0cmljdGlvbgABBBxQcmVzZW50AAAAAB0DDBxzcF90cmllNHN0b3JhZ2VfcHJvb2YwU3RvcmFnZVByb29mAAAEASh0cmllX25vZGVzIQMBREJUcmVlU2V0PFZlYzx1OD4+AAAhAwQgQlRyZWVTZXQEBFQBOAAEAK0CAAAAJQMMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkNAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHkpAwGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzLQMBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHMtAwGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAKQMMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudBABDHUzMgABOHJlbWFpbmluZ19zaXplEAEMdTMyAAAtAwAAAjEDADEDAAAECOUBNQMANQMMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjhMQWJyaWRnZWRIcm1wQ2hhbm5lbAAAGAEwbWF4X2NhcGFjaXR5EAEMdTMyAAE4bWF4X3RvdGFsX3NpemUQAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplEAEMdTMyAAEkbXNnX2NvdW50EAEMdTMyAAEodG90YWxfc2l6ZRABDHUzMgABIG1xY19oZWFk/QIBME9wdGlvbjxIYXNoPgAAOQMMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjhkQWJyaWRnZWRIb3N0Q29uZmlndXJhdGlvbgAAKAE0bWF4X2NvZGVfc2l6ZRABDHUzMgABSG1heF9oZWFkX2RhdGFfc2l6ZRABDHUzMgABWG1heF91cHdhcmRfcXVldWVfY291bnQQAQx1MzIAAVRtYXhfdXB3YXJkX3F1ZXVlX3NpemUQAQx1MzIAAVxtYXhfdXB3YXJkX21lc3NhZ2Vfc2l6ZRABDHUzMgABkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZRABDHUzMgABiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUQAQx1MzIAAWx2YWxpZGF0aW9uX3VwZ3JhZGVfY29vbGRvd24QASxCbG9ja051bWJlcgABYHZhbGlkYXRpb25fdXBncmFkZV9kZWxheRABLEJsb2NrTnVtYmVyAAFQYXN5bmNfYmFja2luZ19wYXJhbXM9AwFIQXN5bmNCYWNraW5nUGFyYW1zAAA9AxBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2ODRhc3luY19iYWNraW5nSEFzeW5jQmFja2luZ1BhcmFtcwAACAFMbWF4X2NhbmRpZGF0ZV9kZXB0aBABDHUzMgABUGFsbG93ZWRfYW5jZXN0cnlfbGVuEAEMdTMyAABBAwiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudERNZXNzYWdlUXVldWVDaGFpbgAABAA0ASRSZWxheUhhc2gAAEUDBCBCVHJlZU1hcAgESwHlAQRWAUEDAAQASQMAAABJAwAAAk0DAE0DAAAECOUBQQMAUQMAAAJVAwBVAwhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzTE91dGJvdW5kSHJtcE1lc3NhZ2UECElkAeUBAAgBJHJlY2lwaWVudOUBAQhJZAABEGRhdGE4AUxhbGxvYzo6dmVjOjpWZWM8dTg+AABZAwx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABCExzZXRfdmFsaWRhdGlvbl9kYXRhBAEQZGF0YV0DAVRQYXJhY2hhaW5JbmhlcmVudERhdGEAACSAU2V0IHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZGF0YS4AQQFUaGlzIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbohwaGFzZSBpZiB0aGUgY2FsbCB3YXMgbm90IGludm9rZWQuANBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgSW5oZXJlbnRgACEBQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBmdW5jdGlvbiB1cGdyYWRlcyB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGZ1bmN0aW9uhGlmIHRoZSBhcHByb3ByaWF0ZSB0aW1lIGhhcyBjb21lLmBzdWRvX3NlbmRfdXB3YXJkX21lc3NhZ2UEARxtZXNzYWdlOAE0VXB3YXJkTWVzc2FnZQABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5dAwiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudFRQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YQ0DAVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQABRHJlbGF5X2NoYWluX3N0YXRlHQMBVHNwX3RyaWU6OlN0b3JhZ2VQcm9vZgABRGRvd253YXJkX21lc3NhZ2VzYQMBbFZlYzxJbmJvdW5kRG93bndhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNpAwGkQlRyZWVNYXA8UGFyYUlkLCBWZWM8SW5ib3VuZEhybXBNZXNzYWdlPj4AAGEDAAACZQMAZQMIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc1hJbmJvdW5kRG93bndhcmRNZXNzYWdlBCxCbG9ja051bWJlcgEQAAgBHHNlbnRfYXQQASxCbG9ja051bWJlcgABDG1zZzgBPERvd253YXJkTWVzc2FnZQAAaQMEIEJUcmVlTWFwCARLAeUBBFYBbQMABAB1AwAAAG0DAAACcQMAcQMIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyARAACAEcc2VudF9hdBABLEJsb2NrTnVtYmVyAAEQZGF0YTgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAHUDAAACeQMAeQMAAAQI5QFtAwB9Awx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASBMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLkROb3RoaW5nQXV0aG9yaXplZAAGBJBObyBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAcEvFRoZSBnaXZlbiBjb2RlIHVwZ3JhZGUgaGFzIG5vdCBiZWVuIGF1dGhvcml6ZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoEDDEBwYWxsZXRfdGltZXN0YW1wGHBhbGxldBBDYWxsBARUAAEEDHNldAQBDG5vdywBJFQ6Ok1vbWVudAAATFRTZXQgdGhlIGN1cnJlbnQgdGltZS4AVQFUaGlzIGNhbGwgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9u1HBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEEBVGhlIHRpbWVzdGFtcCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBvbmUgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnloW2BDb25maWc6Ok1pbmltdW1QZXJpb2RgXS4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUQFUaGlzIGRpc3BhdGNoIGNsYXNzIGlzIF9NYW5kYXRvcnlfIHRvIGVuc3VyZSBpdCBnZXRzIGV4ZWN1dGVkIGluIHRoZSBibG9jay4gQmUgYXdhcmVRAXRoYXQgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBjYWxsIGNvdWxkIHJlc3VsdCBleGhhdXN0aW5nIHRoZSByZXNvdXJjZXMgaW4gYYRibG9jayB0byBleGVjdXRlIGFueSBvdGhlciBjYWxscy4ANCMjIENvbXBsZXhpdHkxAS0gYE8oMSlgIChOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mIGBPblRpbWVzdGFtcFNldGAgbXVzdCBhbHNvIGJlIGBPKDEpYClVAS0gMSBzdG9yYWdlIHJlYWQgYW5kIDEgc3RvcmFnZSBtdXRhdGlvbiAoY29kZWMgYE8oMSlgIGJlY2F1c2Ugb2YgYERpZFVwZGF0ZTo6dGFrZWAgaW5AICBgb25fZmluYWxpemVgKdQtIDEgZXZlbnQgaGFuZGxlciBgb25fdGltZXN0YW1wX3NldGAuIE11c3QgYmUgYE8oMSlgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FAwxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6JAwxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAY0DBFMAAAQAlQMBGFZlYzxUPgAAjQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQEYAAwBCGlkHQEBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50GAEcQmFsYW5jZQABHHJlYXNvbnORAwEcUmVhc29ucwAAkQMMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAACVAwAAAo0DAJkDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQMEUwAABAChAwEYVmVjPFQ+AACdAww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgEdARxCYWxhbmNlARgACAEIaWQdAQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnQYARxCYWxhbmNlAAChAwAAAp0DAKUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBqQMEUwAABAC5AwEYVmVjPFQ+AACpAxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAa0DHEJhbGFuY2UBGAAIAQhpZK0DAQhJZAABGGFtb3VudBgBHEJhbGFuY2UAAK0DCGRhc3NldF9odWJfd2VzdGVuZF9ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEIUE5mdEZyYWN0aW9uYWxpemF0aW9uBACxAwGgcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbjo6SG9sZFJlYXNvbgA2AEhTdGF0ZVRyaWVNaWdyYXRpb24EALUDAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgAAsQMMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ4RnJhY3Rpb25hbGl6ZWQAAAAAtQMMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAAuQMAAAKpAwC9AwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcEDBFMAAAQAxQMBGFZlYzxUPgAAwQMUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAH1ARxCYWxhbmNlARgACAEIaWT1AQEISWQAARhhbW91bnQYARxCYWxhbmNlAADFAwAAAsEDAMkDDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWW0AShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVltAEoVDo6QmFsYW5jZQACCGEBRXhhY3RseSBhcyBgdHJhbnNmZXJfYWxsb3dfZGVhdGhgLCBleGNlcHQgdGhlIG9yaWdpbiBtdXN0IGJlIHJvb3QgYW5kIHRoZSBzb3VyY2UgYWNjb3VudERtYXkgYmUgc3BlY2lmaWVkLkx0cmFuc2Zlcl9rZWVwX2FsaXZlCAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVltAEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmUgARBib29sAAQ8BQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0YQFhbnkgbG9ja2VkLCByZXNlcnZlZCwgb3IgZXhpc3RlbnRpYWwgZGVwb3NpdHMgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhY2NvdW50IHRvIGJlIGtpbGxlZCAoZmFsc2UpLCBvclkBICB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCwgd2hpY2ggd2lsbCBndWFyYW50ZWUgdG+cICBrZWVwIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuPGZvcmNlX3VucmVzZXJ2ZQgBDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudBgBKFQ6OkJhbGFuY2UABQywVW5yZXNlcnZlIHNvbWUgYmFsYW5jZSBmcm9tIGEgdXNlciBieSBmb3JjZS4AbENhbiBvbmx5IGJlIGNhbGxlZCBieSBST09ULkB1cGdyYWRlX2FjY291bnRzBAEMd2hv4AFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVltAEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb27VAwFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhtAEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWW0AShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZSABEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuzQMMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQAwQWNjb3VudEluZGV4AfUBARQISWQEAAABJEFjY291bnRJZAAAABRJbmRleAQA0QMBMEFjY291bnRJbmRleAABAAxSYXcEADgBHFZlYzx1OD4AAgAkQWRkcmVzczMyBAAEASBbdTg7IDMyXQADACRBZGRyZXNzMjAEALABIFt1ODsgMjBdAAQAANEDAAAG9QEA1QMMPHBhbGxldF9iYWxhbmNlcxR0eXBlc0xBZGp1c3RtZW50RGlyZWN0aW9uAAEIIEluY3JlYXNlAAAAIERlY3JlYXNlAAEAANkDDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dAwhocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAOEDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBAARTAAAEAOABGFZlYzxUPgAA5QMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHpAwRTAAAEAO0DARhWZWM8VD4AAOkDDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldDRDYW5kaWRhdGVJbmZvCCRBY2NvdW50SWQBABxCYWxhbmNlARgACAEMd2hvAAEkQWNjb3VudElkAAEcZGVwb3NpdBgBHEJhbGFuY2UAAO0DAAAC6QMA8QMMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXfgAURWZWM8VDo6QWNjb3VudElkPgAANDEBU2V0IHRoZSBsaXN0IG9mIGludnVsbmVyYWJsZSAoZml4ZWQpIGNvbGxhdG9ycy4gVGhlc2UgY29sbGF0b3JzIG11c3QgZG8gc29tZdBwcmVwYXJhdGlvbiwgbmFtZWx5IHRvIGhhdmUgcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuAFkBVGhlIGNhbGwgd2lsbCByZW1vdmUgYW55IGFjY291bnRzIHRoYXQgaGF2ZSBub3QgcmVnaXN0ZXJlZCBrZXlzIGZyb20gdGhlIHNldC4gVGhhdCBpcyxdAWl0IGlzIG5vbi1hdG9taWM7IHRoZSBjYWxsZXIgYWNjZXB0cyBhbGwgYEFjY291bnRJZGBzIHBhc3NlZCBpbiBgbmV3YCBfaW5kaXZpZHVhbGx5XyBhczEBYWNjZXB0YWJsZSBJbnZ1bG5lcmFibGVzLCBhbmQgaXMgbm90IHByb3Bvc2luZyBhIF9zZXRfIG9mIG5ldyBJbnZ1bG5lcmFibGVzLgBZAVRoaXMgY2FsbCBkb2VzIG5vdCBtYWludGFpbiBtdXR1YWwgZXhjbHVzaXZpdHkgb2YgYEludnVsbmVyYWJsZXNgIGFuZCBgQ2FuZGlkYXRlc2AuIEl0YQFpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBiYXRjaCBvZiBgYWRkX2ludnVsbmVyYWJsZWAgYW5kIGByZW1vdmVfaW52dWxuZXJhYmxlYCBpbnN0ZWFkLiBBUQFgYmF0Y2hfYWxsYCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuZm9yY2UgYXRvbWljaXR5LiBJZiBhbnkgY2FuZGlkYXRlcyBhcmUgaW5jbHVkZWQgaW5NAWBuZXdgLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIHdpdGggYHJlbW92ZV9pbnZ1bG5lcmFibGVfY2FuZGlkYXRlYCBhZnRlciBleGVjdXRpb24uAJRNdXN0IGJlIGNhbGxlZCBieSB0aGUgYFVwZGF0ZU9yaWdpbmAuWHNldF9kZXNpcmVkX2NhbmRpZGF0ZXMEAQxtYXgQAQx1MzIAARRVAVNldCB0aGUgaWRlYWwgbnVtYmVyIG9mIG5vbi1pbnZ1bG5lcmFibGUgY29sbGF0b3JzLiBJZiBsb3dlcmluZyB0aGlzIG51bWJlciwgdGhlbiB0aGVhAW51bWJlciBvZiBydW5uaW5nIGNvbGxhdG9ycyBjb3VsZCBiZSBoaWdoZXIgdGhhbiB0aGlzIGZpZ3VyZS4gQXNpZGUgZnJvbSB0aGF0IGVkZ2UgY2FzZSw1AXRoZXJlIHNob3VsZCBiZSBubyBvdGhlciB3YXkgdG8gaGF2ZSBtb3JlIGNhbmRpZGF0ZXMgdGhhbiB0aGUgZGVzaXJlZCBudW1iZXIuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuSHNldF9jYW5kaWRhY3lfYm9uZAQBEGJvbmQYATBCYWxhbmNlT2Y8VD4AAhx4U2V0IHRoZSBjYW5kaWRhY3kgYm9uZCBhbW91bnQuAFEBSWYgdGhlIGNhbmRpZGFjeSBib25kIGlzIGluY3JlYXNlZCBieSB0aGlzIGNhbGwsIGFsbCBjdXJyZW50IGNhbmRpZGF0ZXMgd2hpY2ggaGF2ZSBhTQFkZXBvc2l0IGxvd2VyIHRoYW4gdGhlIG5ldyBib25kIHdpbGwgYmUga2lja2VkIGZyb20gdGhlIGxpc3QgYW5kIGdldCB0aGVpciBkZXBvc2l0cxRiYWNrLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLlRyZWdpc3Rlcl9hc19jYW5kaWRhdGUAAxBBAVJlZ2lzdGVyIHRoaXMgYWNjb3VudCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gVGhlIGFjY291bnQgbXVzdCAoYSkgYWxyZWFkeSBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cyBhbmQgKGIpIGJlIGFibGUgdG8gcmVzZXJ2ZSB0aGUgYENhbmRpZGFjeUJvbmRgLgDcVGhpcyBjYWxsIGlzIG5vdCBhdmFpbGFibGUgdG8gYEludnVsbmVyYWJsZWAgY29sbGF0b3JzLjBsZWF2ZV9pbnRlbnQABBRVAURlcmVnaXN0ZXIgYG9yaWdpbmAgYXMgYSBjb2xsYXRvciBjYW5kaWRhdGUuIE5vdGUgdGhhdCB0aGUgY29sbGF0b3IgY2FuIG9ubHkgbGVhdmUgb24NAXNlc3Npb24gY2hhbmdlLiBUaGUgYENhbmRpZGFjeUJvbmRgIHdpbGwgYmUgdW5yZXNlcnZlZCBpbW1lZGlhdGVseS4AGQFUaGlzIGNhbGwgd2lsbCBmYWlsIGlmIHRoZSB0b3RhbCBudW1iZXIgb2YgY2FuZGlkYXRlcyB3b3VsZCBkcm9wIGJlbG93XGBNaW5FbGlnaWJsZUNvbGxhdG9yc2AuQGFkZF9pbnZ1bG5lcmFibGUEAQx3aG8AATBUOjpBY2NvdW50SWQABRBFAUFkZCBhIG5ldyBhY2NvdW50IGB3aG9gIHRvIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGB3aG9gIG11c3QgaGF2ZR0BcmVnaXN0ZXJlZCBzZXNzaW9uIGtleXMuIElmIGB3aG9gIGlzIGEgY2FuZGlkYXRlLCB0aGV5IHdpbGwgYmUgcmVtb3ZlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC5McmVtb3ZlX2ludnVsbmVyYWJsZQQBDHdobwABMFQ6OkFjY291bnRJZAAGEGEBUmVtb3ZlIGFuIGFjY291bnQgYHdob2AgZnJvbSB0aGUgbGlzdCBvZiBgSW52dWxuZXJhYmxlc2AgY29sbGF0b3JzLiBgSW52dWxuZXJhYmxlc2AgbXVzdChiZSBzb3J0ZWQuANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuLHVwZGF0ZV9ib25kBAEsbmV3X2RlcG9zaXQYATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXQYATBCYWxhbmNlT2Y8VD4AARh0YXJnZXQAATBUOjpBY2NvdW50SWQACBxNAVRoZSBjYWxsZXIgYG9yaWdpbmAgcmVwbGFjZXMgYSBjYW5kaWRhdGUgYHRhcmdldGAgaW4gdGhlIGNvbGxhdG9yIGNhbmRpZGF0ZSBsaXN0IGJ5VQFyZXNlcnZpbmcgYGRlcG9zaXRgLiBUaGUgYW1vdW50IGBkZXBvc2l0YCByZXNlcnZlZCBieSB0aGUgY2FsbGVyIG11c3QgYmUgZ3JlYXRlciB0aGFu4HRoZSBleGlzdGluZyBib25kIG9mIHRoZSB0YXJnZXQgaXQgaXMgdHJ5aW5nIHRvIHJlcGxhY2UuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiB0aGUgY2FsbGVyIGlzIGFscmVhZHkgYSBjb2xsYXRvciBjYW5kaWRhdGUgb3IgaW52dWxuZXJhYmxlLCB0aGVVAWNhbGxlciBkb2VzIG5vdCBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLCB0aGUgdGFyZ2V0IGlzIG5vdCBhIGNvbGxhdG9yIGNhbmRpZGF0ZSy8YW5kL29yIHRoZSBgZGVwb3NpdGAgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu9QMMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu+QMAAAL9AwD9AwAABAgAAQQAAQQIZGFzc2V0X2h1Yl93ZXN0ZW5kX3J1bnRpbWUsU2Vzc2lvbktleXMAAAQBEGF1cmEFBAHEPEF1cmEgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAABQQQRHNwX2NvbnNlbnN1c19hdXJhHHNyMjU1MTksYXBwX3NyMjU1MTkYUHVibGljAAAEAAQBPHNyMjU1MTk6OlB1YmxpYwAACQQAAAQIDQQ4AA0EDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQASAEcW3U4OyA0XQAAEQQMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5cwEEARxUOjpLZXlzAAEUcHJvb2Y4ARxWZWM8dTg+AAAk5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLh0BQWxsb3dzIGFuIGFjY291bnQgdG8gc2V0IGl0cyBzZXNzaW9uIGtleSBwcmlvciB0byBiZWNvbWluZyBhIHZhbGlkYXRvci7AVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuADQjIyBDb21wbGV4aXR5WQEtIGBPKDEpYC4gQWN0dWFsIGNvc3QgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIGxlbmd0aCBvZiBgVDo6S2V5czo6a2V5X2lkcygpYCB3aGljaCBpcyAgIGZpeGVkLihwdXJnZV9rZXlzAAEwyFJlbW92ZXMgYW55IHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIuAMBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBhY2NvdW50IG11c3QgYmUgZWl0aGVyIGJlXQFjb252ZXJ0aWJsZSB0byBhIHZhbGlkYXRvciBJRCB1c2luZyB0aGUgY2hhaW4ncyB0eXBpY2FsIGFkZHJlc3Npbmcgc3lzdGVtICh0aGlzIHVzdWFsbHlRAW1lYW5zIGJlaW5nIGEgY29udHJvbGxlciBhY2NvdW50KSBvciBkaXJlY3RseSBjb252ZXJ0aWJsZSBpbnRvIGEgdmFsaWRhdG9yIElEICh3aGljaJR1c3VhbGx5IG1lYW5zIGJlaW5nIGEgc3Rhc2ggYWNjb3VudCkuADQjIyBDb21wbGV4aXR5PQEtIGBPKDEpYCBpbiBudW1iZXIgb2Yga2V5IHR5cGVzLiBBY3R1YWwgY29zdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbGVuZ3RoIG9mmCAgYFQ6OktleXM6OmtleV9pZHMoKWAgd2hpY2ggaXMgZml4ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUEDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQuGQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEFBARTAAAEAB0EARhWZWM8VD4AAB0EAAACBQQAIQQISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEADABDHU2NAAAJQQAAAQIIQQQACkEDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAHlAQRTAAAEAC0EASxCVHJlZVNldDxUPgAALQQEIEJUcmVlU2V0BARUAeUBAAQAMQQAAAAxBAAAAuUBADUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOQQEUwAABABBBAEYVmVjPFQ+AAA5BAhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAUASRyZWNpcGllbnTlAQEYUGFyYUlkAAEUc3RhdGU9BAE0T3V0Ym91bmRTdGF0ZQABNHNpZ25hbHNfZXhpc3QgARBib29sAAEsZmlyc3RfaW5kZXgJAgEMdTE2AAEobGFzdF9pbmRleAkCAQx1MTYAAD0ECGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlNE91dGJvdW5kU3RhdGUAAQgIT2sAAAAkU3VzcGVuZGVkAAEAAEEEAAACOQQARQQAAAQI5QEJAgBJBAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAE0ECGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlPFF1ZXVlQ29uZmlnRGF0YQAADAFEc3VzcGVuZF90aHJlc2hvbGQQAQx1MzIAAThkcm9wX3RocmVzaG9sZBABDHUzMgABQHJlc3VtZV90aHJlc2hvbGQQAQx1MzIAAFEEDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABDEkBU3VzcGVuZHMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZSwgcmVnYXJkbGVzcyBvZiB0aGUgc2VuZGVyJ3Mgb3JpZ2luLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5QcmVzdW1lX3hjbV9leGVjdXRpb24AAhS4UmVzdW1lcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLgA9AU5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0dXMgb2YgdGhlIGluL291dCBib3VuZCBjaGFubmVscy4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAQBDG5ldxABDHUzMgADFEkBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGZvciB0aGUgb3RoZXIgc2lkZSB0byBiZXh0b2xkIHRvIHN1c3BlbmQgdGhlaXIgc2VuZGluZy4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu6C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuc3VzcGVuZF92YWx1ZWBUdXBkYXRlX2Ryb3BfdGhyZXNob2xkBAEMbmV3EAEMdTMyAAQURQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgYWZ0ZXIgd2hpY2ggd2UgZHJvcCBhbnmIZnVydGhlciBtZXNzYWdlcyBmcm9tIHRoZSBjaGFubmVsLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7sLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5kcm9wX3RocmVzaG9sZGBcdXBkYXRlX3Jlc3VtZV90aHJlc2hvbGQEAQxuZXcQAQx1MzIABRRNAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCB0aGUgcXVldWUgbXVzdCBiZSByZWR1Y2VkIHRvIGJlZm9yZSBpdCBzaWduYWxzAQF0aGF0IG1lc3NhZ2Ugc2VuZGluZyBtYXkgcmVjb21tZW5jZSBhZnRlciBpdCBoYXMgYmVlbiBzdXNwZW5kZWQuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLvQtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnJlc3VtZV90aHJlc2hvbGRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUEDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABFDhCYWRRdWV1ZUNvbmZpZwAABBEBU2V0dGluZyB0aGUgcXVldWUgY29uZmlnIGZhaWxlZCBzaW5jZSBvbmUgb2YgaXRzIHZhbHVlcyB3YXMgaW52YWxpZC5AQWxyZWFkeVN1c3BlbmRlZAABBIxUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgc3VzcGVuZGVkLjhBbHJlYWR5UmVzdW1lZAACBIRUaGUgZXhlY3V0aW9uIGlzIGFscmVhZHkgcmVzdW1lZC50VG9vTWFueUFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMAAwSwVGhlcmUgYXJlIHRvbyBtYW55IGFjdGl2ZSBvdXRib3VuZCBjaGFubmVscy4YVG9vQmlnAAQEXFRoZSBtZXNzYWdlIGlzIHRvbyBiaWcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlkEDChwYWxsZXRfeGNtGHBhbGxldCxRdWVyeVN0YXR1cwQsQmxvY2tOdW1iZXIBEAEMHFBlbmRpbmcQASRyZXNwb25kZXLNAQFEVmVyc2lvbmVkTG9jYXRpb24AAUxtYXliZV9tYXRjaF9xdWVyaWVyXQQBZE9wdGlvbjxWZXJzaW9uZWRMb2NhdGlvbj4AATBtYXliZV9ub3RpZnlhBAFAT3B0aW9uPCh1OCwgdTgpPgABHHRpbWVvdXQQASxCbG9ja051bWJlcgAAADxWZXJzaW9uTm90aWZpZXIIARhvcmlnaW7NAQFEVmVyc2lvbmVkTG9jYXRpb24AASRpc19hY3RpdmUgARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2VpBAFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdBABLEJsb2NrTnVtYmVyAAIAAF0EBBhPcHRpb24EBFQBzQEBCBBOb25lAAAAEFNvbWUEAM0BAAABAABhBAQYT3B0aW9uBARUAWUEAQgQTm9uZQAAABBTb21lBABlBAAAAQAAZQQAAAQICAgAaQQIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMgQAbQQBMHYyOjpSZXNwb25zZQACAAhWMwQAfQQBMHYzOjpSZXNwb25zZQADAAhWNAQAJQEBMHY0OjpSZXNwb25zZQAEAABtBAwMeGNtCHYyIFJlc3BvbnNlAAEQEE51bGwAAAAYQXNzZXRzBABtAQEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BABxBAFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAEAE4c3VwZXI6OlZlcnNpb24AAwAAcQQEGE9wdGlvbgQEVAF1BAEIEE5vbmUAAAAQU29tZQQAdQQAAAEAAHUEAAAECBB5BAB5BBAMeGNtCHYyGHRyYWl0cxRFcnJvcgABaCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMARE11bHRpTG9jYXRpb25GdWxsAAQAaE11bHRpTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAMAEMdTY0ABUATFVuaGFuZGxlZFhjbVZlcnNpb24AFgBIV2VpZ2h0TGltaXRSZWFjaGVkBAAwARhXZWlnaHQAFwAcQmFycmllcgAYAExXZWlnaHROb3RDb21wdXRhYmxlABkAAH0EDAx4Y20IdjMgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAKEBASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEACkBAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAAQAThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAgQQBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BABBAQE4TWF5YmVFcnJvckNvZGUABQAAgQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGFBARTAAAEAI0EARhWZWM8VD4AAIUEDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXikAQx1MzIAARBuYW1liQQBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWWJBAGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcqQBDHUzMgABFG1pbm9ypAEMdTMyAAEUcGF0Y2ikAQx1MzIAAIkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAAjQQAAAKFBACRBAAABAgQzQEAlQQAAAQMMCgQAJkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQQEUwAABAChBAEYVmVjPFQ+AACdBAAABAjNARAAoQQAAAKdBAClBAwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBACpBAE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAKkEBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAArQQAAAQMEACxBACxBAgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQgIVjMEAK0BASx2Mzo6QXNzZXRJZAADAAhWNAQAEQEBLHY0OjpBc3NldElkAAQAALUEDChwYWxsZXRfeGNtGHBhbGxldGhSZW1vdGVMb2NrZWRGdW5naWJsZVJlY29yZAhIQ29uc3VtZXJJZGVudGlmaWVyAfUBME1heENvbnN1bWVycwAAEAEYYW1vdW50GAEQdTEyOAABFG93bmVyzQEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2VyzQEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJzuQQB0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AALkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBvQQEUwAABADBBAEYVmVjPFQ+AAC9BAAABAj1ARgAwQQAAAK9BADFBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAckEBFMAAAQAzQQBGFZlYzxUPgAAyQQAAAQIGM0BAM0EAAACyQQA0QQMKHBhbGxldF94Y20YcGFsbGV0EENhbGwEBFQAATgQc2VuZAgBEGRlc3TNAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABHG1lc3NhZ2XVBAFUQm94PFZlcnNpb25lZFhjbTwoKT4+AAAAPHRlbGVwb3J0X2Fzc2V0cxABEGRlc3TNAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5zQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHNpAQFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbRABDHUzMgABSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AHQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuXHJlc2VydmVfdHJhbnNmZXJfYXNzZXRzEAEQZGVzdM0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnNAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c2kBAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtEAEMdTMyAAJ4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4APQEqKlRoaXMgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDogVXNlIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy4cZXhlY3V0ZQgBHG1lc3NhZ2UZBQG0Qm94PFZlcnNpb25lZFhjbTw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4+AAEobWF4X3dlaWdodCgBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9ulAE0Qm94PExvY2F0aW9uPgABHHZlcnNpb24QAShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbh0CAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uzQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbs0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0zQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyec0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzaQEBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAATB3ZWlnaHRfbGltaXRlAQEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0zQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyec0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzaQEBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAATB3ZWlnaHRfbGltaXRlAQEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkIAEQYm9vbAAKEPRTZXQgb3IgdW5zZXQgdGhlIGdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u0C0gYHN1c3BlbmRlZGA6IGB0cnVlYCB0byBzdXNwZW5kLCBgZmFsc2VgIHRvIHJlc3VtZS48dHJhbnNmZXJfYXNzZXRzFAEQZGVzdM0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnNAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c2kBAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtEAEMdTMyAAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0AAuEXQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCzQZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUsIG9yIHRocm91Z2ggdGVsZXBvcnRzLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZjUBaW5kZXggYGZlZV9hc3NldF9pdGVtYCAoaGVuY2UgcmVmZXJyZWQgdG8gYXMgYGZlZXNgKSwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3JBAWB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHQgaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhl3G9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AYQFgYXNzZXRzYCAoZXhjbHVkaW5nIGBmZWVzYCkgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBvdGhlcndpc2UgYmUgdGVsZXBvcnRhYmxlsHRvIGBkZXN0YCwgbm8gbGltaXRhdGlvbnMgaW1wb3NlZCBvbiBgZmVlc2AuTQEgLSBmb3IgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uIGNoYWluIGFuZE0BICAgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG9EICAgYGJlbmVmaWNpYXJ5YC5hASAtIGZvciBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0byBgZGVzdGAgY2hhaW5ZASAgIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmQgZGVwb3NpdCB0aGVtUCAgIHRvIGBiZW5lZmljaWFyeWAuXQEgLSBmb3IgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXNdASAgIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGAgdG8gbWludNQgICBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlEBIC0gZm9yIHRlbGVwb3J0czogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0byBtaW50L3RlbGVwb3J0sCAgIGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4tAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgWDIoUGFyZW50LFUBICBQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBYMShQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZGggIGZyb20gcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLjBjbGFpbV9hc3NldHMIARhhc3NldHNpAQFQQm94PFZlcnNpb25lZEFzc2V0cz4AASxiZW5lZmljaWFyec0BAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAwYVQFDbGFpbXMgYXNzZXRzIHRyYXBwZWQgb24gdGhpcyBwYWxsZXQgYmVjYXVzZSBvZiBsZWZ0b3ZlciBhc3NldHMgZHVyaW5nIFhDTSBleGVjdXRpb24uAKwtIGBvcmlnaW5gOiBBbnlvbmUgY2FuIGNhbGwgdGhpcyBleHRyaW5zaWMuXQEtIGBhc3NldHNgOiBUaGUgZXhhY3QgYXNzZXRzIHRoYXQgd2VyZSB0cmFwcGVkLiBVc2UgdGhlIHZlcnNpb24gdG8gc3BlY2lmeSB3aGF0IHZlcnNpb26Yd2FzIHRoZSBsYXRlc3Qgd2hlbiB0aGV5IHdlcmUgdHJhcHBlZC5FAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGxvY2F0aW9uL2FjY291bnQgd2hlcmUgdGhlIGNsYWltZWQgYXNzZXRzIHdpbGwgYmUgZGVwb3NpdGVkLox0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbhwBEGRlc3TNAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c2kBAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABUGFzc2V0c190cmFuc2Zlcl90eXBlRQUBREJveDxUcmFuc2ZlclR5cGU+AAE4cmVtb3RlX2ZlZXNfaWSxBAFUQm94PFZlcnNpb25lZEFzc2V0SWQ+AAFIZmVlc190cmFuc2Zlcl90eXBlRQUBREJveDxUcmFuc2ZlclR5cGU+AAFIY3VzdG9tX3hjbV9vbl9kZXN01QQBVEJveDxWZXJzaW9uZWRYY208KCk+PgABMHdlaWdodF9saW1pdGUBASxXZWlnaHRMaW1pdAANwFUBVHJhbnNmZXIgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB1c2luZyBleHBsaWNpdCB0cmFuc2Zlcmh0eXBlcyBmb3IgYXNzZXRzIGFuZCBmZWVzLgBZAWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3IgbWF5IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuIENhbGxlciBtdXN07HByb3ZpZGUgdGhlIGBhc3NldHNfdHJhbnNmZXJfdHlwZWAgdG8gYmUgdXNlZCBmb3IgYGFzc2V0c2A6UQEgLSBgVHJhbnNmZXJUeXBlOjpMb2NhbFJlc2VydmVgOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6RGVzdGluYXRpb25SZXNlcnZlYDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6UmVtb3RlUmVzZXJ2ZShyZXNlcnZlKWA6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byBgcmVzZXJ2ZWBhASAgIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXJVASAgIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLiBUeXBpY2FsbHmUICAgdGhlIHJlbW90ZSBgcmVzZXJ2ZWAgaXMgQXNzZXQgSHViLkUBIC0gYFRyYW5zZmVyVHlwZTo6VGVsZXBvcnRgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRv6CAgIG1pbnQvdGVsZXBvcnQgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AVQFPbiB0aGUgZGVzdGluYXRpb24gY2hhaW4sIGFzIHdlbGwgYXMgYW55IGludGVybWVkaWFyeSBob3BzLCBgQnV5RXhlY3V0aW9uYCBpcyB1c2VkIHRvIQFidXkgZXhlY3V0aW9uIHVzaW5nIHRyYW5zZmVycmVkIGBhc3NldHNgIGlkZW50aWZpZWQgYnkgYHJlbW90ZV9mZWVzX2lkYC5ZAU1ha2Ugc3VyZSBlbm91Z2ggb2YgdGhlIHNwZWNpZmllZCBgcmVtb3RlX2ZlZXNfaWRgIGFzc2V0IGlzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBsaXN0YQFvZiBgYXNzZXRzYC4gYHJlbW90ZV9mZWVzX2lkYCBzaG91bGQgYmUgZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBFAWByZW1vdGVfZmVlc19pZGAgbWF5IHVzZSBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSB0aGFuIHJlc3Qgb2YgYGFzc2V0c2AgYW5kIGNhbiBiZZxzcGVjaWZpZWQgdGhyb3VnaCBgZmVlc190cmFuc2Zlcl90eXBlYC4AYQFUaGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB0cmFuc2ZlcnJlZCBhc3NldHMgb25jZSB0aGV5IHJlYWNoQQF0aGUgYGRlc3RgIGNoYWluLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgYGN1c3RvbV94Y21fb25fZGVzdGAgcGFyYW1ldGVyLCB3aGljaPxjb250YWlucyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUgb24gYGRlc3RgIGFzIGEgZmluYWwgc3RlcC58ICBUaGlzIGlzIHVzdWFsbHkgYXMgc2ltcGxlIGFzOlEBICBgWGNtKHZlYyFbRGVwb3NpdEFzc2V0IHsgYXNzZXRzOiBXaWxkKEFsbENvdW50ZWQoYXNzZXRzLmxlbigpKSksIGJlbmVmaWNpYXJ5IH1dKWAsMQEgIGJ1dCBjb3VsZCBiZSBzb21ldGhpbmcgbW9yZSBleG90aWMgbGlrZSBzZW5kaW5nIHRoZSBgYXNzZXRzYCBldmVuIGZ1cnRoZXIuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb209ASAgcmVsYXkgdG8gcGFyYWNoYWluLCBvciBgKHBhcmVudHM6IDIsIChHbG9iYWxDb25zZW5zdXMoLi4pLCAuLikpYCB0byBzZW5kIGZyb230ICBwYXJhY2hhaW4gYWNyb3NzIGEgYnJpZGdlIHRvIGFub3RoZXIgZWNvc3lzdGVtIGRlc3RpbmF0aW9uLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy49AS0gYGFzc2V0c190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgYXNzZXRzYC4hAS0gYHJlbW90ZV9mZWVzX2lkYDogT25lIG9mIHRoZSBpbmNsdWRlZCBgYXNzZXRzYCB0byBiZSB1c2VkIHRvIHBheSBmZWVzLkkBLSBgZmVlc190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgZmVlc2AgYXNzZXRzLlkBLSBgY3VzdG9tX3hjbV9vbl9kZXN0YDogVGhlIFhDTSB0byBiZSBleGVjdXRlZCBvbiBgZGVzdGAgY2hhaW4gYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGVZASAgdHJhbnNmZXIsIHdoaWNoIGFsc28gZGV0ZXJtaW5lcyB3aGF0IGhhcHBlbnMgdG8gdGhlIGFzc2V0cyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QQIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYyBADZBAFQdjI6OlhjbTxSdW50aW1lQ2FsbD4AAgAIVjMEAPkEAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQA+AFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAA2QQMDHhjbQh2MgxYY20ELFJ1bnRpbWVDYWxsAAAEAN0EAXRWZWM8SW5zdHJ1Y3Rpb248UnVudGltZUNhbGw+PgAA3QQAAALhBADhBAwMeGNtCHYyLEluc3RydWN0aW9uBCxSdW50aW1lQ2FsbAABcDRXaXRoZHJhd0Fzc2V0BABtAQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBABtAQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAbQEBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UMASBxdWVyeV9pZCwBHFF1ZXJ5SWQAASByZXNwb25zZW0EASBSZXNwb25zZQABKG1heF93ZWlnaHQsAQx1NjQAAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c20BASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5fQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHNtAQEsTXVsdGlBc3NldHMAARBkZXN0fQEBNE11bHRpTG9jYXRpb24AAQx4Y23ZBAEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl90eXBl5QQBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0LAEMdTY0AAEQY2FsbFEBAWhEb3VibGVFbmNvZGVkPFJ1bnRpbWVDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVypAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaQBDHUzMgABMG1heF9jYXBhY2l0eaQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50pAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqQBDHUzMgABGHNlbmRlcqQBDHUzMgABJHJlY2lwaWVudKQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACBAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yDAEgcXVlcnlfaWQsARxRdWVyeUlkAAEQZGVzdH0BATRNdWx0aUxvY2F0aW9uAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAAMADBEZXBvc2l0QXNzZXQMARhhc3NldHPpBAFATXVsdGlBc3NldEZpbHRlcgABKG1heF9hc3NldHOkAQx1MzIAASxiZW5lZmljaWFyeX0BATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQQARhhc3NldHPpBAFATXVsdGlBc3NldEZpbHRlcgABKG1heF9hc3NldHOkAQx1MzIAARBkZXN0fQEBNE11bHRpTG9jYXRpb24AAQx4Y23ZBAEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0CAEQZ2l2ZekEAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVjZWl2ZW0BASxNdWx0aUFzc2V0cwAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c+kEAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZX0BATRNdWx0aUxvY2F0aW9uAAEMeGNt2QQBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c+kEAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdH0BATRNdWx0aUxvY2F0aW9uAAEMeGNt2QQBHFhjbTwoKT4AEQAwUXVlcnlIb2xkaW5nEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEQZGVzdH0BATRNdWx0aUxvY2F0aW9uAAEYYXNzZXRz6QQBQE11bHRpQXNzZXRGaWx0ZXIAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0LAEMdTY0ABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXN1AQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdPUEASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA2QQBQFhjbTxSdW50aW1lQ2FsbD4AFQAsU2V0QXBwZW5kaXgEANkEAUBYY208UnVudGltZUNhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c20BASxNdWx0aUFzc2V0cwABGHRpY2tldH0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAA5QQMDHhjbQh2MihPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAA6QQQDHhjbQh2MihtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAG0BASxNdWx0aUFzc2V0cwAAABBXaWxkBADtBAE4V2lsZE11bHRpQXNzZXQAAQAA7QQQDHhjbQh2MihtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEIDEFsbAAAABRBbGxPZggBCGlkeQEBHEFzc2V0SWQAAQxmdW7xBAE8V2lsZEZ1bmdpYmlsaXR5AAEAAPEEEAx4Y20IdjIobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAA9QQMDHhjbQh2MixXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQALAEMdTY0AAEAAPkEDAx4Y20IdjMMWGNtBBBDYWxsAAAEAP0EAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAD9BAAAAgEFAAEFDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAoQEBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAoQEBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAKEBASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2V9BAEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllcgUFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c6EBASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5sQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHOhAQEsTXVsdGlBc3NldHMAARBkZXN0sQEBNE11bHRpTG9jYXRpb24AAQx4Y235BAEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kTQEBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KAEYV2VpZ2h0AAEQY2FsbFEBAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXKkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplpAEMdTMyAAEwbWF4X2NhcGFjaXR5pAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnSkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9ypAEMdTMyAAEYc2VuZGVypAEMdTMyAAEkcmVjaXBpZW50pAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EALUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAkFAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMNBQFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5sQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cw0FAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdLEBATRNdWx0aUxvY2F0aW9uAAEMeGNt+QQBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUNBQFATXVsdGlBc3NldEZpbHRlcgABEHdhbnShAQEsTXVsdGlBc3NldHMAARxtYXhpbWFsIAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cw0FAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZbEBATRNdWx0aUxvY2F0aW9uAAEMeGNt+QQBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cw0FAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdLEBATRNdWx0aUxvY2F0aW9uAAEMeGNt+QQBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8JBQFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMNBQFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzqQEBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXRlAQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAPkEASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAPkEASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzoQEBLE11bHRpQXNzZXRzAAEYdGlja2V0sQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQALAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZCwBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KAEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAKEBASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAoQEBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQABQUBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAKQEBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABBAQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvCQUBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4pAEMdTMyAAEQbmFtZTgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcqQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcqQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQACQUBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAC5AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmvBAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb261AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNt+QQBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXSpAQEoTXVsdGlBc3NldAABIHVubG9ja2VysQEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldKkBAShNdWx0aUFzc2V0AAEYdGFyZ2V0sQEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldKkBAShNdWx0aUFzc2V0AAEUb3duZXKxAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXSpAQEoTXVsdGlBc3NldAABGGxvY2tlcrEBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAsQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luBQUBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAAFBQQYT3B0aW9uBARUAbEBAQgQTm9uZQAAABBTb21lBACxAQAAAQAACQUMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb26xAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABKG1heF93ZWlnaHQoARhXZWlnaHQAAA0FEAx4Y20IdjMobXVsdGlhc3NldEBNdWx0aUFzc2V0RmlsdGVyAAEIIERlZmluaXRlBAChAQEsTXVsdGlBc3NldHMAAAAQV2lsZAQAEQUBOFdpbGRNdWx0aUFzc2V0AAEAABEFEAx4Y20IdjMobXVsdGlhc3NldDhXaWxkTXVsdGlBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZK0BARxBc3NldElkAAEMZnVuFQUBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBACkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWStAQEcQXNzZXRJZAABDGZ1bhUFATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudKQBDHUzMgADAAAVBRAMeGNtCHYzKG11bHRpYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAABkFCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMgQAHQUBUHYyOjpYY208UnVudGltZUNhbGw+AAIACFYzBAAtBQFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEADkFAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAAdBQwMeGNtCHYyDFhjbQQsUnVudGltZUNhbGwAAAQAIQUBdFZlYzxJbnN0cnVjdGlvbjxSdW50aW1lQ2FsbD4+AAAhBQAAAiUFACUFDAx4Y20IdjIsSW5zdHJ1Y3Rpb24ELFJ1bnRpbWVDYWxsAAFwNFdpdGhkcmF3QXNzZXQEAG0BASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAG0BASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABtAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZQwBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABIHJlc3BvbnNlbQQBIFJlc3BvbnNlAAEobWF4X3dlaWdodCwBDHU2NAADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzbQEBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnl9AQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c20BASxNdWx0aUFzc2V0cwABEGRlc3R9AQE0TXVsdGlMb2NhdGlvbgABDHhjbdkEARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX3R5cGXlBAEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QsAQx1NjQAARBjYWxsKQUBaERvdWJsZUVuY29kZWQ8UnVudGltZUNhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXKkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplpAEMdTMyAAEwbWF4X2NhcGFjaXR5pAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnSkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9ypAEMdTMyAAEYc2VuZGVypAEMdTMyAAEkcmVjaXBpZW50pAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAIEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IMASBxdWVyeV9pZCwBHFF1ZXJ5SWQAARBkZXN0fQEBNE11bHRpTG9jYXRpb24AAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0LAEMdTY0AAwAMERlcG9zaXRBc3NldAwBGGFzc2V0c+kEAUBNdWx0aUFzc2V0RmlsdGVyAAEobWF4X2Fzc2V0c6QBDHUzMgABLGJlbmVmaWNpYXJ5fQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldBABGGFzc2V0c+kEAUBNdWx0aUFzc2V0RmlsdGVyAAEobWF4X2Fzc2V0c6QBDHUzMgABEGRlc3R9AQE0TXVsdGlMb2NhdGlvbgABDHhjbdkEARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQIARBnaXZl6QQBQE11bHRpQXNzZXRGaWx0ZXIAARxyZWNlaXZlbQEBLE11bHRpQXNzZXRzAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz6QQBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZlfQEBNE11bHRpTG9jYXRpb24AAQx4Y23ZBAEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz6QQBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0fQEBNE11bHRpTG9jYXRpb24AAQx4Y23ZBAEcWGNtPCgpPgARADBRdWVyeUhvbGRpbmcQASBxdWVyeV9pZCwBHFF1ZXJ5SWQAARBkZXN0fQEBNE11bHRpTG9jYXRpb24AARhhc3NldHPpBAFATXVsdGlBc3NldEZpbHRlcgABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc3UBAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl09QQBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAAdBQFAWGNtPFJ1bnRpbWVDYWxsPgAVACxTZXRBcHBlbmRpeAQAHQUBQFhjbTxSdW50aW1lQ2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzbQEBLE11bHRpQXNzZXRzAAEYdGlja2V0fQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQALAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZCwBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0LAEMdTY0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbAAApBQwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQ4ARxWZWM8dTg+AAAtBQwMeGNtCHYzDFhjbQQQQ2FsbAAABAAxBQFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAMQUAAAI1BQA1BQwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAKEBASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAKEBASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAChAQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABIHJlc3BvbnNlfQQBIFJlc3BvbnNlAAEobWF4X3dlaWdodCgBGFdlaWdodAABHHF1ZXJpZXIFBQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHOhAQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyebEBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzoQEBLE11bHRpQXNzZXRzAAEQZGVzdLEBATRNdWx0aUxvY2F0aW9uAAEMeGNt+QQBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZE0BAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGwpBQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVypAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZaQBDHUzMgABMG1heF9jYXBhY2l0eaQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50pAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcqQBDHUzMgABGHNlbmRlcqQBDHUzMgABJHJlY2lwaWVudKQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAC1AQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAJBQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzDQUBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyebEBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMNBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3SxAQE0TXVsdGlMb2NhdGlvbgABDHhjbfkEARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlDQUBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50oQEBLE11bHRpQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMNBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmWxAQE0TXVsdGlMb2NhdGlvbgABDHhjbfkEARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMNBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3SxAQE0TXVsdGlMb2NhdGlvbgABDHhjbfkEARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvCQUBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzDQUBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc6kBAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAAtBQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAAtBQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c6EBASxNdWx0aUFzc2V0cwABGHRpY2tldLEBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAChAQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAKEBASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAUFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEACkBAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAQQEBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwkFAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleKQBDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3KkAQx1MzIAATxtaW5fY3JhdGVfbWlub3KkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAkFAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAuQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrwQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9utQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbfkEARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0qQEBKE11bHRpQXNzZXQAASB1bmxvY2tlcrEBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSpAQEoTXVsdGlBc3NldAABGHRhcmdldLEBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXSpAQEoTXVsdGlBc3NldAABFG93bmVysQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0qQEBKE11bHRpQXNzZXQAARhsb2NrZXKxAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhdyABEGJvb2wAKwAgU2V0VG9waWMEAAQBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EALEBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdGUBASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbgUFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAOQUMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABAA9BQFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAPQUAAAJBBQBBBQwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQABQEBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAAUBARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQABQEBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2UlAQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllckkBAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHMFAQEYQXNzZXRzAAEsYmVuZWZpY2lhcnmUASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cwUBARhBc3NldHMAARBkZXN0lAEgTG9jYXRpb24AAQx4Y234ARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRNAQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QoARhXZWlnaHQAARBjYWxsKQUBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcqQBDHUzMgABQG1heF9tZXNzYWdlX3NpemWkAQx1MzIAATBtYXhfY2FwYWNpdHmkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudKQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3KkAQx1MzIAARhzZW5kZXKkAQx1MzIAASRyZWNpcGllbnSkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAmAFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAVQEBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c1kBASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5lAEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c1kBASxBc3NldEZpbHRlcgABEGRlc3SUASBMb2NhdGlvbgABDHhjbfgBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVZAQEsQXNzZXRGaWx0ZXIAARB3YW50BQEBGEFzc2V0cwABHG1heGltYWwgARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzWQEBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZZQBIExvY2F0aW9uAAEMeGNt+AEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzWQEBLEFzc2V0RmlsdGVyAAEQZGVzdJQBIExvY2F0aW9uAAEMeGNt+AEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb1UBAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1kBASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzDQEBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA5BQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA5BQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cwUBARhBc3NldHMAARh0aWNrZXSUASBMb2NhdGlvbgAYABBUcmFwBAAsAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQoARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQABQEBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQABQEBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAEkBAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAApAQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAEEBAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lOAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9VAQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXikAQx1MzIAARBuYW1lOAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lOAEcVmVjPHU4PgABLGNyYXRlX21ham9ypAEMdTMyAAE8bWluX2NyYXRlX21pbm9ypAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABVAQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAKABIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrrAEkTmV0d29ya0lkAAEsZGVzdGluYXRpb26YAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNt+AEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldA0BARRBc3NldAABIHVubG9ja2VylAEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldA0BARRBc3NldAABGHRhcmdldJQBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQNAQEUQXNzZXQAARRvd25lcpQBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldA0BARRBc3NldAABGGxvY2tlcpQBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAlAEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0ZQEBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luSQEBQE9wdGlvbjxMb2NhdGlvbj4ALwAARQUQUHN0YWdpbmdfeGNtX2V4ZWN1dG9yGHRyYWl0czhhc3NldF90cmFuc2ZlcjBUcmFuc2ZlclR5cGUAARAgVGVsZXBvcnQAAAAwTG9jYWxSZXNlcnZlAAEASERlc3RpbmF0aW9uUmVzZXJ2ZQACADRSZW1vdGVSZXNlcnZlBADNAQFEVmVyc2lvbmVkTG9jYXRpb24AAwAASQUMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFgLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NBQxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlEFCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZSRCb29rU3RhdGUENE1lc3NhZ2VPcmlnaW4B4QEAGAEUYmVnaW4QASRQYWdlSW5kZXgAAQxlbmQQASRQYWdlSW5kZXgAARRjb3VudBABJFBhZ2VJbmRleAABQHJlYWR5X25laWdoYm91cnNVBQGET3B0aW9uPE5laWdoYm91cnM8TWVzc2FnZU9yaWdpbj4+AAE0bWVzc2FnZV9jb3VudDABDHU2NAABEHNpemUwAQx1NjQAAFUFBBhPcHRpb24EBFQBWQUBCBBOb25lAAAAEFNvbWUEAFkFAAABAABZBQhQcGFsbGV0X21lc3NhZ2VfcXVldWUoTmVpZ2hib3VycwQ0TWVzc2FnZU9yaWdpbgHhAQAIARBwcmV24QEBNE1lc3NhZ2VPcmlnaW4AARBuZXh04QEBNE1lc3NhZ2VPcmlnaW4AAF0FAAAECOEBEABhBQhQcGFsbGV0X21lc3NhZ2VfcXVldWUQUGFnZQgQU2l6ZQEQIEhlYXBTaXplAAAYASRyZW1haW5pbmcQARBTaXplAAE4cmVtYWluaW5nX3NpemUQARBTaXplAAEsZmlyc3RfaW5kZXgQARBTaXplAAEUZmlyc3QQARBTaXplAAEQbGFzdBABEFNpemUAARBoZWFwZQUBnEJvdW5kZWRWZWM8dTgsIEludG9VMzI8SGVhcFNpemUsIFNpemU+PgAAZQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AABpBQxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW7hAQFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleBABJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbuEBAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlEAEkUGFnZUluZGV4AAEUaW5kZXgQARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0KAEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLm0FDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQucQUMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEYFGJhdGNoBAEUY2FsbHN1BQF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXgJAgEMdTE2AAEQY2FsbHkFAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAE03FNlbmQgYSBjYWxsIHRocm91Z2ggYW4gaW5kZXhlZCBwc2V1ZG9ueW0gb2YgdGhlIHNlbmRlci4AVQFGaWx0ZXIgZnJvbSBvcmlnaW4gYXJlIHBhc3NlZCBhbG9uZy4gVGhlIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHdpdGggYW4gb3JpZ2luIHdoaWNovHVzZSB0aGUgc2FtZSBmaWx0ZXIgYXMgdGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwuAEUBTk9URTogSWYgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55IGFjY291bnQtYmFzZWQgZmlsdGVyaW5nIGlzIG5vdCBob25vcmVkIChpLmUuYQFiZWNhdXNlIHlvdSBleHBlY3QgYHByb3h5YCB0byBoYXZlIGJlZW4gdXNlZCBwcmlvciBpbiB0aGUgY2FsbCBzdGFjayBhbmQgeW91IGRvIG5vdCB3YW50UQF0aGUgY2FsbCByZXN0cmljdGlvbnMgdG8gYXBwbHkgdG8gYW55IHN1Yi1hY2NvdW50cyksIHRoZW4gdXNlIGBhc19tdWx0aV90aHJlc2hvbGRfMWB8aW4gdGhlIE11bHRpc2lnIHBhbGxldCBpbnN0ZWFkLgD0Tk9URTogUHJpb3IgdG8gdmVyc2lvbiAqMTIsIHRoaXMgd2FzIGNhbGxlZCBgYXNfbGltaXRlZF9zdWJgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uJGJhdGNoX2FsbAQBFGNhbGxzdQUBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAjTsU2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzIGFuZCBhdG9taWNhbGx5IGV4ZWN1dGUgdGhlbS4hAVRoZSB3aG9sZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrIGFuZCBmYWlsIGlmIGFueSBvZiB0aGUgY2FsbHMgZmFpbGVkLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLixkaXNwYXRjaF9hcwgBJGFzX29yaWdpbiUGAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxseQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzdQUBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxseQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQoARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnUFAAACeQUAeQUIZGFzc2V0X2h1Yl93ZXN0ZW5kX3J1bnRpbWUsUnVudGltZUNhbGwAAVwYU3lzdGVtBAChAgGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAPFBhcmFjaGFpblN5c3RlbQQAWQMB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluU3lzdGVtLCBSdW50aW1lPgABACRUaW1lc3RhbXAEAIEDAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRpbWVzdGFtcCwgUnVudGltZT4AAwA0UGFyYWNoYWluSW5mbwQAhQMByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluSW5mbywgUnVudGltZT4ABAAgQmFsYW5jZXMEAMkDAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhbGFuY2VzLCBSdW50aW1lPgAKAERDb2xsYXRvclNlbGVjdGlvbgQA8QMB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29sbGF0b3JTZWxlY3Rpb24sIFJ1bnRpbWU+ABUAHFNlc3Npb24EABEEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAUQQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8WGNtcFF1ZXVlLCBSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQA0QQBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9sa2Fkb3RYY20sIFJ1bnRpbWU+AB8AKEN1bXVsdXNYY20EAE0FAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEN1bXVsdXNYY20sIFJ1bnRpbWU+ACAAME1lc3NhZ2VRdWV1ZQQAaQUBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVzc2FnZVF1ZXVlLCBSdW50aW1lPgAjABxVdGlsaXR5BABxBQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxVdGlsaXR5LCBSdW50aW1lPgAoACBNdWx0aXNpZwQAfQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+ACkAFFByb3h5BACFBQGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AKgAYQXNzZXRzBACNBQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAJEFAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAKEFAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAPUFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAUE5mdEZyYWN0aW9uYWxpemF0aW9uBAD5BQHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRGcmFjdGlvbmFsaXphdGlvbiwgUnVudGltZT4ANgAoUG9vbEFzc2V0cwQA/QUBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANwA8QXNzZXRDb252ZXJzaW9uBAABBgHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADgASFN0YXRlVHJpZU1pZ3JhdGlvbgQACQYB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBGAGBBc3NldENvbnZlcnNpb25NaWdyYXRpb24EACEGAfUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0Q29udmVyc2lvbk1pZ3JhdGlvbiwgUnVudGltZT4AyAAAfQUMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABEFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVz4AFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxseQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xkCQIBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVz4AFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnSBBQGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbHkFAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEobWF4X3dlaWdodCgBGFdlaWdodAABnFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgCwSWYgdGhlcmUgYXJlIGVub3VnaCwgdGhlbiBkaXNwYXRjaCB0aGUgY2FsbC4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AHQFOT1RFOiBVbmxlc3MgdGhpcyBpcyB0aGUgZmluYWwgYXBwcm92YWwsIHlvdSB3aWxsIGdlbmVyYWxseSB3YW50IHRvIHVzZRkBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsLgBZAVJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdCBpZiBgdGhyZXNob2xkYCBpcyBleGFjdGx5IGAxYC4gT3RoZXJ3aXNlVQFvbiBzdWNjZXNzLCByZXN1bHQgaXMgYE9rYCBhbmQgdGhlIHJlc3VsdCBmcm9tIHRoZSBpbnRlcmlvciBjYWxsLCBpZiBpdCB3YXMgZXhlY3V0ZWQs3G1heSBiZSBmb3VuZCBpbiB0aGUgZGVwb3NpdGVkIGBNdWx0aXNpZ0V4ZWN1dGVkYCBldmVudC4ANCMjIENvbXBsZXhpdHlQLSBgTyhTICsgWiArIENhbGwpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC4hAS0gT25lIGNhbGwgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFopYCB3aGVyZSBgWmAgaXMgdHgtbGVuLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5sLSBUaGUgd2VpZ2h0IG9mIHRoZSBgY2FsbGAuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLkBhcHByb3ZlX2FzX211bHRpFAEkdGhyZXNob2xkCQIBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVz4AFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnSBBQGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEkY2FsbF9oYXNoBAEgW3U4OyAzMl0AAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAJ4VQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANQFOT1RFOiBJZiB0aGlzIGlzIHRoZSBmaW5hbCBhcHByb3ZhbCwgeW91IHdpbGwgd2FudCB0byB1c2UgYGFzX211bHRpYCBpbnN0ZWFkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGQJAgEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXPgAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludP0BAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoBAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoEFBBhPcHRpb24EBFQB/QEBCBBOb25lAAAAEFNvbWUEAP0BAAABAACFBQwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEoFHByb3h5DAEQcmVhbM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGWJBQFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxseQUBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZQUCATBUOjpQcm94eVR5cGUAARRkZWxheRABREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlBQIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4AAhyoVW5yZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6JQEtIGBwcm94eWA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIGBjYWxsZXJgIHdvdWxkIGxpa2UgdG8gcmVtb3ZlIGFzIGEgcHJveHkuQQEtIGBwcm94eV90eXBlYDogVGhlIHBlcm1pc3Npb25zIGN1cnJlbnRseSBlbmFibGVkIGZvciB0aGUgcmVtb3ZlZCBwcm94eSBhY2NvdW50LjhyZW1vdmVfcHJveGllcwADGLRVbnJlZ2lzdGVyIGFsbCBwcm94eSBhY2NvdW50cyBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBBAVdBUk5JTkc6IFRoaXMgbWF5IGJlIGNhbGxlZCBvbiBhY2NvdW50cyBjcmVhdGVkIGJ5IGBwdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGUFAgEwVDo6UHJveHlUeXBlAAEUZGVsYXkQAURCbG9ja051bWJlckZvcjxUPgABFGluZGV4CQIBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUFAgEwVDo6UHJveHlUeXBlAAEUaW5kZXgJAgEMdTE2AAEYaGVpZ2h0pAFEQmxvY2tOdW1iZXJGb3I8VD4AASRleHRfaW5kZXikAQx1MzIABUCgUmVtb3ZlcyBhIHByZXZpb3VzbHkgc3Bhd25lZCBwdXJlIHByb3h5LgBJAVdBUk5JTkc6ICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqIEFueSBmdW5kcyBoZWxkIGluIGl0IHdpbGwgYmU0aW5hY2Nlc3NpYmxlLgBZAVJlcXVpcmVzIGEgYFNpZ25lZGAgb3JpZ2luLCBhbmQgdGhlIHNlbmRlciBhY2NvdW50IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgYSBjYWxsIHRvlGBwdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AOQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC45AS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBwdXJlYC4gUHJvYmFibHkgYDBgLuwtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYHB1cmVgLikBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgcHVyZWAgd2FzIHByb2Nlc3NlZC41AS0gYGV4dF9pbmRleGA6IFRoZSBleHRyaW5zaWMgaW5kZXggaW4gd2hpY2ggdGhlIGNhbGwgdG8gYHB1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmXcYWNjb3VudCB3aG9zZSBgcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWzNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g0ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDQBNENhbGxIYXNoT2Y8VD4AByhwUmVtb3ZlIGEgZ2l2ZW4gYW5ub3VuY2VtZW50LgBZAU1heSBiZSBjYWxsZWQgYnkgYSBwcm94eSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhleSBwcmV2aW91c2x5IGFubm91bmNlZCBhbmQgcmV0dXJuMHRoZSBkZXBvc2l0LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlamVjdF9hbm5vdW5jZW1lbnQIASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDQBNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFszQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZYkFAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGx5BQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6JBQQYT3B0aW9uBARUAQUCAQgQTm9uZQAAABBTb21lBAAFAgAAAQAAjQUMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYQYY3JlYXRlDAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW7NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZRgBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50IAEQYm9vbAABLG1pbl9iYWxhbmNltAEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAiTcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnnNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2XNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZbQBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50IAEQYm9vbAABJGlzX2Zyb3plbiABEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb27NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuIAEQYm9vbAAbKFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWSkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSiIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAGEBLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQgYnkgYEZyZWV6ZXJgIG9yIGBBZG1pbmAgb2YgdGhlIGFzc2V0IGBpZGA7IHRoZSBzaWduZXIgYWNjb3VudNwgIG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeKF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkpAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZKQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZSABEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6RBQw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AABACQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4ArGBJdGVtRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6YQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBjb2xsZWN0aW9uLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuRQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmcgARBib29sAAFEGQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAEkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlLjkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyNCAgcGVybWlzc2lvbnMhAW92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgHGRlc3Ryb3kIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEcd2l0bmVzc5UFAThEZXN0cm95V2l0bmVzcwACPJxEZXN0cm95IGEgY29sbGVjdGlvbiBvZiBmdW5naWJsZSBpdGVtcy4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVob3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4ABQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gYmUgZGVzdHJveWVkLjEBLSBgd2l0bmVzc2A6IEluZm9ybWF0aW9uIG9uIHRoZSBpdGVtcyBtaW50ZWQgaW4gdGhlIGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBiZSBjb3JyZWN0LgCgRW1pdHMgYERlc3Ryb3llZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgBkV2VpZ2h0OiBgTyhuICsgbSlgIHdoZXJlOlQtIGBuID0gd2l0bmVzcy5pdGVtc2B4LSBgbSA9IHdpdG5lc3MuaXRlbV9tZXRhZGF0YXNgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAMsoE1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbi4AQQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7ILSBgaXRlbWA6IFRoZSBpdGVtIHZhbHVlIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7YLSBgYmVuZWZpY2lhcnlgOiBUaGUgaW5pdGlhbCBvd25lciBvZiB0aGUgbWludGVkIGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASxjaGVja19vd25lcpkFAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAQ8WERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsA4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQusC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQuUQEtIGBjaGVja19vd25lcmA6IElmIGBTb21lYCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIHdpdGggYFdyb25nT3duZXJgIHVubGVzcyB0aGV4ICBpdGVtIGlzIG93bmVkIGJ5IHRoaXMgdmFsdWUuALRFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4AOFdlaWdodDogYE8oMSlgfE1vZGVzOiBgY2hlY2tfb3duZXIuaXNfc29tZSgpYC4gdHJhbnNmZXIMAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABEGRlc3TNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zGQIBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADDDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADTgVAUFwcHJvdmUgYW4gaXRlbSB0byBiZSB0cmFuc2ZlcnJlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBNAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJl+GVpdGhlciB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYCBvciB0aGUgYWRtaW4gb2YgdGhlIGNvbGxlY3Rpb24uAEUBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuFQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS4AGQFJbXBvcnRhbnQgTk9URTogVGhlIGBhcHByb3ZlZGAgYWNjb3VudCBnZXRzIHJlc2V0IGFmdGVyIGVhY2ggdHJhbnNmZXIuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAFQbWF5YmVfY2hlY2tfZGVsZWdhdGWZBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAOQBEBQ2FuY2VsIHRoZSBwcmlvciBhcHByb3ZhbCBmb3IgdGhlIHRyYW5zZmVyIG9mIGFuIGl0ZW0gYnkgYSBkZWxlZ2F0ZS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW47/C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4NAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC5RAS0gYG1heWJlX2NoZWNrX2RlbGVnYXRlYDogSWYgYFNvbWVgIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGdpdmVuIGFjY291bnQgaXMgdGhlIG9uZSB0b7AgIHdoaWNoIHBlcm1pc3Npb24gb2YgdHJhbnNmZXIgaXMgZGVsZWdhdGVkLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEZm9yY2VfaXRlbV9zdGF0dXMcAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmcgARBib29sAAEkaXNfZnJvemVuIAEQYm9vbAAPQJRBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGl0ZW0uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtLpgtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBpdGVtLqAtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGl0ZW0umC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGl0ZW0uqC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBpdGVtLlEBLSBgZnJlZV9ob2xkaW5nYDogV2hldGhlciBhIGRlcG9zaXQgaXMgdGFrZW4gZm9yIGhvbGRpbmcgYW4gaXRlbSBvZiB0aGlzIGNvbGxlY3Rpb24uOQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgY29sbGVjdGlvbiBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDgRW1pdHMgYEl0ZW1TdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgaXRlbS4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbR0CAURPcHRpb248VDo6SXRlbUlkPgABDGtleSECAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZSUCAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5IQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAROLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABEGRhdGEVAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGEVAgF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAAUQIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC41AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBmcm96ZW4gYWdhaW5zdCBmdXJ0aGVyIGNoYW5nZXMuAHhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgZGNsZWFyX2NvbGxlY3Rpb25fbWV0YWRhdGEEAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkABUwkENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgAlAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AiEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgUHNldF9hY2NlcHRfb3duZXJzaGlwBAFAbWF5YmVfY29sbGVjdGlvbh0CAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseRABDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlnQUBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKZBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASRiaWRfcHJpY2UYATxJdGVtUHJpY2U8VCwgST4AGSSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpUFDDhwYWxsZXRfdW5pcXVlcxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAEUaXRlbXOkAQx1MzIAAThpdGVtX21ldGFkYXRhc6QBDHUzMgABKGF0dHJpYnV0ZXOkAQx1MzIAAJkFBBhPcHRpb24EBFQBzQMBCBBOb25lAAAAEFNvbWUEAM0DAAABAACdBQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAKEFDCxwYWxsZXRfbmZ0cxhwYWxsZXQQQ2FsbAgEVAAESQABnBhjcmVhdGUIARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ6UFAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ6UFAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAE8GQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuADkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyWQEgIHBlcm1pc3Npb25zIG92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5ggIGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzwQUBOERlc3Ryb3lXaXRuZXNzAAJEnERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDcTk9URTogVGhlIGNvbGxlY3Rpb24gbXVzdCBoYXZlIDAgaXRlbXMgdG8gYmUgZGVzdHJveWVkLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAHRXZWlnaHQ6IGBPKG0gKyBjICsgYSlgIHdoZXJlOngtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BwLSBgYyA9IHdpdG5lc3MuaXRlbV9jb25maWdzYGgtIGBhID0gd2l0bmVzcy5hdHRyaWJ1dGVzYBBtaW50EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARxtaW50X3RvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwd2l0bmVzc19kYXRhxQUB2E9wdGlvbjxNaW50V2l0bmVzczxUOjpJdGVtSWQsIERlcG9zaXRCYWxhbmNlT2Y8VCwgST4+PgADQKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAFEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGNvbXBseSB3aXRoIHRoZSBgbWludF9zZXR0aW5nc2AgcnVsZXMuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuRQEtIGB3aXRuZXNzX2RhdGFgOiBXaGVuIHRoZSBtaW50IHR5cGUgaXMgYEhvbGRlck9mKGNvbGxlY3Rpb25faWQpYCwgdGhlbiB0aGUgb3duZWRZASAgaXRlbV9pZCBmcm9tIHRoYXQgY29sbGVjdGlvbiBuZWVkcyB0byBiZSBwcm92aWRlZCB3aXRoaW4gdGhlIHdpdG5lc3MgZGF0YSBvYmplY3QuIElmYQEgIHRoZSBtaW50IHByaWNlIGlzIHNldCwgdGhlbiBpdCBzaG91bGQgYmUgYWRkaXRpb25hbGx5IGNvbmZpcm1lZCBpbiB0aGUgYHdpdG5lc3NfZGF0YWAuAFEBTm90ZTogdGhlIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBgb3JpZ2luYCBhbmQgbm90IHRoZSBgb3duZXJgIG9mIHRoZSBgaXRlbWAuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYChmb3JjZV9taW50EAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARxtaW50X3RvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWfNBQEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGOMBNb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjpoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC6ULSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zGQIBOFZlYzxUOjpJdGVtSWQ+AAdEnFJlLWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPgtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW1zIHRvIGJlIHJlZXZhbHVhdGVkLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9yIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgSGxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAgoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuuC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgbm9uLXRyYW5zZmVyYWJsZS4AbEVtaXRzIGBJdGVtVHJhbnNmZXJMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBQdW5sb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAAJKKhSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC6oLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSB0cmFuc2ZlcmFibGUuAHRFbWl0cyBgSXRlbVRyYW5zZmVyVW5sb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA8bG9ja19jb2xsZWN0aW9uCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABNGxvY2tfc2V0dGluZ3OpBQFIQ29sbGVjdGlvblNldHRpbmdzAAow2ERpc2FsbG93cyBzcGVjaWZpZWQgc2V0dGluZ3MgZm9yIHRoZSB3aG9sZSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgbG9ja2VkLrQtIGBsb2NrX3NldHRpbmdzYDogVGhlIHNldHRpbmdzIHRvIGJlIGxvY2tlZC4AHQFOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgbG9jayhzZXQpIHRoZSBzZXR0aW5nLCBidXQgbm90IHRvIHVuc2V0IGl0LgBkRW1pdHMgYENvbGxlY3Rpb25Mb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcpkFAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEUYWRtaW6ZBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABHGZyZWV6ZXKZBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAMQNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBTm90ZTogYnkgc2V0dGluZyB0aGUgcm9sZSB0byBgTm9uZWAgb25seSB0aGUgYEZvcmNlT3JpZ2luYCB3aWxsIGJlIGFibGUgdG8gY2hhbmdlIGl0ZGFmdGVyIHRvIGBTb21lKGFjY291bnQpYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgWGZvcmNlX2NvbGxlY3Rpb25fb3duZXIIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWelBQFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAThtYXliZV9kZWFkbGluZR0CAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AA84FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUcYGl0ZW1gLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLuQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS5JAS0gYG1heWJlX2RlYWRsaW5lYDogT3B0aW9uYWwgZGVhZGxpbmUgZm9yIHRoZSBhcHByb3ZhbC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGXYCW51bWJlciBvZiBibG9ja3MgYWZ0ZXIgd2hpY2ggdGhlIGFwcHJvdmFsIHdpbGwgZXhwaXJlAJBFbWl0cyBgVHJhbnNmZXJBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtEAEkVDo6SXRlbUlkAAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhIAEQYm9vbAABPGxvY2tfYXR0cmlidXRlcyABEGJvb2wAEkToRGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgBBAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluUG9mIHRoZSBgY29sbGVjdGlvbmAuALQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gaWYgdGhlIGBpdGVtYC58LSBgaXRlbWA6IEFuIGl0ZW0gdG8gYmUgbG9ja2VkLg0BLSBgbG9ja19tZXRhZGF0YWA6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgbG9ja2VkLmEBLSBgbG9ja19hdHRyaWJ1dGVzYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZUwgIHNob3VsZCBiZSBsb2NrZWQuAF0BTm90ZTogYGxvY2tfYXR0cmlidXRlc2AgYWZmZWN0cyB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlIG9ubHkuRQFXaGVuIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRoZSB1bmxvY2sgdGhlbS4AdEVtaXRzIGBJdGVtUHJvcGVydGllc0xvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDRzZXRfYXR0cmlidXRlFAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW0dAgFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2U1AgGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXklAgFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWUxAgF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hcykCAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlNQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5JQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVlMQIBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVtHQIBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlNQIBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5JQIBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgAVPLBDbGVhciBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZShhdHRyaWJ1dGUuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLg0BLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXGFwcHJvdmVfaXRlbV9hdHRyaWJ1dGVzDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3PRBQF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAARBkYXRhMQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW0QASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhMQIBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9uHQIBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABwoEQFTZXQgKG9yIHJlc2V0KSB0aGUgYWNjZXB0YW5jZSBvZiBvd25lcnNoaXAgZm9yIGEgcGFydGljdWxhciBhY2NvdW50LgBhAU9yaWdpbiBtdXN0IGJlIGBTaWduZWRgIGFuZCBpZiBgbWF5YmVfY29sbGVjdGlvbmAgaXMgYFNvbWVgLCB0aGVuIHRoZSBzaWduZXIgbXVzdCBoYXZlIGFMcHJvdmlkZXIgcmVmZXJlbmNlLgBRAS0gYG1heWJlX2NvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBvd25lcnNoaXAgdGhlIHNpZ25lciBpc2EBICB3aWxsaW5nIHRvIGFjY2VwdCwgb3IgaWYgYE5vbmVgLCBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNpZ25lciBpcyB3aWxsaW5nIHRvIGFjY2VwdCBub1wgIG93bmVyc2hpcCB0cmFuc2ZlcmFsLgCMRW1pdHMgYE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkYC5kc2V0X2NvbGxlY3Rpb25fbWF4X3N1cHBseQgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5EAEMdTMyAB0k4FNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLlB1cGRhdGVfbWludF9zZXR0aW5ncwgBKGNvbGxlY3Rpb24QATxUOjpDb2xsZWN0aW9uSWQAATRtaW50X3NldHRpbmdzsQUBBQFNaW50U2V0dGluZ3M8QmFsYW5jZU9mPFQsIEk+LCBCbG9ja051bWJlckZvcjxUPiwgVDo6Q29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABFHByaWNlnQUBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKZBQFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbRABJFQ6Okl0ZW1JZAABJGJpZF9wcmljZRgBPEl0ZW1QcmljZTxULCBJPgAgJKhBbGxvd3MgdG8gYnV5IGFuIGl0ZW0gaWYgaXQncyB1cCBmb3Igc2FsZS4A+E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBub3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0urC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGUgc2VuZGVyIHdhbnRzIHRvIGJ1eS7YLSBgYmlkX3ByaWNlYDogVGhlIHByaWNlIHRoZSBzZW5kZXIgaXMgd2lsbGluZyB0byBwYXkuAHhFbWl0cyBgSXRlbUJvdWdodGAgb24gc3VjY2Vzcy4gcGF5X3RpcHMEARB0aXBz1QUBnEJvdW5kZWRWZWM8SXRlbVRpcE9mPFQsIEk+LCBUOjpNYXhUaXBzPgAhHFxBbGxvd3MgdG8gcGF5IHRoZSB0aXBzLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBULSBgdGlwc2A6IFRpcHMgYXJyYXkuAJhFbWl0cyBgVGlwU2VudGAgb24gZXZlcnkgdGlwIHRyYW5zZmVyLixjcmVhdGVfc3dhcBgBSG9mZmVyZWRfY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbRABJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbhABPFQ6OkNvbGxlY3Rpb25JZAABSG1heWJlX2Rlc2lyZWRfaXRlbR0CAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlOQIBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbhABREJsb2NrTnVtYmVyRm9yPFQ+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtEAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtEAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uEAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtEAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZTkCAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGHhBQFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmXlBQFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIAATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRh8QUBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZeUFAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgABMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMupQUMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlARgsQmxvY2tOdW1iZXIBEDBDb2xsZWN0aW9uSWQBEAAMASBzZXR0aW5nc6kFAUhDb2xsZWN0aW9uU2V0dGluZ3MAAShtYXhfc3VwcGx5HQIBLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc7EFAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AACpBQwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBrQUABAAwAURDb2xsZWN0aW9uU2V0dGluZwAArQUMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAACxBQwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQEYLEJsb2NrTnVtYmVyARAwQ29sbGVjdGlvbklkARAAFAEkbWludF90eXBltQUBWE1pbnRUeXBlPENvbGxlY3Rpb25JZD4AARRwcmljZZ0FATRPcHRpb248UHJpY2U+AAEsc3RhcnRfYmxvY2sdAgFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9jax0CAUxPcHRpb248QmxvY2tOdW1iZXI+AAFUZGVmYXVsdF9pdGVtX3NldHRpbmdzuQUBMEl0ZW1TZXR0aW5ncwAAtQUMLHBhbGxldF9uZnRzFHR5cGVzIE1pbnRUeXBlBDBDb2xsZWN0aW9uSWQBEAEMGElzc3VlcgAAABhQdWJsaWMAAQAgSG9sZGVyT2YEABABMENvbGxlY3Rpb25JZAACAAC5BQwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBvQUABAAwASxJdGVtU2V0dGluZwAAvQUMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1TZXR0aW5nAAEMMFRyYW5zZmVyYWJsZQABAEBVbmxvY2tlZE1ldGFkYXRhAAIASFVubG9ja2VkQXR0cmlidXRlcwAEAADBBQwscGFsbGV0X25mdHMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBOGl0ZW1fbWV0YWRhdGFzpAEMdTMyAAEwaXRlbV9jb25maWdzpAEMdTMyAAEoYXR0cmlidXRlc6QBDHUzMgAAxQUEGE9wdGlvbgQEVAHJBQEIEE5vbmUAAAAQU29tZQQAyQUAAAEAAMkFDCxwYWxsZXRfbmZ0cxR0eXBlcyxNaW50V2l0bmVzcwgYSXRlbUlkARAcQmFsYW5jZQEYAAgBKG93bmVkX2l0ZW0dAgE4T3B0aW9uPEl0ZW1JZD4AAShtaW50X3ByaWNlnQUBPE9wdGlvbjxCYWxhbmNlPgAAzQUMLHBhbGxldF9uZnRzFHR5cGVzKEl0ZW1Db25maWcAAAQBIHNldHRpbmdzuQUBMEl0ZW1TZXR0aW5ncwAA0QUMLHBhbGxldF9uZnRzFHR5cGVzfENhbmNlbEF0dHJpYnV0ZXNBcHByb3ZhbFdpdG5lc3MAAAQBSGFjY291bnRfYXR0cmlidXRlcxABDHUzMgAA1QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZBQRTAAAEAN0FARhWZWM8VD4AANkFDCxwYWxsZXRfbmZ0cxR0eXBlcxxJdGVtVGlwEDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBABhBbW91bnQBGAAQAShjb2xsZWN0aW9uEAEwQ29sbGVjdGlvbklkAAEQaXRlbRABGEl0ZW1JZAABIHJlY2VpdmVyAAEkQWNjb3VudElkAAEYYW1vdW50GAEYQW1vdW50AADdBQAAAtkFAOEFDCxwYWxsZXRfbmZ0cxR0eXBlczRQcmVTaWduZWRNaW50FDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBACBEZWFkbGluZQEQHEJhbGFuY2UBGAAcAShjb2xsZWN0aW9uEAEwQ29sbGVjdGlvbklkAAEQaXRlbRABGEl0ZW1JZAABKGF0dHJpYnV0ZXOlAgFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASBtZXRhZGF0YTgBHFZlYzx1OD4AATBvbmx5X2FjY291bnQpAgFET3B0aW9uPEFjY291bnRJZD4AASBkZWFkbGluZRABIERlYWRsaW5lAAEobWludF9wcmljZZ0FATxPcHRpb248QmFsYW5jZT4AAOUFCChzcF9ydW50aW1lOE11bHRpU2lnbmF0dXJlAAEMHEVkMjU1MTkEAOkFAUhlZDI1NTE5OjpTaWduYXR1cmUAAAAcU3IyNTUxOQQA6QUBSHNyMjU1MTk6OlNpZ25hdHVyZQABABRFY2RzYQQA7QUBQGVjZHNhOjpTaWduYXR1cmUAAgAA6QUAAANAAAAACADtBQAAA0EAAAAIAPEFDCxwYWxsZXRfbmZ0cxR0eXBlc0xQcmVTaWduZWRBdHRyaWJ1dGVzEDBDb2xsZWN0aW9uSWQBEBhJdGVtSWQBECRBY2NvdW50SWQBACBEZWFkbGluZQEQABQBKGNvbGxlY3Rpb24QATBDb2xsZWN0aW9uSWQAARBpdGVtEAEYSXRlbUlkAAEoYXR0cmlidXRlc6UCAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABJG5hbWVzcGFjZTUCAXRBdHRyaWJ1dGVOYW1lc3BhY2U8QWNjb3VudElkPgABIGRlYWRsaW5lEAEgRGVhZGxpbmUAAPUFDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGEGGNyZWF0ZQwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2UYAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudCABEGJvb2wAASxtaW5fYmFsYW5jZbQBKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAIk3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LkBkZXN0cm95X2FjY291bnRzBAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXTNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW7NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lOAEcVmVjPHU4PgABGHN5bWJvbDgBHFZlYzx1OD4AASBkZWNpbWFscwgBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZTgBHFZlYzx1OD4AARhzeW1ib2w4ARxWZWM8dTg+AAEgZGVjaW1hbHMIAQh1OAABJGlzX2Zyb3plbiABEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW7NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2W0AShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudCABEGJvb2wAASRpc19mcm96ZW4gARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybiABEGJvb2wAGyhZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlklAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB0oiENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBhAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkIGJ5IGBGcmVlemVyYCBvciBgQWRtaW5gIG9mIHRoZSBhc3NldCBgaWRgOyB0aGUgc2lnbmVyIGFjY291bnTcICBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0IHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHihdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZJQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWSUAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdM0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmUgARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu+QUMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0EENhbGwEBFQAAQg0ZnJhY3Rpb25hbGl6ZRQBRG5mdF9jb2xsZWN0aW9uX2lkEAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEYbmZ0X2lkEAEgVDo6TmZ0SWQAASBhc3NldF9pZBABMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkZnJhY3Rpb25zGAFEQXNzZXRCYWxhbmNlT2Y8VD4AAESsTG9jayB0aGUgTkZUIGFuZCBtaW50IGEgbmV3IGZ1bmdpYmxlIGFzc2V0LgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgEBVGhlIG9yaWdpbiBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgTkZUIHRoZXkgYXJlIHRyeWluZyB0byBsb2NrLgCcYERlcG9zaXRgIGZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQuACUBLSBgbmZ0X2NvbGxlY3Rpb25faWRgOiBUaGUgSUQgdXNlZCB0byBpZGVudGlmeSB0aGUgY29sbGVjdGlvbiBvZiB0aGUgTkZULrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLiEBLSBgbmZ0X2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIE5GVCB3aXRoaW4gdGhlIGdpdmVuIGNvbGxlY3Rpb24usElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfbmZ0c2Au5C0gYGFzc2V0X2lkYDogVGhlIElEIG9mIHRoZSBuZXcgYXNzZXQuIEl0IG11c3Qgbm90IGV4aXN0LrhJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X2Fzc2V0c2AuHQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRoYXQgd2lsbCByZWNlaXZlIHRoZSBuZXdseSBjcmVhdGVkIGFzc2V0Lg0BLSBgZnJhY3Rpb25zYDogVGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBuZXdseSBjcmVhdGVkIGFzc2V0IGNsYXNzLgDARW1pdHMgYE5mdEZyYWN0aW9uYWxpemVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFHVuaWZ5EAFEbmZ0X2NvbGxlY3Rpb25faWQQAUhUOjpOZnRDb2xsZWN0aW9uSWQAARhuZnRfaWQQASBUOjpOZnRJZAABIGFzc2V0X2lkEAEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnnNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBFAUJ1cm4gdGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBmdW5naWJsZSBhc3NldCBhbmQgcmV0dXJuICh1bmxvY2spIHRoZSBsb2NrZWQgTkZULgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgDQYERlcG9zaXRgIGZ1bmRzIHdpbGwgYmUgcmV0dXJuZWQgdG8gYGFzc2V0X2NyZWF0b3JgLgAlAS0gYG5mdF9jb2xsZWN0aW9uX2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvbGxlY3Rpb24gb2YgdGhlIE5GVC6wSXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9uZnRzYC4hAS0gYG5mdF9pZGA6IFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBORlQgd2l0aGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLikBLSBgYXNzZXRfaWRgOiBUaGUgSUQgb2YgdGhlIGFzc2V0IGJlaW5nIHJldHVybmVkIGFuZCBkZXN0cm95ZWQuIE11c3QgbWF0Y2j8dGhlIG9yaWdpbmFsIElEIG9mIHRoZSBjcmVhdGVkIGFzc2V0LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBORlQuuElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfYXNzZXRzYC78LSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgdW5pZmllZCBORlQuAKRFbWl0cyBgTmZ0VW5pZmllZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy79BQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABhBhjcmVhdGUMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlGAEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnQgARBib29sAAEsbWluX2JhbGFuY2W0AShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACJNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC5AZGVzdHJveV9hY2NvdW50cwQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyec0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXTNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0zQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50tAEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3TNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG/NAwFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3Vlcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZTgBHFZlYzx1OD4AARhzeW1ib2w4ARxWZWM8dTg+AAEgZGVjaW1hbHMIAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWU4ARxWZWM8dTg+AAEYc3ltYm9sOAEcVmVjPHU4PgABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3Vlcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNltAEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnQgARBib29sAAEkaXNfZnJvemVuIAEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGXNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnS0AShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0Zc0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXLNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbs0DAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudLQBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm4gARBib29sABsoWQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZBABTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZRgBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdob80DAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdKIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AYQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZCBieSBgRnJlZXplcmAgb3IgYEFkbWluYCBvZiB0aGUgYXNzZXQgYGlkYDsgdGhlIHNpZ25lciBhY2NvdW503CAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdCB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB4oXQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQQAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvzQMBUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkEAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3TNAwFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlIAEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgEGDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0MZQBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQylAFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxlAFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDKUAURCb3g8VDo6QXNzZXRLaW5kPgABPGFtb3VudDFfZGVzaXJlZBgBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWQYAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW4YAShUOjpCYWxhbmNlAAEsYW1vdW50Ml9taW4YAShUOjpCYWxhbmNlAAEcbWludF90bwABMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MZQBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQylAFEQm94PFQ6OkFzc2V0S2luZD4AATRscF90b2tlbl9idXJuGAEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmUYAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZRgBKFQ6OkJhbGFuY2UAASx3aXRoZHJhd190bwABMFQ6OkFjY291bnRJZAACDE0BQWxsb3dzIHlvdSB0byByZW1vdmUgbGlxdWlkaXR5IGJ5IHByb3ZpZGluZyB0aGUgYGxwX3Rva2VuX2J1cm5gIHRva2VucyB0aGF0IHdpbGwgYmVRAWJ1cm5lZCBpbiB0aGUgcHJvY2Vzcy4gV2l0aCB0aGUgdXNhZ2Ugb2YgYGFtb3VudDFfbWluX3JlY2VpdmVgL2BhbW91bnQyX21pbl9yZWNlaXZlYDUBaXQncyBwb3NzaWJsZSB0byBjb250cm9sIHRoZSBtaW4gYW1vdW50IG9mIHJldHVybmVkIHRva2VucyB5b3UncmUgaGFwcHkgd2l0aC5wc3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2VucxQBEHBhdGgFBgFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABJGFtb3VudF9pbhgBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbhgBKFQ6OkJhbGFuY2UAARxzZW5kX3RvAAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZSABEGJvb2wAAxjAU3dhcCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDFgIGludG8gYGFzc2V0MmAuLQFgYW1vdW50X291dF9taW5gIHBhcmFtIGFsbG93cyB5b3UgdG8gc3BlY2lmeSB0aGUgbWluIGFtb3VudCBvZiB0aGUgYGFzc2V0MmBgeW91J3JlIGhhcHB5IHRvIHJlY2VpdmUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUucHN3YXBfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMUARBwYXRoBQYBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AAShhbW91bnRfb3V0GAEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXgYAShUOjpCYWxhbmNlAAEcc2VuZF90bwABMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmUgARBib29sAAQYAQFTd2FwIGFueSBhbW91bnQgb2YgYGFzc2V0MWAgdG8gZ2V0IHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MmAuGQFgYW1vdW50X2luX21heGAgcGFyYW0gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIG1heCBhbW91bnQgb2YgdGhlIGBhc3NldDFgYHlvdSdyZSBoYXBweSB0byBwcm92aWRlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLhR0b3VjaAgBGGFzc2V0MZQBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQylAFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy4FBgAAApQACQYMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnDQYBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzEQYBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlchABDHUzMgABMHdpdG5lc3NfdGFzaxUGAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5c60CATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemUQAQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdDgBHFZlYzx1OD4AAShjaGlsZF9rZXlzrQIBMFZlYzxWZWM8dTg+PgABKHRvdGFsX3NpemUQAQx1MzIAAxgRAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgY2hpbGQga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAA0BQWxsIG9mIHRoZSBnaXZlbiBjaGlsZCBrZXlzIG11c3QgYmUgcHJlc2VudCB1bmRlciBvbmUgYGNoaWxkX3Jvb3RgLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuVHNldF9zaWduZWRfbWF4X2xpbWl0cwQBGGxpbWl0cxEGATxNaWdyYXRpb25MaW1pdHMABAS4U2V0IHRoZSBtYXhpbXVtIGxpbWl0IG9mIHRoZSBzaWduZWQgbWlncmF0aW9uLkhmb3JjZV9zZXRfcHJvZ3Jlc3MIATBwcm9ncmVzc190b3AZBgE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkGQYBNFByb2dyZXNzT2Y8VD4ABSTIRm9yY2VmdWxseSBzZXQgdGhlIHByb2dyZXNzIHRoZSBydW5uaW5nIG1pZ3JhdGlvbi4AXQFUaGlzIGlzIG9ubHkgdXNlZnVsIGluIG9uZSBjYXNlOiB0aGUgbmV4dCBrZXkgdG8gbWlncmF0ZSBpcyB0b28gYmlnIHRvIGJlIG1pZ3JhdGVkIHdpdGhVAWEgc2lnbmVkIGFjY291bnQsIGluIGEgcGFyYWNoYWluIGNvbnRleHQsIGFuZCB3ZSBzaW1wbHkgd2FudCB0byBza2lwIGl0LiBBIHJlYXNvbmFibGVhAWV4YW1wbGUgb2YgdGhpcyB3b3VsZCBiZSBgOmNvZGU6YCwgd2hpY2ggaXMgYm90aCB2ZXJ5IGV4cGVuc2l2ZSB0byBtaWdyYXRlLCBhbmQgY29tbW9ubHmkdXNlZCwgc28gcHJvYmFibHkgaXQgaXMgYWxyZWFkeSBtaWdyYXRlZC4AXQFJbiBjYXNlIHlvdSBtZXNzIHRoaW5ncyB1cCwgeW91IGNhbiBhbHNvLCBpbiBwcmluY2lwbGUsIHVzZSB0aGlzIHRvIHJlc2V0IHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuDQYEGE9wdGlvbgQEVAERBgEIEE5vbmUAAAAQU29tZQQAEQYAAAEAABEGDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0PE1pZ3JhdGlvbkxpbWl0cwAACAEQc2l6ZRABDHUzMgABEGl0ZW0QAQx1MzIAABUGDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0NE1pZ3JhdGlvblRhc2sEBFQAABQBMHByb2dyZXNzX3RvcBkGATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQZBgE0UHJvZ3Jlc3NPZjxUPgABEHNpemUQAQx1MzIAASR0b3BfaXRlbXMQAQx1MzIAASxjaGlsZF9pdGVtcxABDHUzMgAAGQYMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQgUHJvZ3Jlc3MEJE1heEtleUxlbgABDBxUb1N0YXJ0AAAAHExhc3RLZXkEAB0GAWRCb3VuZGVkVmVjPHU4LCBNYXhLZXlMZW4+AAEAIENvbXBsZXRlAAIAAB0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAAIQYMbHBhbGxldF9hc3NldF9jb252ZXJzaW9uX29wcxhwYWxsZXQQQ2FsbAQEVAABBFhtaWdyYXRlX3RvX25ld19hY2NvdW50CAEYYXNzZXQxlAFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDKUAURCb3g8VDo6QXNzZXRLaW5kPgAAEF0BTWlncmF0ZXMgYW4gZXhpc3RpbmcgcG9vbCB0byBhIG5ldyBhY2NvdW50IElEIGRlcml2YXRpb24gbWV0aG9kIGZvciBhIGdpdmVuIGFzc2V0IHBhaXIuMQFJZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkIHRvIHRoZSBjYWxsZXIuADxNdXN0IGJlIHNpZ25lZC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy4lBghkYXNzZXRfaHViX3dlc3RlbmRfcnVudGltZTBPcmlnaW5DYWxsZXIAARAYc3lzdGVtBAApBgF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EAC0GAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQAMQYBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAEFZvaWQEADUGAUEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OgpfX3ByaXZhdGU6OlZvaWQAAwAAKQYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBAAEMEFJvb3QAAAAYU2lnbmVkBAAAASRBY2NvdW50SWQAAQAQTm9uZQACAAAtBgwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQAlAEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAJQBIExvY2F0aW9uAAEAADEGDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBADlAQEYUGFyYUlkAAEAADUGCBxzcF9jb3JlEFZvaWQAAQAAOQYMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuPQYAAAQIAAQAQQYIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBEBxCYWxhbmNlARgkQWNjb3VudElkAQAwTWF4QXBwcm92YWxzAAAQARB3aGVu/QEBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l0GAEcQmFsYW5jZQABJGRlcG9zaXRvcgABJEFjY291bnRJZAABJGFwcHJvdmFsc0UGAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAARQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEABFMAAAQA4AEYVmVjPFQ+AABJBgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFcnJvcgQEVAABOEBNaW5pbXVtVGhyZXNob2xkAAAEfFRocmVzaG9sZCBtdXN0IGJlIDIgb3IgZ3JlYXRlci48QWxyZWFkeUFwcHJvdmVkAAEErENhbGwgaXMgYWxyZWFkeSBhcHByb3ZlZCBieSB0aGlzIHNpZ25hdG9yeS5ETm9BcHByb3ZhbHNOZWVkZWQAAgScQ2FsbCBkb2Vzbid0IG5lZWQgYW55IChtb3JlKSBhcHByb3ZhbHMuRFRvb0Zld1NpZ25hdG9yaWVzAAMEqFRoZXJlIGFyZSB0b28gZmV3IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LkhUb29NYW55U2lnbmF0b3JpZXMABASsVGhlcmUgYXJlIHRvbyBtYW55IHNpZ25hdG9yaWVzIGluIHRoZSBsaXN0LlRTaWduYXRvcmllc091dE9mT3JkZXIABQQNAVRoZSBzaWduYXRvcmllcyB3ZXJlIHByb3ZpZGVkIG91dCBvZiBvcmRlcjsgdGhleSBzaG91bGQgYmUgb3JkZXJlZC5MU2VuZGVySW5TaWduYXRvcmllcwAGBA0BVGhlIHNlbmRlciB3YXMgY29udGFpbmVkIGluIHRoZSBvdGhlciBzaWduYXRvcmllczsgaXQgc2hvdWxkbid0IGJlLiBOb3RGb3VuZAAHBNxNdWx0aXNpZyBvcGVyYXRpb24gbm90IGZvdW5kIHdoZW4gYXR0ZW1wdGluZyB0byBjYW5jZWwuIE5vdE93bmVyAAgELQFPbmx5IHRoZSBhY2NvdW50IHRoYXQgb3JpZ2luYWxseSBjcmVhdGVkIHRoZSBtdWx0aXNpZyBpcyBhYmxlIHRvIGNhbmNlbCBpdC4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5NBgAABAhRBhgAUQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFVBgRTAAAEAFkGARhWZWM8VD4AAFUGCDBwYWxsZXRfcHJveHk8UHJveHlEZWZpbml0aW9uDCRBY2NvdW50SWQBACRQcm94eVR5cGUBBQIsQmxvY2tOdW1iZXIBEAAMASBkZWxlZ2F0ZQABJEFjY291bnRJZAABKHByb3h5X3R5cGUFAgEkUHJveHlUeXBlAAEUZGVsYXkQASxCbG9ja051bWJlcgAAWQYAAAJVBgBdBgAABAhhBhgAYQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFlBgRTAAAEAGkGARhWZWM8VD4AAGUGCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBABBIYXNoATQsQmxvY2tOdW1iZXIBEAAMARByZWFsAAEkQWNjb3VudElkAAEkY2FsbF9oYXNoNAEQSGFzaAABGGhlaWdodBABLEJsb2NrTnVtYmVyAABpBgAAAmUGAG0GDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5xBgw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBGCRBY2NvdW50SWQBADhEZXBvc2l0QmFsYW5jZQEYADABFG93bmVyAAEkQWNjb3VudElkAAEYaXNzdWVyAAEkQWNjb3VudElkAAEUYWRtaW4AASRBY2NvdW50SWQAARxmcmVlemVyAAEkQWNjb3VudElkAAEYc3VwcGx5GAEcQmFsYW5jZQABHGRlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABLG1pbl9iYWxhbmNlGAEcQmFsYW5jZQABNGlzX3N1ZmZpY2llbnQgARBib29sAAEgYWNjb3VudHMQAQx1MzIAASxzdWZmaWNpZW50cxABDHUzMgABJGFwcHJvdmFscxABDHUzMgABGHN0YXR1c3UGASxBc3NldFN0YXR1cwAAdQYMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAAB5BgAABAgQAAB9Bgw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBGDhEZXBvc2l0QmFsYW5jZQEYFEV4dHJhAfUBJEFjY291bnRJZAEAABABHGJhbGFuY2UYARxCYWxhbmNlAAEYc3RhdHVzgQYBNEFjY291bnRTdGF0dXMAARhyZWFzb26FBgGoRXhpc3RlbmNlUmVhc29uPERlcG9zaXRCYWxhbmNlLCBBY2NvdW50SWQ+AAEUZXh0cmH1AQEURXh0cmEAAIEGDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFjY291bnRTdGF0dXMAAQwYTGlxdWlkAAAAGEZyb3plbgABABxCbG9ja2VkAAIAAIUGDDRwYWxsZXRfYXNzZXRzFHR5cGVzPEV4aXN0ZW5jZVJlYXNvbggcQmFsYW5jZQEYJEFjY291bnRJZAEAARQgQ29uc3VtZXIAAAAoU3VmZmljaWVudAABACxEZXBvc2l0SGVsZAQAGAEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAABJEFjY291bnRJZAAAGAEcQmFsYW5jZQAEAACJBgAABAwQAAAAjQYMNHBhbGxldF9hc3NldHMUdHlwZXMgQXBwcm92YWwIHEJhbGFuY2UBGDhEZXBvc2l0QmFsYW5jZQEYAAgBGGFtb3VudBgBHEJhbGFuY2UAARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAAJEGDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlARg0Qm91bmRlZFN0cmluZwGVBgAUARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAARBuYW1llQYBNEJvdW5kZWRTdHJpbmcAARhzeW1ib2yVBgE0Qm91bmRlZFN0cmluZwABIGRlY2ltYWxzCAEIdTgAASRpc19mcm96ZW4gARBib29sAACVBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAJkGDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABVChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lp0GDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQA4RGVwb3NpdEJhbGFuY2UBGAAoARRvd25lcgABJEFjY291bnRJZAABGGlzc3VlcgABJEFjY291bnRJZAABFGFkbWluAAEkQWNjb3VudElkAAEcZnJlZXplcgABJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABMGZyZWVfaG9sZGluZyABEGJvb2wAARRpdGVtcxABDHUzMgABOGl0ZW1fbWV0YWRhdGFzEAEMdTMyAAEoYXR0cmlidXRlcxABDHUzMgABJGlzX2Zyb3plbiABEGJvb2wAAKEGAAAEDAAQEAClBgAABAgAEACpBgw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEAOERlcG9zaXRCYWxhbmNlARgAEAEUb3duZXIAASRBY2NvdW50SWQAASBhcHByb3ZlZCkCAURPcHRpb248QWNjb3VudElkPgABJGlzX2Zyb3plbiABEGJvb2wAARxkZXBvc2l0GAE4RGVwb3NpdEJhbGFuY2UAAK0GDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlARgsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXQYAThEZXBvc2l0QmFsYW5jZQABEGRhdGEVAgFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuIAEQYm9vbAAAsQYMOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBGCxTdHJpbmdMaW1pdAAADAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQZGF0YRUCAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW4gARBib29sAAC1BgAABAwQHQIhAgC5BgAABAglAhgAvQYAAAQIGCkCAMEGDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAUgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuxQYMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBADhEZXBvc2l0QmFsYW5jZQEYABgBFG93bmVyAAEkQWNjb3VudElkAAE0b3duZXJfZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXMQAQx1MzIAAThpdGVtX21ldGFkYXRhcxABDHUzMgABMGl0ZW1fY29uZmlncxABDHUzMgABKGF0dHJpYnV0ZXMQAQx1MzIAAMkGDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAHNBgAEAAgBOENvbGxlY3Rpb25Sb2xlAADNBgwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAA0QYMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBABxEZXBvc2l0AdUGJEFwcHJvdmFscwHZBgAMARRvd25lcgABJEFjY291bnRJZAABJGFwcHJvdmFsc9kGASRBcHByb3ZhbHMAARxkZXBvc2l01QYBHERlcG9zaXQAANUGDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBGCRBY2NvdW50SWQBAAAIARxhY2NvdW50AAEkQWNjb3VudElkAAEYYW1vdW50GAE4RGVwb3NpdEJhbGFuY2UAANkGDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEABFYBHQIEUwAABADdBgE4QlRyZWVNYXA8SywgVj4AAN0GBCBCVHJlZU1hcAgESwEABFYBHQIABADhBgAAAOEGAAAC5QYA5QYAAAQIAB0CAOkGDCxwYWxsZXRfbmZ0cxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIHERlcG9zaXQBGCxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdBgBHERlcG9zaXQAARBkYXRhMQIBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAA7QYMLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAHxBixTdHJpbmdMaW1pdAAACAEcZGVwb3NpdPEGARxEZXBvc2l0AAEQZGF0YTECAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AAPEGDCxwYWxsZXRfbmZ0cxR0eXBlc0xJdGVtTWV0YWRhdGFEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQEYJEFjY291bnRJZAEAAAgBHGFjY291bnQpAgFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnQYAThEZXBvc2l0QmFsYW5jZQAA9QYAAAQQEB0CNQIlAgD5BgAABAgxAv0GAP0GDCxwYWxsZXRfbmZ0cxR0eXBlc0BBdHRyaWJ1dGVEZXBvc2l0CDhEZXBvc2l0QmFsYW5jZQEYJEFjY291bnRJZAEAAAgBHGFjY291bnQpAgFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnQYAThEZXBvc2l0QmFsYW5jZQAAAQcMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQAEUwAABAAFBwEsQlRyZWVTZXQ8VD4AAAUHBCBCVHJlZVNldAQEVAEAAAQA4AAAAAkHDCxwYWxsZXRfbmZ0cxR0eXBlcyxQZW5kaW5nU3dhcBAwQ29sbGVjdGlvbklkARAYSXRlbUlkARBYSXRlbVByaWNlV2l0aERpcmVjdGlvbgE9AiBEZWFkbGluZQEQABABSGRlc2lyZWRfY29sbGVjdGlvbhABMENvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbR0CAThPcHRpb248SXRlbUlkPgABFHByaWNlOQIBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lEAEgRGVhZGxpbmUAAA0HDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAERBwAEADABNFBhbGxldEZlYXR1cmUAABEHDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAAFQcMLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhkHAAAECJQAAB0HAAAEDJQAAAAhBww0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQEYNEJvdW5kZWRTdHJpbmcBJQcAFAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQbmFtZSUHATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sJQcBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAAJQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAApBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAVQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4tBwxwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbhR0eXBlcxxEZXRhaWxzEBxBc3NldElkARAkRnJhY3Rpb25zARgcRGVwb3NpdAEYJEFjY291bnRJZAEAABABFGFzc2V0EAEcQXNzZXRJZAABJGZyYWN0aW9ucxgBJEZyYWN0aW9ucwABHGRlcG9zaXQYARxEZXBvc2l0AAE0YXNzZXRfY3JlYXRvcgABJEFjY291bnRJZAAAMQcINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAHQEBHFt1ODsgOF0AADUHDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uGHBhbGxldBRFcnJvcgQEVAABEEBJbmNvcnJlY3RBc3NldElkAAAErEFzc2V0IElEIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gbG9ja2VkIE5GVC4wTm9QZXJtaXNzaW9uAAEE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4sTmZ0Tm90Rm91bmQAAgRITkZUIGRvZXNuJ3QgZXhpc3QuUE5mdE5vdEZyYWN0aW9uYWxpemVkAAMEkE5GVCBoYXMgbm90IHlldCBiZWVuIGZyYWN0aW9uYWxpc2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45Bww0cGFsbGV0X2Fzc2V0cxR0eXBlczRBc3NldE1ldGFkYXRhCDhEZXBvc2l0QmFsYW5jZQEYNEJvdW5kZWRTdHJpbmcBPQcAFAEcZGVwb3NpdBgBOERlcG9zaXRCYWxhbmNlAAEQbmFtZT0HATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sPQcBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwgBCHU4AAEkaXNfZnJvemVuIAEQYm9vbAAAPQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AABBBww0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXJyb3IIBFQABEkAAVQoQmFsYW5jZUxvdwAABBUBQWNjb3VudCBiYWxhbmNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0cmFuc2ZlciBhbW91bnQuJE5vQWNjb3VudAABBJBUaGUgYWNjb3VudCB0byBhbHRlciBkb2VzIG5vdCBleGlzdC4wTm9QZXJtaXNzaW9uAAIE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi4cVW5rbm93bgADBHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi4YRnJvemVuAAQEdFRoZSBvcmlnaW4gYWNjb3VudCBpcyBmcm96ZW4uFEluVXNlAAUEeFRoZSBhc3NldCBJRCBpcyBhbHJlYWR5IHRha2VuLihCYWRXaXRuZXNzAAYEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLjhNaW5CYWxhbmNlWmVybwAHBIxNaW5pbXVtIGJhbGFuY2Ugc2hvdWxkIGJlIG5vbi16ZXJvLkxVbmF2YWlsYWJsZUNvbnN1bWVyAAgMWQFVbmFibGUgdG8gaW5jcmVtZW50IHRoZSBjb25zdW1lciByZWZlcmVuY2UgY291bnRlcnMgb24gdGhlIGFjY291bnQuIEVpdGhlciBubyBwcm92aWRlck0BcmVmZXJlbmNlIGV4aXN0cyB0byBhbGxvdyBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgYSBub24tc2VsZi1zdWZmaWNpZW50IGFzc2V0LCBvciBvbmXwZmV3ZXIgdGhlbiB0aGUgbWF4aW11bSBudW1iZXIgb2YgY29uc3VtZXJzIGhhcyBiZWVuIHJlYWNoZWQuLEJhZE1ldGFkYXRhAAkEXEludmFsaWQgbWV0YWRhdGEgZ2l2ZW4uKFVuYXBwcm92ZWQACgTETm8gYXBwcm92YWwgZXhpc3RzIHRoYXQgd291bGQgYWxsb3cgdGhlIHRyYW5zZmVyLiBXb3VsZERpZQALBDUBVGhlIHNvdXJjZSBhY2NvdW50IHdvdWxkIG5vdCBzdXJ2aXZlIHRoZSB0cmFuc2ZlciBhbmQgaXQgbmVlZHMgdG8gc3RheSBhbGl2ZS40QWxyZWFkeUV4aXN0cwAMBIRUaGUgYXNzZXQtYWNjb3VudCBhbHJlYWR5IGV4aXN0cy4kTm9EZXBvc2l0AA0E1FRoZSBhc3NldC1hY2NvdW50IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGRlcG9zaXQuJFdvdWxkQnVybgAOBMRUaGUgb3BlcmF0aW9uIHdvdWxkIHJlc3VsdCBpbiBmdW5kcyBiZWluZyBidXJuZWQuJExpdmVBc3NldAAPCFkBVGhlIGFzc2V0IGlzIGEgbGl2ZSBhc3NldCBhbmQgaXMgYWN0aXZlbHkgYmVpbmcgdXNlZC4gVXN1YWxseSBlbWl0IGZvciBvcGVyYXRpb25zIHN1Y2gdAWFzIGBzdGFydF9kZXN0cm95YCB3aGljaCByZXF1aXJlIHRoZSBhc3NldCB0byBiZSBpbiBhIGRlc3Ryb3lpbmcgc3RhdGUuMEFzc2V0Tm90TGl2ZQAQBMhUaGUgYXNzZXQgaXMgbm90IGxpdmUsIGFuZCBsaWtlbHkgYmVpbmcgZGVzdHJveWVkLjxJbmNvcnJlY3RTdGF0dXMAEQSwVGhlIGFzc2V0IHN0YXR1cyBpcyBub3QgdGhlIGV4cGVjdGVkIHN0YXR1cy4kTm90RnJvemVuABIE2FRoZSBhc3NldCBzaG91bGQgYmUgZnJvemVuIGJlZm9yZSB0aGUgZ2l2ZW4gb3BlcmF0aW9uLjhDYWxsYmFja0ZhaWxlZAATBIRDYWxsYmFjayBhY3Rpb24gcmVzdWx0ZWQgaW4gZXJyb3IoQmFkQXNzZXRJZAAUBMhUaGUgYXNzZXQgSUQgbXVzdCBiZSBlcXVhbCB0byB0aGUgW2BOZXh0QXNzZXRJZGBdLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5FBwxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkARAABAEgbHBfdG9rZW4QASxQb29sQXNzZXRJZAAASQcMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABXEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lk0HDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBUQcEUwAABABZBwEYVmVjPFQ+AABRBxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAVUHHEJhbGFuY2UBGAAIAQhpZFUHAQhJZAABGGFtb3VudBgBHEJhbGFuY2UAAFUHCGRhc3NldF9odWJfd2VzdGVuZF9ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQAAWQcAAAJRBwBdBwxUcGFsbGV0X2Fzc2V0c19mcmVlemVyGHBhbGxldBRFcnJvcggEVAAESQABBDhUb29NYW55RnJlZXplcwAABOhOdW1iZXIgb2YgZnJlZXplcyBvbiBhbiBhY2NvdW50IHdvdWxkIGV4Y2VlZCBgTWF4RnJlZXplc2AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmEHDFRwYWxsZXRfYXNzZXRzX2ZyZWV6ZXIYcGFsbGV0FEVycm9yCARUAARJAAEEOFRvb01hbnlGcmVlemVzAAAE6E51bWJlciBvZiBmcmVlemVzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIGBNYXhGcmVlemVzYC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuZQcMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXJyb3IIBFQABEkAAQQ4VG9vTWFueUZyZWV6ZXMAAAToTnVtYmVyIG9mIGZyZWV6ZXMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgYE1heEZyZWV6ZXNgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pBwxscGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fb3BzGHBhbGxldBRFcnJvcgQEVAABEEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4wUG9vbE5vdEZvdW5kAAEEXFRoZSBwb29sIGRvZXNuJ3QgZXhpc3QuLFplcm9CYWxhbmNlAAIEeFBvb2wncyBiYWxhbmNlIGNhbm5vdCBiZSB6ZXJvLjxQYXJ0aWFsVHJhbnNmZXIAAwQ5AUluZGljYXRlcyBhIHBhcnRpYWwgdHJhbnNmZXIgb2YgYmFsYW5jZSB0byB0aGUgbmV3IGFjY291bnQgZHVyaW5nIGEgbWlncmF0aW9uLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5tBwAABChxB3UHeQd9B4EHiQeNB5EHlQeZBwBxBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAAB1BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAeQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAAfQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAAIEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAhQcBDEVyYQAAhQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAIAAABABxNb3J0YWwyBAAIAAACABxNb3J0YWwzBAAIAAADABxNb3J0YWw0BAAIAAAEABxNb3J0YWw1BAAIAAAFABxNb3J0YWw2BAAIAAAGABxNb3J0YWw3BAAIAAAHABxNb3J0YWw4BAAIAAAIABxNb3J0YWw5BAAIAAAJACBNb3J0YWwxMAQACAAACgAgTW9ydGFsMTEEAAgAAAsAIE1vcnRhbDEyBAAIAAAMACBNb3J0YWwxMwQACAAADQAgTW9ydGFsMTQEAAgAAA4AIE1vcnRhbDE1BAAIAAAPACBNb3J0YWwxNgQACAAAEAAgTW9ydGFsMTcEAAgAABEAIE1vcnRhbDE4BAAIAAASACBNb3J0YWwxOQQACAAAEwAgTW9ydGFsMjAEAAgAABQAIE1vcnRhbDIxBAAIAAAVACBNb3J0YWwyMgQACAAAFgAgTW9ydGFsMjMEAAgAABcAIE1vcnRhbDI0BAAIAAAYACBNb3J0YWwyNQQACAAAGQAgTW9ydGFsMjYEAAgAABoAIE1vcnRhbDI3BAAIAAAbACBNb3J0YWwyOAQACAAAHAAgTW9ydGFsMjkEAAgAAB0AIE1vcnRhbDMwBAAIAAAeACBNb3J0YWwzMQQACAAAHwAgTW9ydGFsMzIEAAgAACAAIE1vcnRhbDMzBAAIAAAhACBNb3J0YWwzNAQACAAAIgAgTW9ydGFsMzUEAAgAACMAIE1vcnRhbDM2BAAIAAAkACBNb3J0YWwzNwQACAAAJQAgTW9ydGFsMzgEAAgAACYAIE1vcnRhbDM5BAAIAAAnACBNb3J0YWw0MAQACAAAKAAgTW9ydGFsNDEEAAgAACkAIE1vcnRhbDQyBAAIAAAqACBNb3J0YWw0MwQACAAAKwAgTW9ydGFsNDQEAAgAACwAIE1vcnRhbDQ1BAAIAAAtACBNb3J0YWw0NgQACAAALgAgTW9ydGFsNDcEAAgAAC8AIE1vcnRhbDQ4BAAIAAAwACBNb3J0YWw0OQQACAAAMQAgTW9ydGFsNTAEAAgAADIAIE1vcnRhbDUxBAAIAAAzACBNb3J0YWw1MgQACAAANAAgTW9ydGFsNTMEAAgAADUAIE1vcnRhbDU0BAAIAAA2ACBNb3J0YWw1NQQACAAANwAgTW9ydGFsNTYEAAgAADgAIE1vcnRhbDU3BAAIAAA5ACBNb3J0YWw1OAQACAAAOgAgTW9ydGFsNTkEAAgAADsAIE1vcnRhbDYwBAAIAAA8ACBNb3J0YWw2MQQACAAAPQAgTW9ydGFsNjIEAAgAAD4AIE1vcnRhbDYzBAAIAAA/ACBNb3J0YWw2NAQACAAAQAAgTW9ydGFsNjUEAAgAAEEAIE1vcnRhbDY2BAAIAABCACBNb3J0YWw2NwQACAAAQwAgTW9ydGFsNjgEAAgAAEQAIE1vcnRhbDY5BAAIAABFACBNb3J0YWw3MAQACAAARgAgTW9ydGFsNzEEAAgAAEcAIE1vcnRhbDcyBAAIAABIACBNb3J0YWw3MwQACAAASQAgTW9ydGFsNzQEAAgAAEoAIE1vcnRhbDc1BAAIAABLACBNb3J0YWw3NgQACAAATAAgTW9ydGFsNzcEAAgAAE0AIE1vcnRhbDc4BAAIAABOACBNb3J0YWw3OQQACAAATwAgTW9ydGFsODAEAAgAAFAAIE1vcnRhbDgxBAAIAABRACBNb3J0YWw4MgQACAAAUgAgTW9ydGFsODMEAAgAAFMAIE1vcnRhbDg0BAAIAABUACBNb3J0YWw4NQQACAAAVQAgTW9ydGFsODYEAAgAAFYAIE1vcnRhbDg3BAAIAABXACBNb3J0YWw4OAQACAAAWAAgTW9ydGFsODkEAAgAAFkAIE1vcnRhbDkwBAAIAABaACBNb3J0YWw5MQQACAAAWwAgTW9ydGFsOTIEAAgAAFwAIE1vcnRhbDkzBAAIAABdACBNb3J0YWw5NAQACAAAXgAgTW9ydGFsOTUEAAgAAF8AIE1vcnRhbDk2BAAIAABgACBNb3J0YWw5NwQACAAAYQAgTW9ydGFsOTgEAAgAAGIAIE1vcnRhbDk5BAAIAABjACRNb3J0YWwxMDAEAAgAAGQAJE1vcnRhbDEwMQQACAAAZQAkTW9ydGFsMTAyBAAIAABmACRNb3J0YWwxMDMEAAgAAGcAJE1vcnRhbDEwNAQACAAAaAAkTW9ydGFsMTA1BAAIAABpACRNb3J0YWwxMDYEAAgAAGoAJE1vcnRhbDEwNwQACAAAawAkTW9ydGFsMTA4BAAIAABsACRNb3J0YWwxMDkEAAgAAG0AJE1vcnRhbDExMAQACAAAbgAkTW9ydGFsMTExBAAIAABvACRNb3J0YWwxMTIEAAgAAHAAJE1vcnRhbDExMwQACAAAcQAkTW9ydGFsMTE0BAAIAAByACRNb3J0YWwxMTUEAAgAAHMAJE1vcnRhbDExNgQACAAAdAAkTW9ydGFsMTE3BAAIAAB1ACRNb3J0YWwxMTgEAAgAAHYAJE1vcnRhbDExOQQACAAAdwAkTW9ydGFsMTIwBAAIAAB4ACRNb3J0YWwxMjEEAAgAAHkAJE1vcnRhbDEyMgQACAAAegAkTW9ydGFsMTIzBAAIAAB7ACRNb3J0YWwxMjQEAAgAAHwAJE1vcnRhbDEyNQQACAAAfQAkTW9ydGFsMTI2BAAIAAB+ACRNb3J0YWwxMjcEAAgAAH8AJE1vcnRhbDEyOAQACAAAgAAkTW9ydGFsMTI5BAAIAACBACRNb3J0YWwxMzAEAAgAAIIAJE1vcnRhbDEzMQQACAAAgwAkTW9ydGFsMTMyBAAIAACEACRNb3J0YWwxMzMEAAgAAIUAJE1vcnRhbDEzNAQACAAAhgAkTW9ydGFsMTM1BAAIAACHACRNb3J0YWwxMzYEAAgAAIgAJE1vcnRhbDEzNwQACAAAiQAkTW9ydGFsMTM4BAAIAACKACRNb3J0YWwxMzkEAAgAAIsAJE1vcnRhbDE0MAQACAAAjAAkTW9ydGFsMTQxBAAIAACNACRNb3J0YWwxNDIEAAgAAI4AJE1vcnRhbDE0MwQACAAAjwAkTW9ydGFsMTQ0BAAIAACQACRNb3J0YWwxNDUEAAgAAJEAJE1vcnRhbDE0NgQACAAAkgAkTW9ydGFsMTQ3BAAIAACTACRNb3J0YWwxNDgEAAgAAJQAJE1vcnRhbDE0OQQACAAAlQAkTW9ydGFsMTUwBAAIAACWACRNb3J0YWwxNTEEAAgAAJcAJE1vcnRhbDE1MgQACAAAmAAkTW9ydGFsMTUzBAAIAACZACRNb3J0YWwxNTQEAAgAAJoAJE1vcnRhbDE1NQQACAAAmwAkTW9ydGFsMTU2BAAIAACcACRNb3J0YWwxNTcEAAgAAJ0AJE1vcnRhbDE1OAQACAAAngAkTW9ydGFsMTU5BAAIAACfACRNb3J0YWwxNjAEAAgAAKAAJE1vcnRhbDE2MQQACAAAoQAkTW9ydGFsMTYyBAAIAACiACRNb3J0YWwxNjMEAAgAAKMAJE1vcnRhbDE2NAQACAAApAAkTW9ydGFsMTY1BAAIAAClACRNb3J0YWwxNjYEAAgAAKYAJE1vcnRhbDE2NwQACAAApwAkTW9ydGFsMTY4BAAIAACoACRNb3J0YWwxNjkEAAgAAKkAJE1vcnRhbDE3MAQACAAAqgAkTW9ydGFsMTcxBAAIAACrACRNb3J0YWwxNzIEAAgAAKwAJE1vcnRhbDE3MwQACAAArQAkTW9ydGFsMTc0BAAIAACuACRNb3J0YWwxNzUEAAgAAK8AJE1vcnRhbDE3NgQACAAAsAAkTW9ydGFsMTc3BAAIAACxACRNb3J0YWwxNzgEAAgAALIAJE1vcnRhbDE3OQQACAAAswAkTW9ydGFsMTgwBAAIAAC0ACRNb3J0YWwxODEEAAgAALUAJE1vcnRhbDE4MgQACAAAtgAkTW9ydGFsMTgzBAAIAAC3ACRNb3J0YWwxODQEAAgAALgAJE1vcnRhbDE4NQQACAAAuQAkTW9ydGFsMTg2BAAIAAC6ACRNb3J0YWwxODcEAAgAALsAJE1vcnRhbDE4OAQACAAAvAAkTW9ydGFsMTg5BAAIAAC9ACRNb3J0YWwxOTAEAAgAAL4AJE1vcnRhbDE5MQQACAAAvwAkTW9ydGFsMTkyBAAIAADAACRNb3J0YWwxOTMEAAgAAMEAJE1vcnRhbDE5NAQACAAAwgAkTW9ydGFsMTk1BAAIAADDACRNb3J0YWwxOTYEAAgAAMQAJE1vcnRhbDE5NwQACAAAxQAkTW9ydGFsMTk4BAAIAADGACRNb3J0YWwxOTkEAAgAAMcAJE1vcnRhbDIwMAQACAAAyAAkTW9ydGFsMjAxBAAIAADJACRNb3J0YWwyMDIEAAgAAMoAJE1vcnRhbDIwMwQACAAAywAkTW9ydGFsMjA0BAAIAADMACRNb3J0YWwyMDUEAAgAAM0AJE1vcnRhbDIwNgQACAAAzgAkTW9ydGFsMjA3BAAIAADPACRNb3J0YWwyMDgEAAgAANAAJE1vcnRhbDIwOQQACAAA0QAkTW9ydGFsMjEwBAAIAADSACRNb3J0YWwyMTEEAAgAANMAJE1vcnRhbDIxMgQACAAA1AAkTW9ydGFsMjEzBAAIAADVACRNb3J0YWwyMTQEAAgAANYAJE1vcnRhbDIxNQQACAAA1wAkTW9ydGFsMjE2BAAIAADYACRNb3J0YWwyMTcEAAgAANkAJE1vcnRhbDIxOAQACAAA2gAkTW9ydGFsMjE5BAAIAADbACRNb3J0YWwyMjAEAAgAANwAJE1vcnRhbDIyMQQACAAA3QAkTW9ydGFsMjIyBAAIAADeACRNb3J0YWwyMjMEAAgAAN8AJE1vcnRhbDIyNAQACAAA4AAkTW9ydGFsMjI1BAAIAADhACRNb3J0YWwyMjYEAAgAAOIAJE1vcnRhbDIyNwQACAAA4wAkTW9ydGFsMjI4BAAIAADkACRNb3J0YWwyMjkEAAgAAOUAJE1vcnRhbDIzMAQACAAA5gAkTW9ydGFsMjMxBAAIAADnACRNb3J0YWwyMzIEAAgAAOgAJE1vcnRhbDIzMwQACAAA6QAkTW9ydGFsMjM0BAAIAADqACRNb3J0YWwyMzUEAAgAAOsAJE1vcnRhbDIzNgQACAAA7AAkTW9ydGFsMjM3BAAIAADtACRNb3J0YWwyMzgEAAgAAO4AJE1vcnRhbDIzOQQACAAA7wAkTW9ydGFsMjQwBAAIAADwACRNb3J0YWwyNDEEAAgAAPEAJE1vcnRhbDI0MgQACAAA8gAkTW9ydGFsMjQzBAAIAADzACRNb3J0YWwyNDQEAAgAAPQAJE1vcnRhbDI0NQQACAAA9QAkTW9ydGFsMjQ2BAAIAAD2ACRNb3J0YWwyNDcEAAgAAPcAJE1vcnRhbDI0OAQACAAA+AAkTW9ydGFsMjQ5BAAIAAD5ACRNb3J0YWwyNTAEAAgAAPoAJE1vcnRhbDI1MQQACAAA+wAkTW9ydGFsMjUyBAAIAAD8ACRNb3J0YWwyNTMEAAgAAP0AJE1vcnRhbDI1NAQACAAA/gAkTW9ydGFsMjU1BAAIAAD/AACJBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABACkASBUOjpOb25jZQAAjQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAACRBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwtAEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWRJAQFIT3B0aW9uPFQ6OkFzc2V0SWQ+AACVBwikY3VtdWx1c19wcmltaXRpdmVzX3N0b3JhZ2Vfd2VpZ2h0X3JlY2xhaW1QU3RvcmFnZVdlaWdodFJlY2xhaW0EBFQAAAAAmQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2RlnQcBEE1vZGUAAJ0HCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAAoQcIZGFzc2V0X2h1Yl93ZXN0ZW5kX3J1bnRpbWUcUnVudGltZQAAAAClBwhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAwAQx1NjQAAKkHEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgGtByRFeHRyaW5zaWMBsQcACAEYaGVhZGVyrQcBGEhlYWRlcgABKGV4dHJpbnNpY3O1BwE4VmVjPEV4dHJpbnNpYz4AAK0HEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyARAQSGFzaAAAFAEscGFyZW50X2hhc2g0ATBIYXNoOjpPdXRwdXQAARhudW1iZXKkARhOdW1iZXIAAShzdGF0ZV9yb290NAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290NAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0PAEYRGlnZXN0AACxBxAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAc0DEENhbGwBeQUkU2lnbmF0dXJlAeUFFEV4dHJhAW0HAAQAOAAAALUHAAACsQcAuQcIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAvQcIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAOAEcVmVjPHU4PgAAwQcEGE9wdGlvbgQEVAG9BwEIEE5vbmUAAAAQU29tZQQAvQcAAAEAAMUHBBhSZXN1bHQIBFQB8QEERQHJBwEICE9rBADxAQAAAAAMRXJyBADJBwAAAQAAyQcMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAM0HAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQA0QcBSFVua25vd25UcmFuc2FjdGlvbgABAADNBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AASwQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAgBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAADRBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAIAQh1OAACAADVBwgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YdkHAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AADZBwQgQlRyZWVNYXAIBEsBHQEEVgE4AAQA3QcAAADdBwAAAuEHAOEHAAAECB0BOADlBwgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5IAEQYm9vbAABLGZhdGFsX2Vycm9yIAEQYm9vbAABGGVycm9yc9UHATBJbmhlcmVudERhdGEAAOkHDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAA7QcEGFJlc3VsdAgEVAHxBwRFAckHAQgIT2sEAPEHAAAAAAxFcnIEAMkHAAABAADxBwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eTABTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlc60CAUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXOtAgFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eTABUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlIAEQYm9vbAAA9QcEGE9wdGlvbgQEVAH5BwEIEE5vbmUAAAAQU29tZQQA+QcAAAEAAPkHAAAC/QcA/QcAAAQIOA0EAAEIBBhPcHRpb24EBFQBBQgBCBBOb25lAAAAEFNvbWUEAAUIAAABAAAFCAAABAgYGAAJCAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXNMUnVudGltZURpc3BhdGNoSW5mbwgcQmFsYW5jZQEYGFdlaWdodAEoAAwBGHdlaWdodCgBGFdlaWdodAABFGNsYXNzYAE0RGlzcGF0Y2hDbGFzcwABLHBhcnRpYWxfZmVlGAEcQmFsYW5jZQAADQgMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBGAAIATRpbmNsdXNpb25fZmVlEQgBdE9wdGlvbjxJbmNsdXNpb25GZWU8QmFsYW5jZT4+AAEMdGlwGAEcQmFsYW5jZQAAEQgEGE9wdGlvbgQEVAEVCAEIEE5vbmUAAAAQU29tZQQAFQgAAAEAABUIDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlczBJbmNsdXNpb25GZWUEHEJhbGFuY2UBGAAMASBiYXNlX2ZlZRgBHEJhbGFuY2UAARxsZW5fZmVlGAEcQmFsYW5jZQABTGFkanVzdGVkX3dlaWdodF9mZWUYARxCYWxhbmNlAAAZCAQYUmVzdWx0CARUAR0IBEUBIQgBCAhPawQAHQgAAAAADEVycgQAIQgAAAEAAB0IAAACsQQAIQgMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAAlCAQYUmVzdWx0CARUASgERQEhCAEICE9rBAAoAAAAAAxFcnIEACEIAAABAAApCAQYUmVzdWx0CARUARgERQEhCAEICE9rBAAYAAAAAAxFcnIEACEIAAABAAAtCAQYUmVzdWx0CARUAWkBBEUBIQgBCAhPawQAaQEAAAAADEVycgQAIQgAAAEAADEIBBhSZXN1bHQIBFQBNQgERQFZCAEICE9rBAA1CAAAAAAMRXJyBABZCAAAAQAANQgMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBVAAQAUBleGVjdXRpb25fcmVzdWx0OQgBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAE4ZW1pdHRlZF9ldmVudHNFCAEoVmVjPEV2ZW50PgABJGxvY2FsX3hjbUkIAWBPcHRpb248VmVyc2lvbmVkWGNtPCgpPj4AAThmb3J3YXJkZWRfeGNtc00IAbxWZWM8KFZlcnNpb25lZExvY2F0aW9uLCBWZWM8VmVyc2lvbmVkWGNtPCgpPj4pPgAAOQgEGFJlc3VsdAgEVAE9CARFAUEIAQgIT2sEAD0IAAAAAAxFcnIEAEEIAAABAAA9CAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0vQIBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWVkARBQYXlzAABBCAgoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAT0IAAgBJHBvc3RfaW5mbz0IARBJbmZvAAEUZXJyb3JoATREaXNwYXRjaEVycm9yAABFCAAAAlQASQgEGE9wdGlvbgQEVAHVBAEIEE5vbmUAAAAQU29tZQQA1QQAAAEAAE0IAAACUQgAUQgAAAQIzQFVCABVCAAAAtUEAFkIDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAF0IBBhSZXN1bHQIBFQBYQgERQFZCAEICE9rBABhCAAAAAAMRXJyBABZCAAAAQAAYQgMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAFUAAwBQGV4ZWN1dGlvbl9yZXN1bHTwARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHNFCAEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zTQgBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABlCAQYUmVzdWx0CARUAQAERQFpCAEICE9rBAAAAAAAAAxFcnIEAGkIAAABAABpCAxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAG0IBBhSZXN1bHQIBFQBaQEERQFxCAEICE9rBABpAQAAAAAMRXJyBABxCAAAAQAAcQgMNGFzc2V0c19jb21tb24scnVudGltZV9hcGlQRnVuZ2libGVzQWNjZXNzRXJyb3IAAQhcQXNzZXRJZENvbnZlcnNpb25GYWlsZWQAAAB8QW1vdW50VG9CYWxhbmNlQ29udmVyc2lvbkZhaWxlZAABAAB1CAhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmU0Q29sbGF0aW9uSW5mbwAAGAE8dXB3YXJkX21lc3NhZ2VzrQIBSFZlYzxVcHdhcmRNZXNzYWdlPgABTGhvcml6b250YWxfbWVzc2FnZXNRAwFgVmVjPE91dGJvdW5kSHJtcE1lc3NhZ2U+AAFMbmV3X3ZhbGlkYXRpb25fY29kZXkIAYxPcHRpb248cmVsYXlfY2hhaW46OlZhbGlkYXRpb25Db2RlPgABbHByb2Nlc3NlZF9kb3dud2FyZF9tZXNzYWdlcxABDHUzMgABOGhybXBfd2F0ZXJtYXJrEAFgcmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyAAEkaGVhZF9kYXRhEQMBIEhlYWREYXRhAAB5CAQYT3B0aW9uBARUAX0IAQgQTm9uZQAAABBTb21lBAB9CAAAAQAAfQgMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAOAEcVmVjPHU4PgAAgQgEGFJlc3VsdAgEVAH1AQRFAZkCAQgIT2sEAPUBAAAAAAxFcnIEAJkCAAABAACFCAQYT3B0aW9uBARUAZkCAQgQTm9uZQAAABBTb21lBACZAgAAAQAAiQgAAAKZAgCNCAhkYXNzZXRfaHViX3dlc3RlbmRfcnVudGltZTBSdW50aW1lRXJyb3IAAVwYU3lzdGVtBADdAgFwZnJhbWVfc3lzdGVtOjpFcnJvcjxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAH0DAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFcnJvcjxSdW50aW1lPgABACBCYWxhbmNlcwQA2QMBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ACgBEQ29sbGF0b3JTZWxlY3Rpb24EAPUDAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFcnJvcjxSdW50aW1lPgAVABxTZXNzaW9uBAAVBAF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAVQQBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkVycm9yPFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBABJBQFocGFsbGV0X3hjbTo6RXJyb3I8UnVudGltZT4AHwAwTWVzc2FnZVF1ZXVlBABtBQGQcGFsbGV0X21lc3NhZ2VfcXVldWU6OkVycm9yPFJ1bnRpbWU+ACMAHFV0aWxpdHkEADkGAXhwYWxsZXRfdXRpbGl0eTo6RXJyb3I8UnVudGltZT4AKAAgTXVsdGlzaWcEAEkGAXxwYWxsZXRfbXVsdGlzaWc6OkVycm9yPFJ1bnRpbWU+ACkAFFByb3h5BABtBgFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAqABhBc3NldHMEAJkGAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEAMEGAXhwYWxsZXRfdW5pcXVlczo6RXJyb3I8UnVudGltZT4AMwAQTmZ0cwQAFQcBbHBhbGxldF9uZnRzOjpFcnJvcjxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAApBwHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AFBOZnRGcmFjdGlvbmFsaXphdGlvbgQANQcBsHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb246OkVycm9yPFJ1bnRpbWU+ADYAKFBvb2xBc3NldHMEAEEHAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADcAPEFzc2V0Q29udmVyc2lvbgQASQcBnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFcnJvcjxSdW50aW1lPgA4ADRBc3NldHNGcmVlemVyBABdBwEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTE+ADkAUEZvcmVpZ25Bc3NldHNGcmVlemVyBABhBwEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTI+ADoARFBvb2xBc3NldHNGcmVlemVyBABlBwEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTM+ADsASFN0YXRlVHJpZU1pZ3JhdGlvbgQAfQIBrHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6RXJyb3I8UnVudGltZT4ARgBgQXNzZXRDb252ZXJzaW9uTWlncmF0aW9uBABpBwGscGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fb3BzOjpFcnJvcjxSdW50aW1lPgDIAACAGFN5c3RlbQEYU3lzdGVtSBxBY2NvdW50AQEEAgAMQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELjhFeHRyaW5zaWNDb3VudAAAEAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suQEluaGVyZW50c0FwcGxpZWQBACAEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4sQmxvY2tXZWlnaHQBACQYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suQEFsbEV4dHJpbnNpY3NMZW4AABAEAARBASBUb3RhbCBsZW5ndGggKGluIGJ5dGVzKSBmb3IgYWxsIGV4dHJpbnNpY3MgcHV0IHRvZ2V0aGVyLCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suJEJsb2NrSGFzaAEBBAUQNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy40RXh0cmluc2ljRGF0YQEBBAUQOAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLhhOdW1iZXIBABAQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLihQYXJlbnRIYXNoAQA0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suGERpZ2VzdAEAPAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4YRXZlbnRzAQBMBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLihFdmVudENvdW50AQAQEAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4sRXZlbnRUb3BpY3MBAQQCNI0CBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC5ITGFzdFJ1bnRpbWVVcGdyYWRlAACVAgQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLlRVcGdyYWRlZFRvVTMyUmVmQ291bnQBACAEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAIAQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LjhFeGVjdXRpb25QaGFzZQAAhQIEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLkRBdXRob3JpemVkVXBncmFkZQAAnQIEAAS4IGBTb21lYCBpZiBhIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBhdXRob3JpemVkLgGhAgFYGDBCbG9ja1dlaWdodHOxAokBBwDyBSoBAAsAIEqp0QECAEABAmXNHQABC8BWDe9FAQIA4AABCwCY9z5dAQIA8AABAAACZc0dAAELwN5fWboBAgAwAQELACBKqdEBAgBAAQEHAIhSanQCAFAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4sQmxvY2tMZW5ndGjBAjAAADwAAABQAAAAUAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLjhCbG9ja0hhc2hDb3VudBAQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4gRGJXZWlnaHTJAkBAeH0BAAAAAADh9QUAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuHFZlcnNpb27NAiEEIHdlc3RtaW50IHdlc3RtaW50AQAAAMCADwAAAAAATN1xjVzFMmLUAQAAANe92KJyyg1lAQAAAN9qy2iZB2CbBQAAADfjl/x8kfXkAgAAAED+OtQB+JWaBgAAANK8mJfu0I8VAwAAAPeLJ4vlP0VMAgAAAKs8BXIpH+uLAQAAALydiZBPW5I/AQAAAImaJQy+hPJQAQAAAIqAR6U6gnfsAQAAADfIuxNQqaKoBAAAAG/1LuhY5sW9AQAAAJGxyLFjKOuSAQAAAJ/7UFqnONacAQAAAPP/FNWrUnBZAwAAAN6SuKBCa5v2AgAAAOqT4/FvPWliAgAAAPvFd7nXR+/WAQAAABAAAAABBIQgR2V0IHRoZSBjaGFpbidzIGluLWNvZGUgdmVyc2lvbi4oU1M1OFByZWZpeAkCCCoAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgHdAgAAPFBhcmFjaGFpblN5c3RlbQE8UGFyYWNoYWluU3lzdGVtYERVbmluY2x1ZGVkU2VnbWVudAEA4QIEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC5sQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AAAJAwQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuVFBlbmRpbmdWYWxpZGF0aW9uQ29kZQEAOAQAGFkBIEluIGNhc2Ugb2YgYSBzY2hlZHVsZWQgdXBncmFkZSwgdGhpcyBzdG9yYWdlIGZpZWxkIGNvbnRhaW5zIHRoZSB2YWxpZGF0aW9uIGNvZGUgdG8gYmUkIGFwcGxpZWQuAD0BIEFzIHNvb24gYXMgdGhlIHJlbGF5IGNoYWluIGdpdmVzIHVzIHRoZSBnby1haGVhZCBzaWduYWwsIHdlIHdpbGwgb3ZlcndyaXRlIHRoZXEBIFtgOmNvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OkNPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZSBuZXh0IGJsb2NrIHByb2Nlc3MJASB3aXRoIHRoZSBuZXcgdmFsaWRhdGlvbiBjb2RlLiBUaGlzIGNvbmNsdWRlcyB0aGUgdXBncmFkZSBwcm9jZXNzLkROZXdWYWxpZGF0aW9uQ29kZQAAOAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuOFZhbGlkYXRpb25EYXRhAAANAwQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suLQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIHBlciBibG9jayBhbmQgaXQncyBuZXZlciBzdG9yZWQ0IGluIHRoZSB0cmllLlBEaWRTZXRWYWxpZGF0aW9uQ29kZQEAIAQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluP2RMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQAQEAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLmBVcGdyYWRlUmVzdHJpY3Rpb25TaWduYWwBABUDBAAcdQEgQW4gb3B0aW9uIHdoaWNoIGluZGljYXRlcyBpZiB0aGUgcmVsYXktY2hhaW4gcmVzdHJpY3RzIHNpZ25hbGxpbmcgYSB2YWxpZGF0aW9uIGNvZGUgdXBncmFkZS5hASBJbiBvdGhlciB3b3JkcywgaWYgdGhpcyBpcyBgU29tZWAgYW5kIFtgTmV3VmFsaWRhdGlvbkNvZGVgXSBpcyBgU29tZWAgdGhlbiB0aGUgcHJvZHVjZWRsIGNhbmRpZGF0ZSB3aWxsIGJlIGludmFsaWQuAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuOFVwZ3JhZGVHb0FoZWFkAQABAwQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuPFJlbGF5U3RhdGVQcm9vZgAAHQMEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAACUDBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLkRIb3N0Q29uZmlndXJhdGlvbgAAOQMEABgpASBUaGUgcGFyYWNoYWluIGhvc3QgY29uZmlndXJhdGlvbiB0aGF0IHdhcyBvYnRhaW5lZCBmcm9tIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy44TGFzdERtcU1xY0hlYWQBAEEDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuQExhc3RIcm1wTXFjSGVhZHMBAEUDBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuZFByb2Nlc3NlZERvd253YXJkTWVzc2FnZXMBABAQAAAAAAzIIE51bWJlciBvZiBkb3dud2FyZCBtZXNzYWdlcyBwcm9jZXNzZWQgaW4gYSBibG9jay4A7CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2suNEhybXBXYXRlcm1hcmsBABAQAAAAAAygIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay5QSHJtcE91dGJvdW5kTWVzc2FnZXMBAFEDBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLjhVcHdhcmRNZXNzYWdlcwEArQIEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay5UUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQCtAgQABDEBIFVwd2FyZCBtZXNzYWdlcyB0aGF0IGFyZSBzdGlsbCBwZW5kaW5nIGFuZCBub3QgeWV0IHNlbmQgdG8gdGhlIHJlbGF5IGNoYWluLlxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEA2QFAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuhEFubm91bmNlZEhybXBNZXNzYWdlc1BlckNhbmRpZGF0ZQEAEBAAAAAACGUBIFRoZSBudW1iZXIgb2YgSFJNUCBtZXNzYWdlcyB3ZSBvYnNlcnZlZCBpbiBgb25faW5pdGlhbGl6ZWAgYW5kIHRodXMgdXNlZCB0aGF0IG51bWJlciBmb3LwIGFubm91bmNpbmcgdGhlIHdlaWdodCBvZiBgb25faW5pdGlhbGl6ZWAgYW5kIGBvbl9maW5hbGl6ZWAuaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAAoBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LmRSZXNlcnZlZERtcFdlaWdodE92ZXJyaWRlAAAoBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAOAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgFZAwF8BChTZWxmUGFyYUlk5QEQ6AMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgF9AwEAJFRpbWVzdGFtcAEkVGltZXN0YW1wCAxOb3cBADAgAAAAAAAAAAAEoCBUaGUgY3VycmVudCB0aW1lIGZvciB0aGUgY3VycmVudCBibG9jay4kRGlkVXBkYXRlAQAgBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgGBAwAENE1pbmltdW1QZXJpb2QwIAAAAAAAAAAAGIwgVGhlIG1pbmltdW0gcGVyaW9kIGJldHdlZW4gYmxvY2tzLgBNASBCZSBhd2FyZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSAqZXhwZWN0ZWQqIHBlcmlvZCB0aGF0IHRoZSBibG9jayBwcm9kdWN0aW9uSQEgYXBwYXJhdHVzIHByb3ZpZGVzLiBZb3VyIGNob3NlbiBjb25zZW5zdXMgc3lzdGVtIHdpbGwgZ2VuZXJhbGx5IHdvcmsgd2l0aCB0aGlzIHRvYQEgZGV0ZXJtaW5lIGEgc2Vuc2libGUgYmxvY2sgdGltZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBBdXJhIHBhbGxldCBpdCB3aWxsIGJlIGRvdWJsZSB0aGlzcCBwZXJpb2Qgb24gZGVmYXVsdCBzZXR0aW5ncy4AAwA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAOUBEGQAAAAAAYUDAAAABAAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQAYQAAAAAAAAAAAAAAAAAAAAAAEmCBUaGUgdG90YWwgdW5pdHMgaXNzdWVkIGluIHRoZSBzeXN0ZW0uQEluYWN0aXZlSXNzdWFuY2UBABhAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLhxBY2NvdW50AQEEAgAUAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuFExvY2tzAQEEAgCJAwQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AgUmVzZXJ2ZXMBAQQCAJkDBAAMpCBOYW1lZCByZXNlcnZlcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gFEhvbGRzAQEEAgClAwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4cRnJlZXplcwEBBAIAvQMEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgHJAwGEEEhFeGlzdGVudGlhbERlcG9zaXQYQADKmjsAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhIE1heExvY2tzEBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYCxNYXhSZXNlcnZlcxAQMgAAAAwNASBUaGUgbWF4aW11bSBudW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudC4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AoTWF4RnJlZXplcxAQAAAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4B2QMKAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAhETmV4dEZlZU11bHRpcGxpZXIBANkBQAAAZKeztuANAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQDdAwQAAAABjARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyCAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgALADhBc3NldFR4UGF5bWVudAAAAZAAAA0AKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAAAAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAABQARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEA4QMEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuNENhbmRpZGF0ZUxpc3QBAOUDBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLkRMYXN0QXV0aG9yZWRCbG9jawEBBAUAEBAAAAAABIQgTGFzdCBibG9jayBhdXRob3JlZCBieSBjb2xsYXRvci5ERGVzaXJlZENhbmRpZGF0ZXMBABAQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuNENhbmRpZGFjeUJvbmQBABhAAAAAAAAAAAAAAAAAAAAAAAy4IEZpeGVkIGFtb3VudCB0byBkZXBvc2l0IHRvIGJlY29tZSBhIGNvbGxhdG9yLgBBASBXaGVuIGEgY29sbGF0b3IgY2FsbHMgYGxlYXZlX2ludGVudGAgdGhleSBpbW1lZGlhdGVseSByZWNlaXZlIHRoZSBkZXBvc2l0IGJhY2suAfEDAdwAAfUDFQAcU2Vzc2lvbgEcU2Vzc2lvbhwoVmFsaWRhdG9ycwEA4AQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuMEN1cnJlbnRJbmRleAEAEBAAAAAABHggQ3VycmVudCBpbmRleCBvZiB0aGUgc2Vzc2lvbi40UXVldWVkQ2hhbmdlZAEAIAQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuKFF1ZXVlZEtleXMBAPkDBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuSERpc2FibGVkVmFsaWRhdG9ycwEAGQIEABSAIEluZGljZXMgb2YgZGlzYWJsZWQgdmFsaWRhdG9ycy4APQEgVGhlIHZlYyBpcyBhbHdheXMga2VwdCBzb3J0ZWQgc28gdGhhdCB3ZSBjYW4gZmluZCB3aGV0aGVyIGEgZ2l2ZW4gdmFsaWRhdG9yIGlzPQEgZGlzYWJsZWQgdXNpbmcgYmluYXJ5IHNlYXJjaC4gSXQgZ2V0cyBjbGVhcmVkIHdoZW4gYG9uX3Nlc3Npb25fZW5kaW5nYCByZXR1cm5zZCBhIG5ldyBzZXQgb2YgaWRlbnRpdGllcy4gTmV4dEtleXMAAQQFAAEEBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlPd25lcgABBAUJBAAEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgERBAHkAAEVBBYAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQAZBAQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4sQ3VycmVudFNsb3QBACEEIAAAAAAAAAAADIAgVGhlIGN1cnJlbnQgc2xvdCBvZiB0aGlzIGJsb2NrLgCUIFRoaXMgd2lsbCBiZSBzZXQgaW4gYG9uX2luaXRpYWxpemVgLgAABDBTbG90RHVyYXRpb24wIHAXAAAAAAAAEA0BIFRoZSBzbG90IGR1cmF0aW9uIEF1cmEgc2hvdWxkIHJ1biB3aXRoLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLj0BIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIHNob3VsZCBub3QgY2hhbmdlIHdoaWxlIHRoZSBjaGFpbiBpcyBydW5uaW5nLgA1ASBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZWl0aGVyIHVzZSBbYE1pbmltdW1QZXJpb2RUaW1lc1R3b2BdIG9yIGEgY29uc3QuABcAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQAZBAQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLiBTbG90SW5mbwAAJQQEAAzYIEN1cnJlbnQgc2xvdCBwYWlyZWQgd2l0aCBhIG51bWJlciBvZiBhdXRob3JlZCBibG9ja3MuAJggVXBkYXRlZCBvbiBlYWNoIGJsb2NrIGluaXRpYWxpemF0aW9uLgAAAAAYACRYY21wUXVldWUBJFhjbXBRdWV1ZRxQSW5ib3VuZFhjbXBTdXNwZW5kZWQBACkEBAAgDQEgVGhlIHN1c3BlbmRlZCBpbmJvdW5kIFhDTVAgY2hhbm5lbHMuIEFsbCBvdGhlcnMgYXJlIG5vdCBzdXNwZW5kZWQuAHEBIFRoaXMgaXMgYSBgU3RvcmFnZVZhbHVlYCBpbnN0ZWFkIG9mIGEgYFN0b3JhZ2VNYXBgIHNpbmNlIHdlIGV4cGVjdCBtdWx0aXBsZSByZWFkcyBwZXIgYmxvY2tpASB0byBkaWZmZXJlbnQga2V5cyB3aXRoIGEgb25lIGJ5dGUgcGF5bG9hZC4gVGhlIGFjY2VzcyB0byBgQm91bmRlZEJUcmVlU2V0YCB3aWxsIGJlIGNhY2hlZBUBIHdpdGhpbiB0aGUgYmxvY2sgYW5kIHRoZXJlZm9yZSBvbmx5IGluY2x1ZGVkIG9uY2UgaW4gdGhlIHByb29mIHNpemUuAGUBIE5PVEU6IFRoZSBQb1YgYmVuY2htYXJraW5nIGNhbm5vdCBrbm93IHRoaXMgYW5kIHdpbGwgb3Zlci1lc3RpbWF0ZSwgYnV0IHRoZSBhY3R1YWwgcHJvb2ZEIHdpbGwgYmUgc21hbGxlci5IT3V0Ym91bmRYY21wU3RhdHVzAQA1BAQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LlBPdXRib3VuZFhjbXBNZXNzYWdlcwEBCAIFRQRJBAQABLwgVGhlIG1lc3NhZ2VzIG91dGJvdW5kIGluIGEgZ2l2ZW4gWENNUCBjaGFubmVsLjhTaWduYWxNZXNzYWdlcwEBBALlAUkEBAAEoCBBbnkgc2lnbmFsIG1lc3NhZ2VzIHdhaXRpbmcgdG8gYmUgc2VudC4sUXVldWVDb25maWcBAE0EMCAAAAAwAAAACAAAAAQVASBUaGUgY29uZmlndXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgZHluYW1pY3Mgb2YgdGhlIG91dGJvdW5kIHF1ZXVlLjhRdWV1ZVN1c3BlbmRlZAEAIAQABEEBIFdoZXRoZXIgb3Igbm90IHRoZSBYQ01QIHF1ZXVlIGlzIHN1c3BlbmRlZCBmcm9tIGV4ZWN1dGluZyBpbmNvbWluZyBYQ01zIG9yIG5vdC5ERGVsaXZlcnlGZWVGYWN0b3IBAQQF5QHZAUAAAGSns7bgDQAAAAAAAAAABMQgVGhlIGZhY3RvciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAVEEAegMTE1heEluYm91bmRTdXNwZW5kZWQQEOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHMQEIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuLE1heFBhZ2VTaXplEBAAnAEAFLggVGhlIG1heGltYWwgcGFnZSBzaXplIGZvciBIUk1QIG1lc3NhZ2UgcGFnZXMuAGEBIEEgbG93ZXIgbGltaXQgY2FuIGJlIHNldCBkeW5hbWljYWxseSwgYnV0IHRoaXMgaXMgdGhlIGhhcmQtbGltaXQgZm9yIHRoZSBQb1Ygd29yc3QgY2FzZVUBIGJlbmNobWFya2luZy4gVGhlIGxpbWl0IGZvciB0aGUgc2l6ZSBvZiBhIG1lc3NhZ2UgaXMgc2xpZ2h0bHkgYmVsb3cgdGhpcywgc2luY2Ugc29tZbggb3ZlcmhlYWQgaXMgaW5jdXJyZWQgZm9yIGVuY29kaW5nIHRoZSBmb3JtYXQuAVUEHgAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtODBRdWVyeUNvdW50ZXIBADAgAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4cUXVlcmllcwABBAIwWQQEAARUIFRoZSBvbmdvaW5nIHF1ZXJpZXMuKEFzc2V0VHJhcHMBAQQGNBAQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLjhTYWZlWGNtVmVyc2lvbgAAEAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLkBTdXBwb3J0ZWRWZXJzaW9uAAEIBQKRBBAEAATwIFRoZSBMYXRlc3QgdmVyc2lvbnMgdGhhdCB3ZSBrbm93IHZhcmlvdXMgbG9jYXRpb25zIHN1cHBvcnQuQFZlcnNpb25Ob3RpZmllcnMAAQgFApEEMAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS5QVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFApEElQQEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi5UVmVyc2lvbkRpc2NvdmVyeVF1ZXVlAQCZBAQADGUBIERlc3RpbmF0aW9ucyB3aG9zZSBsYXRlc3QgWENNIHZlcnNpb24gd2Ugd291bGQgbGlrZSB0byBrbm93LiBEdXBsaWNhdGVzIG5vdCBhbGxvd2VkLCBhbmRxASB0aGUgYHUzMmAgY291bnRlciBpcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBzZW5kIHRvIHRoZSBkZXN0aW5hdGlvbiBoYXMgYmVlbiBhdHRlbXB0ZWQsjCB3aGljaCBpcyB1c2VkIGFzIGEgcHJpb3JpdGl6YXRpb24uQEN1cnJlbnRNaWdyYXRpb24AAKUEBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LlRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgKtBLUEBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLjxMb2NrZWRGdW5naWJsZXMAAQQCAMUEBAAE4CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIHRoaXMgY2hhaW4uVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAIAQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci48U2hvdWxkUmVjb3JkWGNtAQAgBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uLFJlY29yZGVkWGNtAAD4BAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgHRBAHsAAFJBR8AKEN1bXVsdXNYY20AAU0FAdEBAAAgAERUb1JvY29jb1hjbVJvdXRlcgFEVG9Sb2NvY29YY21Sb3V0ZXIERERlbGl2ZXJ5RmVlRmFjdG9yAQDZAUAAAGSns7bgDQAAAAAAAAAAeMQgVGhlIG51bWJlciB0byBtdWx0aXBseSB0aGUgYmFzZSBkZWxpdmVyeSBmZWUgYnkuAEkBIFRoaXMgZmFjdG9yIGlzIHNoYXJlZCBieSBhbGwgYnJpZGdlcywgc2VydmVkIGJ5IHRoaXMgcGFsbGV0LiBGb3IgZXhhbXBsZSwgaWYgdGhpc+AgY2hhaW4gKGBDb25maWc6OlVuaXZlcnNhbExvY2F0aW9uYCkgb3BlbnMgdHdvIGJyaWRnZXMgKDEBIGBYMihHbG9iYWxDb25zZW5zdXMoQ29uZmlnOjpCcmlkZ2VkTmV0d29ya0lkOjpnZXQoKSksIFBhcmFjaGFpbigxMDAwKSlgIGFuZFEBIGBYMihHbG9iYWxDb25zZW5zdXMoQ29uZmlnOjpCcmlkZ2VkTmV0d29ya0lkOjpnZXQoKSksIFBhcmFjaGFpbigyMDAwKSlgKSwgdGhlbiB0aGV5TQEgYm90aCB3aWxsIGJlIHNoYXJpbmcgdGhlIHNhbWUgZmVlIGZhY3Rvci4gVGhpcyBpcyBiZWNhdXNlIGJvdGggYnJpZGdlcyBhcmUgc2hhcmluZ0UBIHRoZSBzYW1lIGxvY2FsIFhDTSBjaGFubmVsIHdpdGggdGhlIGNoaWxkL3NpYmxpbmcgYnJpZGdlIGh1Yiwgd2hpY2ggd2UgYXJlIHVzaW5nWCB0byBkZXRlY3QgY29uZ2VzdGlvbjoANCBgYGBub2NvbXBpbGX8ICBUaGlzQ2hhaW4gLS0tIExvY2FsIFhDTSBjaGFubmVsIC0tPiBTaWJsaW5nIEJyaWRnZSBIdWIgLS0tLS0tBQEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAUBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwFASAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8DQEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYW5lMSAgICAgICAgICAgICAgIExhbmUyBQEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfAUBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwFASAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8BQEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCAvICAgICAgICAgICAgICAgICAgfAUBICBQYXJhY2hhaW4xICA8LS0gTG9jYWwgWENNIGNoYW5uZWwgLS0tIFJlbW90ZSBCcmlkZ2UgSHViIDwtLS0tLS20ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8tCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfLQgIFBhcmFjaGFpbjEgIDwtLSBMb2NhbCBYQ00gY2hhbm5lbCAtLS0tLS0tLS0QIGBgYABNASBJZiBhdCBsZWFzdCBvbmUgb2Ygb3RoZXIgY2hhbm5lbHMgaXMgY29uZ2VzdGVkLCB0aGUgbG9jYWwgWENNIGNoYW5uZWwgd2l0aCBzaWJsaW5nUQEgYnJpZGdlIGh1YiBldmVudHVhbGx5IGJlY29tZXMgY29uZ2VzdGVkIHRvby4gQW5kIHdlIGhhdmUgbm8gbWVhbnMgdG8gZGV0ZWN0IC0gd2hpY2g9ASBicmlkZ2UgZXhhY3RseSBjYXVzZXMgdGhlIGNvbmdlc3Rpb24uIFNvIHRoZSBiZXN0IHNvbHV0aW9uIGhlcmUgaXMgbm90IHRvIG1ha2XwIGFueSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGFsbCBicmlkZ2VzLCBzdGFydGVkIGJ5IHRoaXMgY2hhaW4uAAHVAQAAIgAwTWVzc2FnZVF1ZXVlATBNZXNzYWdlUXVldWUMMEJvb2tTdGF0ZUZvcgEBBAXhAVEFdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMwgVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBhbmQgbGFzdCAobm9uLWVtcHR5KSBwYWdlcy4sU2VydmljZUhlYWQAAOEBBAAEvCBUaGUgb3JpZ2luIGF0IHdoaWNoIHdlIHNob3VsZCBiZWdpbiBzZXJ2aWNpbmcuFFBhZ2VzAAEIBQVdBWEFBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4BaQUB3QEQIEhlYXBTaXplEBAAnAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uIE1heFN0YWxlEBAIAAAADF0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdGFsZSBwYWdlcyAoaS5lLiBvZiBvdmVyd2VpZ2h0IG1lc3NhZ2VzKSBhbGxvd2VkIGJlZm9yZSBjdWxsaW5nUQEgY2FuIGhhcHBlbi4gT25jZSB0aGVyZSBhcmUgbW9yZSBzdGFsZSBwYWdlcyB0aGFuIHRoaXMsIHRoZW4gaGlzdG9yaWNhbCBwYWdlcyBtYXkgYmX8IGRyb3BwZWQsIGV2ZW4gaWYgdGhleSBjb250YWluIHVucHJvY2Vzc2VkIG92ZXJ3ZWlnaHQgbWVzc2FnZXMuNFNlcnZpY2VXZWlnaHS9AiwBBwBYQPuiAgBwABhBASBUaGUgYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB3aGljaCBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yqCBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2luaXRpYWxpemVgLgD8IFRoaXMgbWF5IGJlIGxlZ2l0aW1hdGVseSBgTm9uZWAgaW4gdGhlIGNhc2UgdGhhdCB5b3Ugd2lsbCBjYWxsXQEgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBtYW51YWxseSBvciBzZXQgW2BTZWxmOjpJZGxlTWF4U2VydmljZVdlaWdodGBdIHRvIGhhdmVUIGl0IHJ1biBpbiBgb25faWRsZWAuUElkbGVNYXhTZXJ2aWNlV2VpZ2h0vQIsAQcAWED7ogIAcAAUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4BbQUjABxVdGlsaXR5AAFxBQHtAQRMYmF0Y2hlZF9jYWxsc19saW1pdBAQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuATkGKAAgTXVsdGlzaWcBIE11bHRpc2lnBCRNdWx0aXNpZ3MAAQgFAj0GQQYEAASUIFRoZSBzZXQgb2Ygb3BlbiBtdWx0aXNpZyBvcGVyYXRpb25zLgF9BQH5AQwsRGVwb3NpdEJhc2UYQABHq1YCAAAAAAAAAAAAAAAYWQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbiBvciB0b4Qgc3RvcmUgYSBkaXNwYXRjaCBjYWxsIGZvciBsYXRlci4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzMQEgYDQgKyBzaXplb2YoKEJsb2NrTnVtYmVyLCBCYWxhbmNlLCBBY2NvdW50SWQpKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzgCBgMzIgKyBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuNERlcG9zaXRGYWN0b3IYQAAk9AAAAAAAAAAAAAAAAAAMVQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHVuaXQgdGhyZXNob2xkIHdoZW4gY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24uACUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIG1vcmUgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLjhNYXhTaWduYXRvcmllcxAQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4BSQYpABRQcm94eQEUUHJveHkIHFByb3hpZXMBAQQFAE0GRAAAAAAAAAAAAAAAAAAAAAAACEUBIFRoZSBzZXQgb2YgYWNjb3VudCBwcm94aWVzLiBNYXBzIHRoZSBhY2NvdW50IHdoaWNoIGhhcyBkZWxlZ2F0ZWQgdG8gdGhlIGFjY291bnRzIQEgd2hpY2ggYXJlIGJlaW5nIGRlbGVnYXRlZCB0bywgdG9nZXRoZXIgd2l0aCB0aGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdC40QW5ub3VuY2VtZW50cwEBBAUAXQZEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4BhQUBAQIYQFByb3h5RGVwb3NpdEJhc2UYQAARPVUCAAAAAAAAAAAAAAAQEQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIHByb3h5LgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMlASBgc2l6ZW9mKEJhbGFuY2UpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXMgYHNpemVvZihBY2NvdW50SWQpYCBieXRlcy5IUHJveHlEZXBvc2l0RmFjdG9yGEAgxfsAAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4oTWF4UHJveGllcxAQIAAAAATwIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBwcm94aWVzIGFsbG93ZWQgZm9yIGEgc2luZ2xlIGFjY291bnQuKE1heFBlbmRpbmcQECAAAAAERQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUtZGVsYXllZCBhbm5vdW5jZW1lbnRzIHRoYXQgYXJlIGFsbG93ZWQgdG8gYmUgcGVuZGluZy5cQW5ub3VuY2VtZW50RGVwb3NpdEJhc2UYQAAaelUCAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLmRBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yGEBAivcBAAAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAW0GKgAYQXNzZXRzARhBc3NldHMUFEFzc2V0AAEEAhBxBgQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4cQWNjb3VudAABCAICeQZ9BgQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4kQXBwcm92YWxzAAEMAgICiQaNBgQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLiBNZXRhZGF0YQEBBAIQkQZQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4sTmV4dEFzc2V0SWQAABAEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgGNBQENAhxAUmVtb3ZlSXRlbXNMaW1pdBAQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLjBBc3NldERlcG9zaXQYQADodkgXAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuTEFzc2V0QWNjb3VudERlcG9zaXQYQAD2hVQCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuTE1ldGFkYXRhRGVwb3NpdEJhc2UYQICwElYCAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC5YTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZRhAIKEHAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLjxBcHByb3ZhbERlcG9zaXQYQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4sU3RyaW5nTGltaXQQEDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAZkGMgAcVW5pcXVlcwEcVW5pcXVlcygUQ2xhc3MAAQQCEJ0GBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi5MT3duZXJzaGlwQWNjZXB0YW5jZQABBAIAEAQABCkBIFRoZSBjb2xsZWN0aW9uLCBpZiBhbnksIG9mIHdoaWNoIGFuIGFjY291bnQgaXMgd2lsbGluZyB0byB0YWtlIG93bmVyc2hpcC4cQWNjb3VudAABDAICAqEG9QEEAAhZASBUaGUgaXRlbXMgaGVsZCBieSBhbnkgZ2l2ZW4gYWNjb3VudDsgc2V0IG91dCB0aGlzIHdheSBzbyB0aGF0IGl0ZW1zIG93bmVkIGJ5IGEgc2luZ2xlbCBhY2NvdW50IGNhbiBiZSBlbnVtZXJhdGVkLjBDbGFzc0FjY291bnQAAQgCAqUG9QEEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4UQXNzZXQAAQgCApECqQYEAATQIFRoZSBpdGVtcyBpbiBleGlzdGVuY2UgYW5kIHRoZWlyIG93bmVyc2hpcCBkZXRhaWxzLjxDbGFzc01ldGFkYXRhT2YAAQQCEK0GBAAEaCBNZXRhZGF0YSBvZiBhIGNvbGxlY3Rpb24uSEluc3RhbmNlTWV0YWRhdGFPZgABCAICkQKxBgQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4kQXR0cmlidXRlAAEMAgICtQa5BgQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uLEl0ZW1QcmljZU9mAAEIAgKRAr0GBAAEcCBQcmljZSBvZiBhbiBhc3NldCBpbnN0YW5jZS5MQ29sbGVjdGlvbk1heFN1cHBseQABBAIQEAQABPAgS2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gbWlnaHQgaGF2ZS4BkQUBEQIgRENvbGxlY3Rpb25EZXBvc2l0GEAA6HZIFwAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLixJdGVtRGVwb3NpdBhAAMqaOwAAAAAAAAAAAAAAAAT0IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBpdGVtLkxNZXRhZGF0YURlcG9zaXRCYXNlGEAgFeRXAgAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS5QQXR0cmlidXRlRGVwb3NpdEJhc2UYQADkC1QCAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uOERlcG9zaXRQZXJCeXRlGEAgoQcAAAAAAAAAAAAAAAAACFkBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZSBpbiBtZXRhZGF0YSzAIGVpdGhlciAibm9ybWFsIiBtZXRhZGF0YSBvciBhdHRyaWJ1dGUgbWV0YWRhdGEuLFN0cmluZ0xpbWl0EBCAAAAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLiBLZXlMaW1pdBAQIAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LihWYWx1ZUxpbWl0EBBAAAAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSB2YWx1ZS4BwQYzABBOZnRzARBOZnRzPChDb2xsZWN0aW9uAAEEAhDFBgQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uTE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCABAEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuHEFjY291bnQAAQwCAgKhBvUBBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC5EQ29sbGVjdGlvbkFjY291bnQAAQgCAqUG9QEEAAhpASBUaGUgY29sbGVjdGlvbnMgb3duZWQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBjb2xsZWN0aW9ucyBvd25lZCBieZAgYSBzaW5nbGUgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC5AQ29sbGVjdGlvblJvbGVPZgABCAICeQbJBgQACNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuoCBTdG9yZXMgY29sbGVjdGlvbiByb2xlcyBhcyBwZXIgYWNjb3VudC4QSXRlbQABCAICkQLRBgQABNAgVGhlIGl0ZW1zIGluIGV4aXN0ZW5jZSBhbmQgdGhlaXIgb3duZXJzaGlwIGRldGFpbHMuUENvbGxlY3Rpb25NZXRhZGF0YU9mAAEEAhDpBgQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLjhJdGVtTWV0YWRhdGFPZgABCAICkQLtBgQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4kQXR0cmlidXRlAAEQAgICAvUG+QYEAARwIEF0dHJpYnV0ZXMgb2YgYSBjb2xsZWN0aW9uLixJdGVtUHJpY2VPZgABCAICkQK9BgQABFAgQSBwcmljZSBvZiBhbiBpdGVtLmRJdGVtQXR0cmlidXRlc0FwcHJvdmFsc09mAQEIAgKRAgEHBAAEaCBJdGVtIGF0dHJpYnV0ZSBhcHByb3ZhbHMuQE5leHRDb2xsZWN0aW9uSWQAABAEAAgxASBTdG9yZXMgdGhlIGBDb2xsZWN0aW9uSWRgIHRoYXQgaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgdGhlIG5leHQgY29sbGVjdGlvbi7wIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBjb2xsZWN0aW9uIGlzIGNyZWF0ZWQuNFBlbmRpbmdTd2FwT2YAAQgCApECCQcEAAR8IEhhbmRsZXMgYWxsIHRoZSBwZW5kaW5nIHN3YXBzLkhDb2xsZWN0aW9uQ29uZmlnT2YAAQQCEKUFBAAEYCBDb25maWcgb2YgYSBjb2xsZWN0aW9uLjBJdGVtQ29uZmlnT2YAAQgCApECzQUEAARMIENvbmZpZyBvZiBhbiBpdGVtLgGhBQEtAjhEQ29sbGVjdGlvbkRlcG9zaXQYQADodkgXAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uLEl0ZW1EZXBvc2l0GEAAypo7AAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uTE1ldGFkYXRhRGVwb3NpdEJhc2UYQCAV5FcCAAAAAAAAAAAAAAAETQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBpdGVtLlBBdHRyaWJ1dGVEZXBvc2l0QmFzZRhAAOQLVAIAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS44RGVwb3NpdFBlckJ5dGUYQCChBwAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4sU3RyaW5nTGltaXQQEAABAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uIEtleUxpbWl0EBBAAAAABKAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGFuIGF0dHJpYnV0ZSBrZXkuKFZhbHVlTGltaXQQEAABAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLjhBcHByb3ZhbHNMaW1pdBAQFAAAAASoIFRoZSBtYXhpbXVtIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUucEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzTGltaXQQEB4AAAAE1CBUaGUgbWF4aW11bSBhdHRyaWJ1dGVzIGFwcHJvdmFscyBhbiBpdGVtIGNvdWxkIGhhdmUuHE1heFRpcHMQEAoAAAAEqCBUaGUgbWF4IG51bWJlciBvZiB0aXBzIGEgdXNlciBjb3VsZCBzZW5kLkxNYXhEZWFkbGluZUR1cmF0aW9uEBAAGk8ABKggVGhlIG1heCBkdXJhdGlvbiBpbiBibG9ja3MgZm9yIGRlYWRsaW5lcy5QTWF4QXR0cmlidXRlc1BlckNhbGwQEAoAAAAE4CBUaGUgbWF4IG51bWJlciBvZiBhdHRyaWJ1dGVzIGEgdXNlciBjb3VsZCBzZXQgcGVyIGNhbGwuIEZlYXR1cmVzDQcgAAAAAAAAAAAEkCBEaXNhYmxlcyBzb21lIG9mIHBhbGxldCdzIGZlYXR1cmVzLgEVBzQANEZvcmVpZ25Bc3NldHMBNEZvcmVpZ25Bc3NldHMUFEFzc2V0AAEEApRxBgQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4cQWNjb3VudAABCAICGQd9BgQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4kQXBwcm92YWxzAAEMAgICHQeNBgQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLiBNZXRhZGF0YQEBBAKUIQdQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4sTmV4dEFzc2V0SWQAAJQEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgH1BQFJAhxAUmVtb3ZlSXRlbXNMaW1pdBAQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLjBBc3NldERlcG9zaXQYQADodkgXAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuTEFzc2V0QWNjb3VudERlcG9zaXQYQAD2hVQCAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuTE1ldGFkYXRhRGVwb3NpdEJhc2UYQICwElYCAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC5YTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZRhAIKEHAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLjxBcHByb3ZhbERlcG9zaXQYQADKmjsAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4sU3RyaW5nTGltaXQQEDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uASkHNQBQTmZ0RnJhY3Rpb25hbGl6YXRpb24BUE5mdEZyYWN0aW9uYWxpemF0aW9uBChOZnRUb0Fzc2V0AAEEApECLQcEAAQVASBLZWVwcyB0cmFjayBvZiB0aGUgY29ycmVzcG9uZGluZyBORlQgSUQsIGFzc2V0IElEIGFuZCBhbW91bnQgbWludGVkLgH5BQFNAhQcRGVwb3NpdBhAAOh2SBcAAAAAAAAAAAAAAAhlASBUaGUgZGVwb3NpdCBwYWlkIGJ5IHRoZSB1c2VyIGxvY2tpbmcgYW4gTkZULiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZCB0byB0aGUgb3JpZ2luYWwgTkZU5CBvd25lciB3aGVuIHRoZSBhc3NldCBpcyB1bmlmaWVkIGFuZCB0aGUgTkZUIGlzIHVubG9ja2VkLiBQYWxsZXRJZDEHIGZyYWN0aW9uBPQgVGhlIHBhbGxldCdzIGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuOE5ld0Fzc2V0U3ltYm9slQYUEEZSQUMEiCBUaGUgbmV3bHkgY3JlYXRlZCBhc3NldCdzIHN5bWJvbC4wTmV3QXNzZXROYW1llQYUEEZyYWMEgCBUaGUgbmV3bHkgY3JlYXRlZCBhc3NldCdzIG5hbWUuLFN0cmluZ0xpbWl0EBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgE1BzYAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMUFEFzc2V0AAEEAhBxBgQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4cQWNjb3VudAABCAICeQZ9BgQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4kQXBwcm92YWxzAAEMAgICiQaNBgQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLiBNZXRhZGF0YQEBBAIQOQdQAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4sTmV4dEFzc2V0SWQAABAEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgH9BQFRAhxAUmVtb3ZlSXRlbXNMaW1pdBAQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLjBBc3NldERlcG9zaXQYQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuTEFzc2V0QWNjb3VudERlcG9zaXQYQAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuTE1ldGFkYXRhRGVwb3NpdEJhc2UYQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC5YTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZRhAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLjxBcHByb3ZhbERlcG9zaXQYQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4sU3RyaW5nTGltaXQQEDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAUEHNwA8QXNzZXRDb252ZXJzaW9uATxBc3NldENvbnZlcnNpb24IFFBvb2xzAAEEAlkCRQcEAAhpASBNYXAgZnJvbSBgUG9vbEFzc2V0SWRgIHRvIGBQb29sSW5mb2AuIFRoaXMgZXN0YWJsaXNoZXMgd2hldGhlciBhIHBvb2wgaGFzIGJlZW4gb2ZmaWNpYWxseT0BIGNyZWF0ZWQgcmF0aGVyIHRoYW4gcGVvcGxlIHNlbmRpbmcgdG9rZW5zIGRpcmVjdGx5IHRvIGEgcG9vbCdzIHB1YmxpYyBhY2NvdW50LjxOZXh0UG9vbEFzc2V0SWQAABAEAAglASBTdG9yZXMgdGhlIGBQb29sQXNzZXRJZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBscCB0b2tlbi7kIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBscCBwb29sIGlzIGNyZWF0ZWQuAQEGAVUCHBRMUEZlZRAQAwAAAARRASBBICUgdGhlIGxpcXVpZGl0eSBwcm92aWRlcnMgd2lsbCB0YWtlIG9mIGV2ZXJ5IHN3YXAuIFJlcHJlc2VudHMgMTB0aHMgb2YgYSBwZXJjZW50LjBQb29sU2V0dXBGZWUYQAAAAAAAAAAAAAAAAAAAAAAEiCBBIG9uZS10aW1lIGZlZSB0byBzZXR1cCB0aGUgcG9vbC5EUG9vbFNldHVwRmVlQXNzZXSUCAEABDkBIEFzc2V0IGNsYXNzIGZyb20gW2BDb25maWc6OkFzc2V0c2BdIHVzZWQgdG8gcGF5IHRoZSBbYENvbmZpZzo6UG9vbFNldHVwRmVlYF0uWExpcXVpZGl0eVdpdGhkcmF3YWxGZWVdAhAAAAAABIQgQSBmZWUgdG8gd2l0aGRyYXcgdGhlIGxpcXVpZGl0eS5ATWludE1pbkxpcXVpZGl0eRhAZAAAAAAAAAAAAAAAAAAAAAQ9ASBUaGUgbWluaW11bSBMUCB0b2tlbiBhbW91bnQgdGhhdCBjb3VsZCBiZSBtaW50ZWQuIEFtZWxpb3JhdGVzIHJvdW5kaW5nIGVycm9ycy5ETWF4U3dhcFBhdGhMZW5ndGgQEAMAAAAEiCBUaGUgbWF4IG51bWJlciBvZiBob3BzIGluIGEgc3dhcC4gUGFsbGV0SWQxByBweS9hc2NvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgFJBzgANEFzc2V0c0ZyZWV6ZXIBNEFzc2V0c0ZyZWV6ZXIIHEZyZWV6ZXMBAQgCAnkGTQcEAAQVASBBIG1hcCB0aGF0IHN0b3JlcyBmcmVlemVzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLjhGcm96ZW5CYWxhbmNlcwABCAICeQYYBAAEZQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgZnJvemVuIGJhbGFuY2UgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgABaQIAAV0HOQBQRm9yZWlnbkFzc2V0c0ZyZWV6ZXIBUEZvcmVpZ25Bc3NldHNGcmVlemVyCBxGcmVlemVzAQEIAgIZB00HBAAEFQEgQSBtYXAgdGhhdCBzdG9yZXMgZnJlZXplcyBhcHBsaWVkIG9uIGFuIGFjY291bnQgZm9yIGEgZ2l2ZW4gQXNzZXRJZC44RnJvemVuQmFsYW5jZXMAAQgCAhkHGAQABGUBIEEgbWFwIHRoYXQgc3RvcmVzIHRoZSBjdXJyZW50IHRvdGFsIGZyb3plbiBiYWxhbmNlIGZvciBldmVyeSBhY2NvdW50IG9uIGEgZ2l2ZW4gQXNzZXRJZC4AAW0CAAFhBzoARFBvb2xBc3NldHNGcmVlemVyAURQb29sQXNzZXRzRnJlZXplcggcRnJlZXplcwEBCAICeQZNBwQABBUBIEEgbWFwIHRoYXQgc3RvcmVzIGZyZWV6ZXMgYXBwbGllZCBvbiBhbiBhY2NvdW50IGZvciBhIGdpdmVuIEFzc2V0SWQuOEZyb3plbkJhbGFuY2VzAAEIAgJ5BhgEAARlASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBmcm96ZW4gYmFsYW5jZSBmb3IgZXZlcnkgYWNjb3VudCBvbiBhIGdpdmVuIEFzc2V0SWQuAAFxAgABZQc7AEhTdGF0ZVRyaWVNaWdyYXRpb24BSFN0YXRlVHJpZU1pZ3JhdGlvbgxATWlncmF0aW9uUHJvY2VzcwEAFQY4AAAAAAAAAAAAAAAAAAAQUCBNaWdyYXRpb24gcHJvZ3Jlc3MuAF0BIFRoaXMgc3RvcmVzIHRoZSBzbmFwc2hvdCBvZiB0aGUgbGFzdCBtaWdyYXRlZCBrZXlzLiBJdCBjYW4gYmUgc2V0IGludG8gbW90aW9uIGFuZCBtb3Zl1CBmb3J3YXJkIGJ5IGFueSBvZiB0aGUgbWVhbnMgcHJvdmlkZWQgYnkgdGhpcyBwYWxsZXQuKEF1dG9MaW1pdHMBAA0GBAAM1CBUaGUgbGltaXRzIHRoYXQgYXJlIGltcG9zZWQgb24gYXV0b21hdGljIG1pZ3JhdGlvbnMuANQgSWYgc2V0IHRvIE5vbmUsIHRoZW4gbm8gYXV0b21hdGljIG1pZ3JhdGlvbiBoYXBwZW5zLmBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAABEGBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4BCQYBdQIEJE1heEtleUxlbhAQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUkBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvc3Vic3RyYXRlL3F1ZXJ5aW5nLXN1YnN0cmF0ZS1zdG9yYWdlLXZpYS1ycGMvPgF9AkYAYEFzc2V0Q29udmVyc2lvbk1pZ3JhdGlvbgABIQYBgQIAAWkHyAAEzQN5BeUFbQcoSENoZWNrTm9uWmVyb1NlbmRlcnEH9QFAQ2hlY2tTcGVjVmVyc2lvbnUHEDhDaGVja1R4VmVyc2lvbnkHEDBDaGVja0dlbmVzaXN9BzQ4Q2hlY2tNb3J0YWxpdHmBBzQoQ2hlY2tOb25jZYkH9QEsQ2hlY2tXZWlnaHSNB/UBUENoYXJnZUFzc2V0VHhQYXltZW50kQf1AVBTdG9yYWdlV2VpZ2h0UmVjbGFpbZUH9QFEQ2hlY2tNZXRhZGF0YUhhc2iZB4ChB0wcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgClBwyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLixhdXRob3JpdGllcwAdBAScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuBLggQVBJIG5lY2Vzc2FyeSBmb3IgYmxvY2sgYXV0aG9yc2hpcCB3aXRoIGF1cmEuYEF1cmFVbmluY2x1ZGVkU2VnbWVudEFwaQQ4Y2FuX2J1aWxkX3Vwb24INGluY2x1ZGVkX2hhc2g0EHNsb3QhBCAoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kQCB0aGUgZ2l2ZW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuKDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4QQ29yZQwcdmVyc2lvbgDNAgSQIFJldHVybnMgdGhlIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuNGV4ZWN1dGVfYmxvY2sEFGJsb2NrqQf1AQRkIEV4ZWN1dGUgdGhlIGdpdmVuIGJsb2NrLkBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXKtB7kHBEEBIEluaXRpYWxpemUgYSBibG9jayB3aXRoIHRoZSBnaXZlbiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcnVudGltZSBleGVjdXRpdmUgbW9kZS4EIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4gTWV0YWRhdGEMIG1ldGFkYXRhAL0HBIwgUmV0dXJucyB0aGUgbWV0YWRhdGEgb2YgYSBydW50aW1lLkxtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uEMEHEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS5EbWV0YWRhdGFfdmVyc2lvbnMAGQIMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4EAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWOxB8UHEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LjhmaW5hbGl6ZV9ibG9jawCtBwRoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay5MaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnTVB7UHBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLjxjaGVja19pbmhlcmVudHMIFGJsb2NrqQcQZGF0YdUH5QcEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uBHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay5YVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZekHCHR4sQcoYmxvY2tfaGFzaDTtByRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuBE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS5ET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyrQf1AQTIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4EZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4sU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwQQc2VlZKkEOBwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy5MZGVjb2RlX3Nlc3Npb25fa2V5cwQcZW5jb2RlZDj1BwyYIERlY29kZSB0aGUgZ2l2ZW4gcHVibGljIHNlc3Npb24ga2V5cy4A3CBSZXR1cm5zIHRoZSBsaXN0IG9mIHB1YmxpYyByYXcgcHVibGljIGtleXMgKyBrZXkgdHlwZS4EaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuPEFjY291bnROb25jZUFwaQQ0YWNjb3VudF9ub25jZQQcYWNjb3VudAAQBMAgR2V0IGN1cnJlbnQgYWNjb3VudCBub25jZSBvZiBnaXZlbiBgQWNjb3VudElkYC4EgCBUaGUgQVBJIHRvIHF1ZXJ5IGFjY291bnQgbm9uY2UuHE5mdHNBcGkYFG93bmVyCChjb2xsZWN0aW9uEBBpdGVtECkCAEBjb2xsZWN0aW9uX293bmVyBChjb2xsZWN0aW9uECkCACRhdHRyaWJ1dGUMKGNvbGxlY3Rpb24QEGl0ZW0QDGtleTipBABAY3VzdG9tX2F0dHJpYnV0ZRAcYWNjb3VudAAoY29sbGVjdGlvbhAQaXRlbRAMa2V5OKkEAEBzeXN0ZW1fYXR0cmlidXRlDChjb2xsZWN0aW9uEBBpdGVtHQIMa2V5OKkEAFBjb2xsZWN0aW9uX2F0dHJpYnV0ZQgoY29sbGVjdGlvbhAMa2V5OKkEAABIQXNzZXRDb252ZXJzaW9uQXBpDIxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQxlBhhc3NldDKUGGFtb3VudBgsaW5jbHVkZV9mZWUgnQUQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDGUGGFzc2V0MpQYYW1vdW50GCxpbmNsdWRlX2ZlZSCdBRD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pMGdldF9yZXNlcnZlcwgYYXNzZXQxlBhhc3NldDKUAQgEBQEgUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2wgZm9yIHRoZSBnaXZlbiBhc3NldCBwYWlyLgghASBUaGlzIHJ1bnRpbWUgYXBpIGFsbG93cyBwZW9wbGUgdG8gcXVlcnkgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sc3AgYW5kIHF1b3RlIHByaWNlcyBmb3Igc3dhcHMuVFRyYW5zYWN0aW9uUGF5bWVudEFwaRAocXVlcnlfaW5mbwgMdXh0sQcMbGVuEAkIAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0sQcMbGVuEA0IAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQoGABMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoEBgAADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbhAZCBS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uQHF1ZXJ5X3hjbV93ZWlnaHQEHG1lc3NhZ2XVBCUIFKggUmV0dXJucyBhIHdlaWdodCBuZWVkZWQgdG8gZXhlY3V0ZSBhIFhDTS4AMCAjIEFyZ3VtZW50cwB0ICogYG1lc3NhZ2VgOiBgVmVyc2lvbmVkWGNtYC5kcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0KBRhc3NldLEEKQgY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuTHF1ZXJ5X2RlbGl2ZXJ5X2ZlZXMILGRlc3RpbmF0aW9uzQEcbWVzc2FnZdUELQggHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4scCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4kRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwIGG9yaWdpbiUGEGNhbGx5BTEIBDggRHJ5IHJ1biBjYWxsLixkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uzQEMeGNtGQVdCARQIERyeSBydW4gWENNIHByb2dyYW0ksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbs0BZQgEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC5kVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaRA8cXVlcnlfY2FsbF9pbmZvCBBjYWxseQUMbGVuEAkIBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLlhxdWVyeV9jYWxsX2ZlZV9kZXRhaWxzCBBjYWxseQUMbGVuEA0IBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC5McXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0KBgEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuTHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aBAYBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAwRnVuZ2libGVzQXBpBFhxdWVyeV9hY2NvdW50X2JhbGFuY2VzBBxhY2NvdW50AG0IBOwgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgW2BBc3NldGBdIHRoYXQgYW4gYEFjY291bnRJZGAgaGFzLgTYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXKtB3UIEJwgQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4A9CBUaGUgZ2l2ZW4gYGhlYWRlcmAgaXMgdGhlIGhlYWRlciBvZiB0aGUgYnVpbHQgYmxvY2sgZm9yIHRoYXSoIHdlIGFyZSBjb2xsZWN0aW5nIHRoZSBjb2xsYXRpb24gaW5mbyBmb3IuBNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi44R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uOIEIJGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuAPkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGwgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kWQEgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGUgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZbQgZGVzZXJpYWxpemF0aW9uIGZhaWxzLCBhbiBlcnJvciBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4oZ2V0X3ByZXNldAQIaWSFCKkEOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4APQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHJldHVybnMgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90ZQEgZXhpc3RzLiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLjBwcmVzZXRfbmFtZXMAiQgQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuBOggQVBJIHRvIGludGVyYWN0IHdpdGggUnVudGltZUdlbmVzaXNDb25maWcgZm9yIHRoZSBydW50aW1leQVUjQgA",A=G;export{A as default};
|