ICA8Y2hhcHRlciBpZD0iY29uZmlndXJpbmciPgogICAgPHRpdGxlPkNvbmZpZ3VyaW5nIFdpbmU8L3RpdGxlPgogICAgPHBhcmE+U2V0dGluZyB1cCBjb25maWcgZmlsZXMsIGV0Yy48L3BhcmE+CgogICAgPHNlY3QxIGlkPSJjb25maWciPgogICAgICA8dGl0bGU+R2VuZXJhbCBDb25maWd1cmF0aW9uPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgQ29weXJpZ2h0IDE5OTkgJm5hbWUtYWRhbS1zYWNhcm55OyA8ZW1haWw+JmVtYWlsLWFkYW0tc2FjYXJueTs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2NvbmZpZzwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlRoZSBXaW5lIENvbmZpZyBGaWxlPC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBXaW5lIGNvbmZpZyBmaWxlIHN0b3JlcyB2YXJpb3VzIHNldHRpbmdzIGZvciBXaW5lLiBUaGVzZSBpbmNsdWRlOgogICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgRHJpdmVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aGVtCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBEaXJlY3Rvcnkgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFBvcnQgc2V0dGluZ3MKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBXaW5lIGxvb2sgYW5kIGZlZWwKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBETEwgdXNhZ2UKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmUncyBtdWx0aW1lZGlhIGRyaXZlcnMgYW5kIERMTCBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Ib3cgRG8gSSBNYWtlIE9uZT88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhpcyBzZWN0aW9uIHdpbGwgZ3VpZGUgeW91IHRocm91Z2ggdGhlIHByb2Nlc3Mgb2YgbWFraW5nIGEKICAgICAgICAgIGNvbmZpZyBmaWxlLiBUYWtlIGEgbG9vayBhdCB0aGUgZmlsZSA8ZmlsZW5hbWU+Jmx0O2RpcnMgdG8KICAgICAgICAgIHdpbmU+L2RvY3VtZW50YXRpb24vc2FtcGxlcy9jb25maWc8L2ZpbGVuYW1lPi4gSXQgaXMgb3JnYW5pemVkIGJ5IHNlY3Rpb24uCiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlNlY3Rpb24gTmFtZTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TmVlZGVkPzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCBpdCBEb2VzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RyaXZlIFhdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT55ZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNldHMgdXAgZHJpdmVzIHJlY29nbml6ZWQgYnkgd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bd2luZV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+U2V0dGluZ3MgZm9yIHdpbmUgZGlyZWN0b3JpZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0RsbERlZmF1bHRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRlZmF1bHRzIGZvciBsb2FkaW5nIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxQYWlyc108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnJlY21kPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5TYW5pdHkgY2hlY2tlcnMgZm9yIERMTCdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltEbGxPdmVycmlkZXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcmlkZXMgZGVmYXVsdHMgZm9yIERMTCBsb2FkaW5nPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5Plt4MTFkcnZdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWNtZDwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+R3JhcGhpYyBkcml2ZXIgc2V0dGluZ3M8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W2ZvbnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+eWVzPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5Gb250IGFwcGVhcmFuY2UgYW5kIHJlY29nbml0aW9uPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltzZXJpYWxwb3J0c108L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5Pm5vPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5DT00gcG9ydHMgc2VlbiBieSB3aW5lPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltwYXJhbGxlbHBvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkxQVCBwb3J0cyBzZWVuIGJ5IHdpbmU8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BwZGV2XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBhcmFsbGVscG9ydCBlbXVsYXRpb248L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3Nwb29sZXJdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJpbnQgc3Bvb2xpbmc8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W3BvcnRzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkRpcmVjdCBwb3J0IGFjY2VzczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bRGVidWddPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+V2hhdCB0byBkbyB3aXRoIGNlcnRhaW4gZGVidWcgbWVzc2FnZXM8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W1JlZ2lzdHJ5XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlNwZWNpZmllcyBsb2NhdGlvbnMgb2Ygd2luZG93cyByZWdpc3RyeSBmaWxlczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bdHdlYWsubGF5b3V0XTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+cmVjbWQ8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkFwcGVhcmFuY2Ugb2Ygd2luZTwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bcHJvZ3JhbXNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+UHJvZ3JhbXMgdG8gYmUgcnVuIGF1dG9tYXRpY2FsbHk8L2VudHJ5PgogICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICA8ZW50cnk+W0NvbnNvbGVdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29uc29sZSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQ2xpcGJvYXJkXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PkludGVyYWN0aW9uIGZvciB3aW5lIGFuZCBYMTEgY2xpcGJvYXJkPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PlthZm1kaXJzXTwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+bm88L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PlBvc3RzY3JpcHQgZHJpdmVyIHNldHRpbmdzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PltXaW5NTV08L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PnllczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+TXVsdGltZWRpYSBzZXR0aW5nczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgIDxlbnRyeT5bQXBwRGVmYXVsdHNdPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5ubzwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+T3ZlcndyaXRlIHRoZSBzZXR0aW5ncyBvZiBwcmV2aW91cyBzZWN0aW9ucyBmb3Igc3BlY2lhbCBwcm9ncmFtczwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICA8L3Rncm91cD4KICAgICAgICA8L2luZm9ybWFsdGFibGU+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RyaXZlIFhdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CgkgICAgVGhlc2Ugc2VjdGlvbnMgYXJlIHN1cHBvc2VkIHRvIG1ha2UgY2VydGFpbiBVbml4CgkgICAgZGlyZWN0b3J5IGxvY2F0aW9ucyBhY2Nlc3NpYmxlIHRvIFdpbmUgYXMgYSBET1MvV2luZG93cyBkcml2ZQoJICAgIChkcml2ZSAnWDonKSBhbmQgdGh1cyBhY2Nlc3NpYmxlIHRvIFdpbmRvd3MgcHJvZ3JhbXMKCSAgICB1bmRlciB0aGUgZHJpdmUgbmFtZSB5b3Ugc3BlY2lmaWVkLgoJICAgIEV2ZXJ5IERPUy9XaW5kb3dzIHByb2dyYW0gc29ydCBvZiBleHBlY3RzIGF0IGxlYXN0IGEgQzogZHJpdmUgKGFuZAoJICAgIHNvbWV0aW1lcyBhbHNvIGFuIEE6IGZsb3BweSBkcml2ZSksIHNvIHlvdXIgY29uZmlnIGZpbGUgc2hvdWxkCgkgICAgYXQgbGVhc3QgY29udGFpbiB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucywgW0RyaXZlIENdIGFuZAoJICAgIFtEcml2ZSBBXS4KCSAgICBZb3UgbmVlZCB0byBkZWNpZGUgb24gd2hldGhlciB5b3Ugd2FudCB0byB1c2UgYW4gZXhpc3RpbmcgV2luZG93cwoJICAgIHBhcnRpdGlvbiBhcyB0aGUgQyBkcml2ZSBvciB3aGV0aGVyIHlvdSB3YW50IHRvIGNyZWF0ZSB5b3VyIG93bgoJICAgIFdpbmUgZHJpdmUgQyBkaXJlY3RvcnkgdHJlZSBzb21ld2hlcmUgKHRha2UgY2FyZSBhYm91dAoJICAgIHBlcm1pc3Npb25zICEpLgogICAgICAgICAgICBFYWNoIGRyaXZlIHNlY3Rpb24gbWF5IHNwZWNpZnkgdXAgdG8gNiBkaWZmZXJlbnQgc2V0dGluZ3MKCSAgICBhcyBleHBsYWluZWQgYmVsb3cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPltEcml2ZSBYXTwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFRoZSBhYm92ZSBsaW5lIGJlZ2lucyB0aGUgc2VjdGlvbiBmb3IgYSBkcml2ZSB3aG9zZSBsZXR0ZXIgaXMgWAoJICAgIChET1Mgbm90YXRpb246IGRyaXZlICdYOicpLgoJICAgIFlvdSBjb3VsZCBlLmcuIGNyZWF0ZSBhbiBlcXVpdmFsZW50IHRvIGEgZHJpdmUgJ0M6JwoJICAgIHVuZGVyIERPUy9XaW5kb3dzIGJ5IHVzaW5nIGEgW0RyaXZlIENdIHNlY3Rpb24gbmFtZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlBhdGgiID0gIi9kaXIvdG8vcGF0aCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc3BlY2lmaWVzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGRyaXZlIHdpbGwgYmVnaW4uCgkgICAgV2hlbiBXaW5lIGlzIGJyb3dzaW5nIGluIGRyaXZlIFgsIGl0IHdpbGwgYmUgYWJsZQoJICAgIHRvIHNlZSB0aGUgZmlsZXMgdGhhdCBhcmUgaW4gdGhlIGRpcmVjdG9yeQoJICAgIDxmaWxlbmFtZT4vZGlyL3RvL3BhdGg8L2ZpbGVuYW1lPiBhbmQgYmVsb3cuCgkgICAgKG5vdGUgdGhhdCBzeW1saW5rcyB0byBkaXJlY3RvcmllcyB3b24ndCBnZXQgaW5jbHVkZWQgIQoJICAgIHNlZSAiPGxpbmsgbGlua2VuZD0iZGlyc3ltbGlua3MiPlNob3dEaXJTeW1saW5rczwvbGluaz4iCgkgICAgY29uZmlnIHNldHRpbmcpCgkgICAgWW91IGNhbiBhbHNvIG1ha2UgdXNlIG9mIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlICRIT01FIGhlcmUsCgkgICAgYW4gZXhhbXBsZSBmb3IgdXNpbmcgYSBteXdpbmVkcml2ZSBkaXJlY3RvcnkgaW4geW91ciBob21lIGRpcgoJICAgIHdvdWxkIGJlCgkgICAgIlBhdGgiID0gIiR7SE9NRX0vbXl3aW5lZHJpdmUiCgkgICAgRG9uJ3QgZm9yZ2V0IHRvIGxlYXZlIG9mZiB0aGUgdHJhaWxpbmcgc2xhc2ghCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJUeXBlIiA9ICJoZHxjZHJvbXxuZXR3b3JrfGZsb3BweSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHVwIHRoZSB0eXBlIG9mIGRyaXZlIFdpbmUgd2lsbCBzZWUgaXQgYXMuIFR5cGUgbXVzdAogICAgICAgICAgICBlcXVhbCBvbmUgb2YgdGhlIGZvdXIgPGxpdGVyYWw+ZmxvcHB5PC9saXRlcmFsPiwKICAgICAgICAgICAgPGxpdGVyYWw+aGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD5jZHJvbTwvbGl0ZXJhbD4sIG9yCiAgICAgICAgICAgIDxsaXRlcmFsPm5ldHdvcms8L2xpdGVyYWw+LiBUaGV5IGFyZSBzZWxmLWV4cGxhbmF0b3J5LgogICAgICAgICAgICAoVGhlIHwncyBtZWFuICJUeXBlID0gJyZsdDtvbmUgb2YgdGhlIG9wdGlvbnMmZ3Q7JyIuKQoJICAgIFVzdWFsbHksIHlvdSBjaG9vc2UgImhkIiBmb3IgYSBkcml2ZSAoImhkIiBpcyBkZWZhdWx0IGFueXdheSkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMYWJlbCIgPSAiYmxhaCI8L3Byb2dyYW1saXN0aW5nPgoJICAgIERlZmluZXMgdGhlIGRyaXZlIGxhYmVsLiBHZW5lcmFsbHkgb25seSBuZWVkZWQKCSAgICBmb3IgcHJvZ3JhbXMgdGhhdCBsb29rIGZvciBhIHNwZWNpYWwgQ0QtUk9NLgogICAgICAgICAgICBUaGUgbGFiZWwgbWF5IGJlIHVwIHRvIDExIGNoYXJhY3RlcnMuCgkgICAgTm90ZSB0aGF0IHRoZSBwcmVmZXJyZWQgd2F5IG9mIG1hbmFnaW5nIGxhYmVscyBhbmQgc2VyaWFsIG51bWJlcnMKCSAgICBvZiBDRC1ST01zIGFuZCBmbG9wcGllcyBpcyB0byBnaXZlIFdpbmUgcmF3IGRldmljZSBhY2Nlc3MgZm9yCgkgICAgcmVhZGluZyB0aGVzZSBvbiBhIHBlci1DRCBjYXNlIChzZWUgIkRldmljZSIgYmVsb3cpIGluc3RlYWQgb2YKCSAgICBoYXJkY29kaW5nIG9uZSBzcGVjaWZpYyAiTGFiZWwiLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU2VyaWFsIiA9ICJkZWFkYmVlZiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUZWxscyBXaW5lIHRoZSBzZXJpYWwgbnVtYmVyIG9mIHRoZSBkcml2ZS4gQSBmZXcgcHJvZ3JhbXMgd2l0aAogICAgICAgICAgICBpbnRlbnNlIHByb3RlY3Rpb24gZm9yIHBpcmF0aW5nIG1pZ2h0IG5lZWQgdGhpcywgYnV0IG90aGVyd2lzZQogICAgICAgICAgICBpdCdzIG5vdCBuZWVkZWQuIFVwIHRvIDggY2hhcmFjdGVycyBhbmQgaGV4YWRlY2ltYWwuCgkgICAgVXNpbmcgYSAiRGV2aWNlIiBlbnRyeSBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlICJTZXJpYWwiIHByb2JhYmx5CgkgICAgaXMgYSBzbWFydGVyIGNob2ljZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkZpbGVzeXN0ZW0iID0gIndpbjk1fHVuaXh8bXNkb3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgd2F5IFdpbmUgbG9va3MgYXQgZmlsZXMgb24gdGhlIGRyaXZlLgogICAgICAgICAgPC9wYXJhPgoKICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+PGxpdGVyYWw+d2luOTU8L2xpdGVyYWw+PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICBDYXNlIGluc2Vuc2l0aXZlLiBBbGlrZSB0byBXaW5kb3dzIDl4L05UIDQuIFRoaXMgaXMKICAgICAgICAgICAgICAgICAgdGhlIGxvbmcgZmlsZW5hbWUgZmlsZXN5c3RlbSB5b3UgYXJlIHByb2JhYmx5IHVzZWQKICAgICAgICAgICAgICAgICAgdG8gd29ya2luZyB3aXRoLiBUaGUgZmlsZXN5c3RlbSBvZiBjaG9pY2UgZm9yIG1vc3QKICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25zIHRvIGJlIHJ1biB1bmRlciB3aW5lLiAgUFJPQkFCTFkgVEhFIE9ORQogICAgICAgICAgICAgICAgICBZT1UgV0FOVCEKICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD51bml4PC9saXRlcmFsPjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ2FzZSBzZW5zaXRpdmUuIFRoaXMgZmlsZXN5c3RlbSBoYXMgYWxtb3N0IG5vIHVzZQogICAgICAgICAgICAgICAgICAoV2luZG93cyBhcHBzIGV4cGVjdCBjYXNlIGluc2Vuc2l0aXZlIGZpbGVuYW1lcykuCiAgICAgICAgICAgICAgICAgIFRyeSBpdCBpZiB5b3UgZGFyZSwgYnV0IHdpbjk1IGlzIGEgIG11Y2ggYmV0dGVyCiAgICAgICAgICAgICAgICAgIGNob2ljZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT48bGl0ZXJhbD5tc2RvczwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgIENhc2UgaW5zZW5zaXRpdmUgZmlsZXN5c3RlbS4gQWxpa2UgdG8gRE9TIGFuZAogICAgICAgICAgICAgICAgICBXaW5kb3dzIDMueC4gPGxpdGVyYWw+OC4zPC9saXRlcmFsPiBpcyB0aGUgbWF4aW11bQogICAgICAgICAgICAgICAgICBsZW5ndGggb2YgZmlsZXMgKGVpZ2h0ZG90LjEyMykgLSBsb25nZXIgb25lcyB3aWxsIGJlCiAgICAgICAgICAgICAgICAgIHRydW5jYXRlZC4gKE5PVEU6IHRoaXMgaXMgYSB2ZXJ5IGJhZCBjaG9pY2UgaWYgeW91CiAgICAgICAgICAgICAgICAgIHBsYW4gb24gcnVubmluZyBhcHBzIHRoYXQgdXNlIGxvbmcgZmlsZW5hbWVzLiB3aW45NQogICAgICAgICAgICAgICAgICBzaG91bGQgd29yayBmaW5lIHdpdGggYXBwcyB0aGF0IHdlcmUgZGVzaWduZWQgdG8gcnVuCiAgICAgICAgICAgICAgICAgIHVuZGVyIHRoZSBtc2RvcyBzeXN0ZW0uIEluIG90aGVyIHdvcmRzLCB5b3UgbWlnaHQKICAgICAgICAgICAgICAgICAgbm90IHdhbnQgdG8gdXNlIHRoaXMuKQogICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CgogICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZXZpY2UiID0gIi9kZXYveHgiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDxwYXJhPgoJICAgIE5lZWRlZCBmb3IgcmF3IGRldmljZSBhY2Nlc3MgYW5kIGxhYmVsIGFuZCBzZXJpYWwgbnVtYmVyIHJlYWRpbmcuCiAgICAgICAgICAgIFVzZSB0aGlzIE9OTFkgZm9yIGZsb3BweSBhbmQgY2Ryb20gZGV2aWNlcy4gVXNpbmcgaXQgb24KICAgICAgICAgICAgRXh0ZW5kZWQyIG9yIG90aGVyIFVuaXggZmlsZSBzeXN0ZW1zIGNhbiBoYXZlIGRpcmUgcmVzdWx0cwoJICAgICh3aGVuIGEgd2luZG93cyBhcHAgdHJpZXMgdG8gZG8gYSBsb3dsZXZlbCB3cml0ZSwKCSAgICB0aGV5IGRvIGl0IGluIGEgRkFUIHdheSAtLSBGQVQgZm9ybWF0IGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20KCSAgICBhbnkgVW5peCBmaWxlIHN5c3RlbSkuCgkgICAgQWxzbywgbWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgcHJvcGVyIHBlcm1pc3Npb25zIHRvIHRoaXMgZGV2aWNlCgkgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxub3RlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgbm90IHJlYWxseSBpbXBvcnRhbnQ7IGFsbW9zdCBhbGwgYXBwcwogICAgICAgICAgICAgIHdpbGwgaGF2ZSBubyBwcm9ibGVtIGlmIGl0IHJlbWFpbnMgdW5zcGVjaWZpZWQuIEZvcgogICAgICAgICAgICAgIENELVJPTXMgaXQncyBxdWl0ZSB1c2VmdWwgaW4gb3JkZXIgdG8gZ2V0IGF1dG9tYXRpYyBsYWJlbAogICAgICAgICAgICAgIGRldGVjdGlvbiwgdGhvdWdoLiBJZiB5b3UgYXJlIHVuc3VyZSBhYm91dCBzcGVjaWZ5aW5nCiAgICAgICAgICAgICAgZGV2aWNlIG5hbWVzLCBqdXN0IGxlYXZlIG91dCB0aGlzIHNldHRpbmcgZm9yIHlvdXIKICAgICAgICAgICAgICBkcml2ZXMuCiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgIDxwYXJhPgoJICAgIEhlcmUgYXJlIGEgZmV3IHNhbXBsZSBlbnRyaWVzOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CkhlcmUgaXMgYSBzZXR1cCBmb3IgRHJpdmUgQywgYSBnZW5lcmljIGhhcmQgZHJpdmU6CltEcml2ZSBDXQoiUGF0aCIgPSAiL2Rvc2MiCiJUeXBlIiA9ICJoZCIKIkxhYmVsIiA9ICJIYXJkIERyaXZlIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiClRoaXMgaXMgYSBzZXR1cCBmb3IgRHJpdmUgRSwgYSBnZW5lcmljIENELVJPTSBkcml2ZToKW0RyaXZlIEVdCiJQYXRoIiA9ICIvbW50L2Nkcm9tIgoiVHlwZSIgPSAiY2Ryb20iCiJMYWJlbCIgPSAiVG90YWwgQW5uaWhpbGF0aW9uIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCkFuZCBoZXJlIGlzIGEgc2V0dXAgZm9yIERyaXZlIEEsIGEgZ2VuZXJpYyBmbG9wcHkgZHJpdmU6CltEcml2ZSBBXQoiVHlwZSIgPSAiZmxvcHB5IgoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJMYWJlbCIgPSAiRmxvcHB5IERyaXZlIgoiU2VyaWFsIiA9ICI4NzY1NDMyMSIKIkZpbGVzeXN0ZW0iID0gIndpbjk1IgoiRGV2aWNlIiA9ICIvZGV2L2ZkMCIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDMgaWQ9ImNvbmZpZy13aW5lIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW3dpbmVdIFNlY3Rpb24gPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3dpbmVdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBjb250YWlucyBhbGwga2luZHMKICAgICAgICAgICAgb2YgZ2VuZXJhbCBzZXR0aW5ncyBmb3IgV2luZS4KCSAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iV2luZG93cyIgPSAiYzpcXHdpbmRvd3MiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhpcyB0ZWxscyBXaW5lIGFuZCBXaW5kb3dzIHByb2dyYW1zIHdoZXJlIHRoZQogICAgICAgICAgICA8ZmlsZW5hbWU+V2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBpcy4gIEl0IGlzCiAgICAgICAgICAgIHJlY29tbWVuZGVkIHRvIGhhdmUgdGhpcyBkaXJlY3Rvcnkgc29tZXdoZXJlIG9uIHlvdXIKICAgICAgICAgICAgY29uZmlndXJlZCA8bWVkaWFsYWJlbD5DPC9tZWRpYWxhYmVsPiBkcml2ZSwgYW5kIGl0J3MgYWxzbwogICAgICAgICAgICByZWNvbW1lbmRlZCB0byBqdXN0IGNhbGwgdGhlIGRpcmVjdG9yeSAid2luZG93cyIgKHRoaXMgaXMKICAgICAgICAgICAgdGhlIGRlZmF1bHQgc2V0dXAgb24gV2luZG93cywgYW5kIHNvbWUgc3R1cGlkIGFwcGxpY2F0aW9ucwogICAgICAgICAgICBtaWdodCByZWx5IG9uIHRoaXMpLiAgU28gaW4gY2FzZSB5b3UgY2hvc2UgYSAiV2luZG93cyIKICAgICAgICAgICAgc2V0dGluZyBvZiAiYzpcXHdpbmRvd3MiIGFuZCB5b3UgY2hvc2UgdG8gc2V0IHVwIGEgZHJpdmUgQwogICAgICAgICAgICBlLmcuIGF0IDxmaWxlbmFtZT4vdXNyL2xvY2FsL3dpbmVfYzwvZmlsZW5hbWU+LCB0aGUKICAgICAgICAgICAgY29ycmVzcG9uZGluZyBkaXJlY3Rvcnkgd291bGQgYmUKICAgICAgICAgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3M8L2ZpbGVuYW1lPi4gIE1ha2Ugb25lCiAgICAgICAgICAgIGlmIHlvdSBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiBOTyBUUkFJTElORyBTTEFTSCAoTk9UCiAgICAgICAgICAgIDxmaWxlbmFtZT5DOlxcd2luZG93c1w8L2ZpbGVuYW1lPikhIFdyaXRlIGFjY2VzcyBzdHJvbmdseQogICAgICAgICAgICByZWNvbW1lbmRlZCEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5c3RlbSIgPSAiYzpcXHdpbmRvd3NcXHN5c3RlbSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGlzIHNldHMgdXAgd2hlcmUgdGhlIHdpbmRvd3Mgc3lzdGVtIGZpbGVzIGFyZS4gVGhlIFdpbmRvd3MKCSAgICBzeXN0ZW0gZGlyZWN0b3J5IHNob3VsZCByZXNpZGUgYmVsb3cgdGhlIGRpcmVjdG9yeSB1c2VkIGZvciB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+V2luZG93czwvbGl0ZXJhbD4gc2V0dGluZy4KCSAgICBUaHVzIHdoZW4gdXNpbmcgdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBzeXN0ZW0gZGlyZWN0b3J5IHdvdWxkIGJlCgkgICAgPGZpbGVuYW1lPi91c3IvbG9jYWwvd2luZV9jL3dpbmRvd3Mvc3lzdGVtPC9maWxlbmFtZT4uCiAgICAgICAgICAgIEFnYWluLCBubyB0cmFpbGluZyBzbGFzaCwgYW5kIHdyaXRlIGFjY2VzcyEKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlRlbXAiID0gImM6XFx0ZW1wIjwvcHJvZ3JhbWxpc3Rpbmc+IFRoaXMgc2hvdWxkCiAgICAgICAgICAgIGJlIHRoZSBkaXJlY3RvcnkgeW91IHdhbnQgeW91ciB0ZW1wIGZpbGVzIHN0b3JlZCBpbiwKCSAgICAvdXNyL2xvY2FsL3dpbmVfYy90ZW1wIGluIG91ciBleGFtcGxlLgogICAgICAgICAgICBBZ2Fpbiwgbm8gdHJhaWxpbmcgc2xhc2gsIGFuZCBXUklURSBBQ0NFU1MhIQogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4KIlBhdGgiID0gImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW07YzpcXGJsYW5jbyIKICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBCZWhhdmVzIGxpa2UgdGhlIDxlbnZhcj5QQVRIPC9lbnZhcj4gc2V0dGluZyBvbiBVTklYCiAgICAgICAgICAgIGJveGVzLiBXaGVuIHdpbmUgaXMgcnVuIGxpa2UgPHVzZXJpbnB1dD53aW5lCiAgICAgICAgICAgICAgc29sLmV4ZTwvdXNlcmlucHV0PiwgaWYgPGZpbGVuYW1lPnNvbC5leGU8L2ZpbGVuYW1lPgogICAgICAgICAgICByZXNpZGVzIGluIGEgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUKICAgICAgICAgICAgPGxpdGVyYWw+UGF0aDwvbGl0ZXJhbD4gc2V0dGluZywgd2luZSB3aWxsIHJ1biBpdCAoT2YKICAgICAgICAgICAgY291cnNlLCBpZiA8ZmlsZW5hbWU+c29sLmV4ZTwvZmlsZW5hbWU+IHJlc2lkZXMgaW4gdGhlCiAgICAgICAgICAgIGN1cnJlbnQgZGlyZWN0b3J5LCB3aW5lIHdpbGwgcnVuIHRoYXQgb25lKS4gTWFrZSBzdXJlIGl0CiAgICAgICAgICAgIGFsd2F5cyBoYXMgeW91ciA8ZmlsZW5hbWU+d2luZG93czwvZmlsZW5hbWU+IGRpcmVjdG9yeSBhbmQKICAgICAgICAgICAgc3lzdGVtIGRpcmVjdG9yeSAoRm9yIHRoaXMgc2V0dXAsIGl0IG11c3QgaGF2ZQogICAgICAgICAgICA8ZmlsZW5hbWU+ImM6XFx3aW5kb3dzO2M6XFx3aW5kb3dzXFxzeXN0ZW0iPC9maWxlbmFtZT4pLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iR3JhcGhpY3NEcml2ZXIiID0gIngxMWRydnx0dHlkcnYiPC9wcm9ncmFtbGlzdGluZz4KCSAgICBTZXRzIHRoZSBncmFwaGljcyBkcml2ZXIgdG8gdXNlIGZvciBXaW5lIG91dHB1dC4KCSAgICB4MTFkcnYgaXMgZm9yIFgxMSBvdXRwdXQsIHR0eWRydiBpcyBmb3IgdGV4dCBjb25zb2xlIG91dHB1dC4KCSAgICBXQVJOSU5HOiBpZiB5b3UgdXNlIHR0eWRydiBoZXJlLCB0aGVuIHlvdSB3b24ndCBiZSBhYmxlIHRvIHJ1bgoJICAgIGFueSBXaW5kb3dzIEdVSSBwcm9ncmFtcy4gVGh1cyB0aGlzIG9wdGlvbiBpcyBtYWlubHkgaW50ZXJlc3RpbmcKCSAgICBmb3IgZS5nLiBlbWJlZGRlZCB1c2Ugb2YgV2luZSBpbiB3ZWIgc2VydmVyIHNjcmlwdHMuCgkgICAgTm90ZSB0aGF0IHR0eWRydiBpcyBzdGlsbCB2ZXJ5IGxhY2tpbmcsIHNvIGlmIGl0IGRvZXNuJ3Qgd29yaywKCSAgICByZXNvcnQgdG8gdXNpbmcgInh2ZmIiLCBhIHZpcnR1YWwgWDExIHNlcnZlci4KCSAgPC9wYXJhPgoJICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJQcmludGVyIiA9ICJvZmZ8b24iPC9wcm9ncmFtbGlzdGluZz4gVGVsbHMgd2luZQogICAgICAgICAgICB3aGV0aGVyIHRvIGFsbG93IHByaW50aW5nIHZpYSBwcmludGVyIGRyaXZlcnMgdG8gd29yay4KCSAgICBUaGlzIG9wdGlvbiBpc24ndCBuZWVkZWQgZm9yIG91ciBidWlsdGluIHBzZHJ2IHByaW50ZXIgZHJpdmVyCgkgICAgYXQgYWxsLgogICAgICAgICAgICBVc2luZyB0aGVzZSB0aGluZ3MgYXJlIHByZXR0eSBhbHBoYSwgc28geW91IG1pZ2h0IHdhbnQgdG8KICAgICAgICAgICAgd2F0Y2ggb3V0LiBTb21lIHBlb3BsZSBtaWdodCBmaW5kIGl0IHVzZWZ1bCwgaG93ZXZlci4gSWYKICAgICAgICAgICAgeW91J3JlIG5vdCBwbGFubmluZyB0byB3b3JrIG9uIHByaW50aW5nIHZpYSB3aW5kb3dzIHByaW50ZXIKCSAgICBkcml2ZXJzLCBkb24ndCBldmVuIGFkZCB0aGlzIHRvIHlvdXIgd2luZSBjb25maWcgZmlsZQoJICAgIChJdCBwcm9iYWJseSBpc24ndCBhbHJlYWR5IGluIGl0KS4KCSAgICBDaGVjayBvdXQgdGhlIFtzcG9vbGVyXSBhbmQgW3BhcmFsbGVscG9ydHNdIHNlY3Rpb25zIHRvby4KICAgICAgICAgIDwvcGFyYT4KCSAgPHBhcmE+CgkgICAgPHByb2dyYW1saXN0aW5nPiJTaGVsbExpbmtlciIgPSAid2luZXNoZWxsbGluayI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFRoaXMgc2V0dGluZyBzcGVjaWZpZXMgdGhlIHNoZWxsIGxpbmtlciBzY3JpcHQgdG8gdXNlIGZvciBzZXR0aW5nCgkgICAgdXAgV2luZG93cyBpY29ucyBpbiBlLmcuIEtERSBvciBHbm9tZSB0aGF0IGFyZSBnaXZlbiBieSBwcm9ncmFtcwoJICAgIG1ha2luZyB1c2Ugb2YgYXBwcm9wcmlhdGUgc2hlbGwzMi5kbGwgZnVuY3Rpb25hbGl0eSB0byBjcmVhdGUKCSAgICBpY29ucyBvbiB0aGUgZGVza3RvcC9zdGFydCBtZW51IGR1cmluZyBpbnN0YWxsYXRpb24uCgkgIDwvcGFyYT4KCSAgPHBhcmEgaWQ9ImRpcnN5bWxpbmtzIj4KCSAgICA8cHJvZ3JhbWxpc3Rpbmc+IlNob3dEaXJTeW1saW5rcyIgPSAiMSI8L3Byb2dyYW1saXN0aW5nPgoJICAgIFdpbmUgZG9lc24ndCBwYXNzIGRpcmVjdG9yeSBzeW1saW5rcyB0byBXaW5kb3dzIHByb2dyYW1zIGJ5CgkgICAgZGVmYXVsdCwgYXMgZG9pbmcgc28gbWF5IGNyYXNoIHNvbWUgcHJvZ3JhbXMgdGhhdCBkbwoJICAgIHJlY3Vyc2l2ZSBsb29rdXBzIG9mIHdob2xlIHN1YmRpcmVjdG9yeSB0cmVlcwoJICAgIHdoZW5ldmVyIGEgZGlyZWN0b3J5IHN5bWxpbmsgcG9pbnRzIGJhY2sgdG8gaXRzZWxmIG9yIG9uZSBvZiBpdHMKCSAgICBwYXJlbnQgZGlyZWN0b3JpZXMuCgkgICAgVGhhdCdzIHdoeSB3ZSBkaXNhbGxvd2VkIHRoZSB1c2Ugb2YgZGlyZWN0b3J5IHN5bWxpbmtzCgkgICAgYW5kIGFkZGVkIHRoaXMgc2V0dGluZyB0byByZWVuYWJsZSAoIjEiKSB0aGlzIGZ1bmN0aW9uYWxpdHkuCgkgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN5bWJvbFRhYmxlRmlsZSIgPSAid2luZS5zeW0iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB1cCB0aGUgc3ltYm9sIHRhYmxlIGZpbGUgZm9yIHRoZSB3aW5lIGRlYnVnZ2VyLiBZb3UKICAgICAgICAgICAgcHJvYmFibHkgZG9uJ3QgbmVlZCB0byBmaWRkbGUgd2l0aCB0aGlzLiBNYXkgYmUgdXNlZnVsIGlmCiAgICAgICAgICAgIHlvdXIgd2luZSBpcyBzdHJpcHBlZC4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+SW50cm9kdWN0aW9uIFRvIERMTCBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlcmUgYXJlIGEgZmV3IHRoaW5ncyB5b3Ugd2lsbCBuZWVkIHRvIGtub3cgYmVmb3JlCiAgICAgICAgICAgIGNvbmZpZ3VyaW5nIHRoZSBETEwgc2VjdGlvbnMgaW4geW91ciB3aW5lIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxzZWN0ND4KICAgICAgICAgICAgPHRpdGxlPldpbmRvd3MgRExMIFBhaXJzPC90aXRsZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgTW9zdCB3aW5kb3dzIERMTCdzIGhhdmUgYSB3aW4xNiAoV2luZG93cyAzLngpIGFuZCB3aW4zMgogICAgICAgICAgICAgIChXaW5kb3dzIDl4L05UKSBmb3JtLiAgVGhlIGNvbWJpbmF0aW9uIG9mIHRoZSB3aW4xNiBhbmQKICAgICAgICAgICAgICB3aW4zMiBETEwgdmVyc2lvbnMgYXJlIGNhbGxlZCB0aGUgIkRMTCBwYWlyIi4gVGhpcyBpcyBhCiAgICAgICAgICAgICAgbGlzdCBvZiB0aGUgbW9zdCBjb21tb24gcGFpcnM6CiAgICAgICAgICAgIDwvcGFyYT4KCiAgICAgICAgICAgIDxpbmZvcm1hbHRhYmxlPgogICAgICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PldpbjE2PC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+V2luMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT4KICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgPGZvb3Rub3RlPgogICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICBJcyBpdCBwb3NzaWJsZSB0byB1c2UgbmF0aXZlIGRsbCB3aXRoIHdpbmU/CiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNlZSBuZXh0IHNlY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICAgICAgICAgIDwvZm9vdG5vdGU+CiAgICAgICAgICAgICAgICAgICAgPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUw8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5LRVJORUwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5VU0VSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VVNFUjMyPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Tm8hPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgICAgICAgIDxyb3c+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlNIRUxMPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+U0hFTEwzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREk8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5HREkzMjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5Pk5vITwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5DT01NRExHPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+Q09NRExHMzI8L2VudHJ5PgogICAgICAgICAgICAgICAgICAgIDxlbnRyeT5ZZXM8L2VudHJ5PgogICAgICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICAgICAgPHJvdz4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSPC9lbnRyeT4KICAgICAgICAgICAgICAgICAgICA8ZW50cnk+VkVSU0lPTjwvZW50cnk+CiAgICAgICAgICAgICAgICAgICAgPGVudHJ5PlllczwvZW50cnk+CiAgICAgICAgICAgICAgICAgIDwvcm93PgogICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICA8L3Rncm91cD4KICAgICAgICAgICAgPC9pbmZvcm1hbHRhYmxlPgogICAgICAgICAgPC9zZWN0ND4KCiAgICAgICAgICA8c2VjdDQ+CiAgICAgICAgICAgIDx0aXRsZT5EaWZmZXJlbnQgRm9ybXMgT2YgRExMJ3M8L3RpdGxlPgogICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICBUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IGZvcm1zIG9mIERMTCdzIHdpbmUgY2FuIGxvYWQ6CiAgICAgICAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgVGhlIERMTCdzIHRoYXQgYXJlIGluY2x1ZGVkIHdpdGggd2luZG93cy4gTWFueQogICAgICAgICAgICAgICAgICAgICAgd2luZG93cyBETEwncyBjYW4gYmUgbG9hZGVkIGluIHRoZWlyIG5hdGl2ZQogICAgICAgICAgICAgICAgICAgICAgZm9ybS4gTWFueSB0aW1lcyB0aGVzZSBuYXRpdmUgdmVyc2lvbnMgd29yawogICAgICAgICAgICAgICAgICAgICAgYmV0dGVyIHRoYW4gdGhlaXIgbm9uLU1pY3Jvc29mdCBlcXVpdmFsZW50IC0tCiAgICAgICAgICAgICAgICAgICAgICBvdGhlciB0aW1lcyB0aGV5IGRvbid0LgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5idWlsdGluPC90ZXJtPgogICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICBUaGUgbW9zdCBjb21tb24gZm9ybSBvZiBETEwgbG9hZGluZy4gVGhpcyBpcwogICAgICAgICAgICAgICAgICAgICAgd2hhdCB5b3Ugd2lsbCB1c2UgaWYgdGhlIERMTCBpcyB0b28gc3lzdGVtLXNwZWNpZmljCgkJICAgICAgb3IgZXJyb3ItcHJvbmUgaW4gbmF0aXZlIGZvcm0gKEtFUk5FTCBmb3IgZXhhbXBsZSksCgkJICAgICAgeW91IGRvbid0IGhhdmUgdGhlIG5hdGl2ZSBETEwsIG9yIHlvdSBqdXN0IHdhbnQgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgIE1pY3Jvc29mdC1mcmVlLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgICAgICA8dGVybT5zbzwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgTmF0aXZlIEVMRiBsaWJyYXJpZXMuIEhhcyBiZWVuIGRlcHJlY2F0ZWQsIGlnbm9yZWQuCiAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgICAgIDx0ZXJtPmVsZmRsbDwvdGVybT4KICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgRUxGIGVuY2Fwc3VsYXRlZCB3aW5kb3dzIERMTCdzLgoJCSAgICAgIE5vIGxvbmdlciB1c2VkLCBpZ25vcmVkLgogICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvc2VjdDQ+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsRGVmYXVsdHNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZXNlIHNldHRpbmdzIHByb3ZpZGUgd2luZSdzIGRlZmF1bHQgaGFuZGxpbmcgb2YgRExMIGxvYWRpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZWZhdWx0TG9hZE9yZGVyIiA9IiBuYXRpdmUsIGJ1aWx0aW4iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNldHRpbmcgaXMgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdCBvZiB0aGUgb3JkZXIgaW4KICAgICAgICAgICAgd2hpY2ggdG8gYXR0ZW1wdCBsb2FkaW5nIERMTHMuIElmIHRoZSBmaXJzdCBvcHRpb24gZmFpbHMsCiAgICAgICAgICAgIGl0IHdpbGwgdHJ5IHRoZSBzZWNvbmQsIGFuZCBzbyBvbi4gVGhlIG9yZGVyIHNwZWNpZmllZAogICAgICAgICAgICBhYm92ZSBpcyBwcm9iYWJseSB0aGUgYmVzdCBpbiBtb3N0IGNvbmRpdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPlRoZSBbRGxsUGFpcnNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICBBdCBvbmUgdGltZSwgdGhlcmUgd2FzIGEgc2VjdGlvbiBjYWxsZWQgW0RsbFBhaXJzXSBpbiB0aGUKICAgICAgICAgIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlLCBidXQgdGhpcyBoYXMgYmVlbiBvYnNvbGV0ZWQKICAgICAgICAgIGJlY2F1c2UgdGhlIHBhaXJpbmcgaW5mb3JtYXRpb24gaGFzIG5vdyBiZWVuIGVtYmVkZGVkIGludG8KICAgICAgICAgIFdpbmUgaXRzZWxmLiAoVGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHdhcyBtZXJlbHkgdG8gYmUKICAgICAgICAgIGFibGUgdG8gaXNzdWUgd2FybmluZ3MgaWYgdGhlIHVzZXIgYXR0ZW1wdGVkIHRvIHBhaXIKICAgICAgICAgIGNvZGVwZW5kZW50IDE2LWJpdC8zMi1iaXQgRExMcyBvZiBkaWZmZXJlbnQgdHlwZXMuKSBJZiB5b3UKICAgICAgICAgIHN0aWxsIGhhdmUgdGhpcyBpbiB5b3VyIDxmaWxlbmFtZT5+Ly53aW5lLy5jb25maWc8L2ZpbGVuYW1lPiBvcgogICAgICAgICAgPGZpbGVuYW1lPndpbmUuY29uZjwvZmlsZW5hbWU+LCB5b3UgbWF5IHNhZmVseSBkZWxldGUgaXQuCiAgICAgICAgICA8L3BhcmE+Cgk8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtEbGxPdmVycmlkZXNdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBmb3JtYXQgZm9yIHRoaXMgc2VjdGlvbiBpcyB0aGUgc2FtZSBmb3IgZWFjaCBsaW5lOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiZsdDtETEw+eywmbHQ7RExMPiwmbHQ7RExMPi4uLn0gPSAmbHQ7Rk9STT57LCZsdDtGT1JNPiwmbHQ7Rk9STT4uLi59CiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGxvYWQgYnVpbHRpbiBLRVJORUwgcGFpciAoY2FzZSBkb2Vzbid0CiAgICAgICAgICAgIG1hdHRlciBoZXJlKToKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoia2VybmVsLGtlcm5lbDMyIiA9ICJidWlsdGluIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRvIGxvYWQgdGhlIG5hdGl2ZSBDT01NRExHIHBhaXIsIGJ1dCBpZiB0aGF0IGRvZXNuJ3Qgd29yawogICAgICAgICAgICB0cnkgYnVpbHRpbjoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiY29tbWRsZyxjb21kbGczMiIgPSAibmF0aXZlLGJ1aWx0aW4iCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVG8gbG9hZCB0aGUgbmF0aXZlIENPTUNUTDMyOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiJjb21jdGwzMiIgPSAibmF0aXZlIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEhlcmUgaXMgYSBnb29kIGdlbmVyaWMgc2V0dXAgKEFzIGl0IGlzIGRlZmluZWQgaW4gY29uZmlnCiAgICAgICAgICAgIHRoYXQgd2FzIGluY2x1ZGVkIHdpdGggeW91ciB3aW5lIHBhY2thZ2UpOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltEbGxPdmVycmlkZXNdCiJycGNydDQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm9sZWF1dDMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoib2xlMzIiICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21tZGxnIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImNvbWRsZzMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoidmVyIiAgICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJ2ZXJzaW9uIiAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNoZWxsIiAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoic2hlbGwzMiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJzaGZvbGRlciIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKInNobHdhcGkiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoic2hkb2N2dyIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJsemV4cGFuZCIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImx6MzIiICAgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY29tY3RsMzIiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJjb21tY3RybCIgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImFkdmFwaTMyIiAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoiY3J0ZGxsIiAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtcHIiICAgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIndpbnNwb29sLmRydiIgPSAiYnVpbHRpbiwgbmF0aXZlIgoiZGRyYXciICAgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJkaW5wdXQiICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKImRzb3VuZCIgICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoib3BlbmdsMzIiICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc3ZjcnQiICAgICAgID0gIm5hdGl2ZSwgYnVpbHRpbiIKIm1zdmlkZW8iICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibXN2ZnczMiIgICAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2ljZGEuZHJ2IiAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1jaXNlcS5kcnYiICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWNpd2F2ZS5kcnYiICA9ICJidWlsdGluLCBuYXRpdmUiCiJtY2lhdmkuZHJ2IiAgID0gIm5hdGl2ZSwgYnVpbHRpbiIKIm1jaWFuaW0uZHJ2IiAgPSAibmF0aXZlLCBidWlsdGluIgoibXNhY20uZHJ2IiAgICA9ICJidWlsdGluLCBuYXRpdmUiCiJtc2FjbSIgICAgICAgID0gImJ1aWx0aW4sIG5hdGl2ZSIKIm1zYWNtMzIiICAgICAgPSAiYnVpbHRpbiwgbmF0aXZlIgoibWlkaW1hcC5kcnYiICA9ICJidWlsdGluLCBuYXRpdmUiCjsgeW91IGNhbiBzcGVjaWZ5IGFwcGxpY2F0aW9ucyB0b28KIm5vdGVwYWQuZXhlIiAgPSAibmF0aXZlLCBidWlsdGluIgo7IGRlZmF1bHQgZm9yIGFsbCBvdGhlciBkbGxzCiIqIiA9ICJuYXRpdmUsIGJ1aWx0aW4iCiAgICAgICAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8bm90ZT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgSWYgbG9hZGluZyBvZiB0aGUgbGlicmFyaWVzIHRoYXQgYXJlIGxpc3RlZCBmaXJzdCBmYWlscywKICAgICAgICAgICAgICB3aW5lIHdpbGwganVzdCBnbyBvbiBieSB1c2luZyB0aGUgc2Vjb25kIG9yIHRoaXJkIG9wdGlvbi4KICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9ub3RlPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW2ZvbnRzXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGlzIHNlY3Rpb24gc2V0cyB1cCB3aW5lJ3MgZm9udCBoYW5kbGluZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlJlc29sdXRpb24iID0gIjk2IjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgU2luY2UgdGhlIHdheSBYIGhhbmRsZXMgZm9udHMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHdheQogICAgICAgICAgICBXaW5kb3dzIGRvZXMsIHdpbmUgdXNlcyBhIHNwZWNpYWwgbWVjaGFuaXNtIHRvIGRlYWwgd2l0aAogICAgICAgICAgICB0aGVtLiBJdCBtdXN0IHNjYWxlIHRoZW0gdXNpbmcgdGhlIG51bWJlciBkZWZpbmVkIGluIHRoZQogICAgICAgICAgICAiUmVzb2x1dGlvbiIgc2V0dGluZy4gNjAtMTIwIGFyZSByZWFzb25hYmxlIHZhbHVlcywgOTYgaXMKICAgICAgICAgICAgYSBuaWNlIGluIHRoZSBtaWRkbGUgb25lLiBJZiB5b3UgaGF2ZSB0aGUgcmVhbCB3aW5kb3dzCiAgICAgICAgICAgIGZvbnRzIGF2YWlsYWJsZSAoPGZpbGVuYW1lPiZsdDtkaXJzIHRvCiAgICAgICAgICAgICAgd2luZT4vZG9jdW1lbnRhdGlvbi90dGZzZXJ2ZXI8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgICAgPGZpbGVuYW1lPmZvbnRzPC9maWxlbmFtZT4pLCB0aGlzIHBhcmFtZXRlciB3aWxsIG5vdCBiZSBhcwogICAgICAgICAgICBpbXBvcnRhbnQuIE9mIGNvdXJzZSwgaXQncyBhbHdheXMgZ29vZCB0byBnZXQgeW91ciBYIGZvbnRzCiAgICAgICAgICAgIHdvcmtpbmcgYWNjZXB0YWJseSBpbiB3aW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iRGVmYXVsdCIgPSAiLWFkb2JlLXRpbWVzLSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBUaGUgZGVmYXVsdCBmb250IHdpbmUgdXNlcy4gRm9vbCBhcm91bmQgd2l0aCBpdCBpZiB5b3UnZCBsaWtlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+Ck9QVElPTkFMOgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSA8bGl0ZXJhbD5BbGlhczwvbGl0ZXJhbD4gc2V0dGluZyBhbGxvd3MgeW91IHRvIG1hcCBhbiBYIGZvbnQgdG8gYSBmb250CiAgICAgICAgICAgIHVzZWQgaW4gd2luZS4gVGhpcyBpcyBnb29kIGZvciBhcHBzIHRoYXQgbmVlZCBhIHNwZWNpYWwgZm9udCB5b3UgZG9uJ3QgaGF2ZSwKICAgICAgICAgICAgYnV0IGEgZ29vZCByZXBsYWNlbWVudCBleGlzdHMuIFRoZSBzeW50YXggaXMgbGlrZSBzbzoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiQWxpYXNYIiA9ICJbRmFrZSB3aW5kb3dzIG5hbWVdLFtSZWFsIFggbmFtZV0iJmx0OyxvcHRpb25hbCAibWFza2luZyIgc2VjdGlvbj4KICAgICAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBQcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBSZXBsYWNlICJBbGlhc1giIHdpdGggIkFsaWFzMCIsCiAgICAgICAgICAgIHRoZW4gIkFsaWFzMSIgYW5kIHNvIG9uLiBUaGUgZmFrZSB3aW5kb3dzIG5hbWUgaXMgdGhlIG5hbWUKICAgICAgICAgICAgdGhhdCB0aGUgZm9udCB3aWxsIGJlIHVuZGVyIGEgd2luZG93cyBhcHAgaW4gd2luZS4gVGhlCiAgICAgICAgICAgIHJlYWwgWCBuYW1lIGlzIHRoZSBmb250IG5hbWUgYXMgc2VlbiBieSBYIChSdW4KICAgICAgICAgICAgInhmb250c2VsIikuIFRoZSBvcHRpb25hbCAibWFza2luZyIgc2VjdGlvbiBhbGxvd3MgeW91IHRvCiAgICAgICAgICAgIHV0aWxpemUgdGhlIGZha2Ugd2luZG93cyBuYW1lIHlvdSBkZWZpbmUuIElmIGl0IGlzIG5vdAogICAgICAgICAgICB1c2VkLCB0aGVuIHdpbmUgd2lsbCBqdXN0IHRyeSB0byBleHRyYWN0IHRoZSBmYWtlIHdpbmRvd3MKICAgICAgICAgICAgbmFtZSBpdHNlbGYgYW5kIG5vdCB1c2UgdGhlIHZhbHVlIHlvdSBlbnRlci4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgb2YgYW4gYWxpYXMgd2l0aG91dCBtYXNraW5nLiBUaGUgZm9udCB3aWxsIHNob3cgdXAgaW4gd2luZG93cwogICAgICAgICAgICBhcHBzIGFzICJHb29nbGUiLgoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiQWxpYXMwIiA9ICJGb28sLS1nb29nbGUtIgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSB3aXRoIG1hc2tpbmcgZW5hYmxlZC4gVGhlIGZvbnQgd2lsbCBzaG93IHVwIGFzICJGb28iIGluCiAgICAgICAgICAgIHdpbmRvd3MgYXBwcy4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPgoiQWxpYXMxIiA9ICJGb28sLS1nb29nbGUtLHN1YnN0IgogICAgICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEZvciBtb3JlIGluZm8gY2hlY2sgb3V0IHRoZSA8bGluayBsaW5rZW5kPSJmb250cyI+Rm9udHM8L2xpbms+CgkgICAgY2hhcHRlci4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L3NlY3QzPgoKICAgICAgICA8c2VjdDM+CiAgICAgICAgICA8dGl0bGU+VGhlIFtzZXJpYWxwb3J0c10sIFtwYXJhbGxlbHBvcnRzXSwgW3Nwb29sZXJdLCBhbmQgW3BvcnRzXSBTZWN0aW9uczwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgRXZlbiB0aG91Z2ggaXQgc291bmRzIGxpa2UgYSBsb3Qgb2Ygc2VjdGlvbnMsIHRoZXNlIGFyZQogICAgICAgICAgICBhbGwgY2xvc2VseSByZWxhdGVkLiBUaGV5IGFyZSBhbGwgZm9yIGNvbW11bmljYXRpb25zIGFuZAogICAgICAgICAgICBwYXJhbGxlbCBwb3J0cy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3NlcmlhbHBvcnRzXSBzZWN0aW9uIHRlbGxzIHdpbmUgd2hhdCBzZXJpYWwgcG9ydHMgaXQKICAgICAgICAgICAgaXMgYWxsb3dlZCB0byB1c2UuCiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iQ29tWCIgPSAiL2Rldi90dHlTWSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFJlcGxhY2UgPGxpdGVyYWw+WDwvbGl0ZXJhbD4gd2l0aCB0aGUgbnVtYmVyIG9mIHRoZSBDT00KICAgICAgICAgICAgcG9ydCBpbiBXaW5kb3dzICgxLTgpIGFuZCA8bGl0ZXJhbD5ZPC9saXRlcmFsPiB3aXRoIHRoZQogICAgICAgICAgICBudW1iZXIgb2YgaXQgaW4gPGxpdGVyYWw+WDwvbGl0ZXJhbD4gKFVzdWFsbHkgdGhlIG51bWJlcgogICAgICAgICAgICBvZiB0aGUgcG9ydCBpbiBXaW5kb3dzIG1pbnVzIDEpLiA8bGl0ZXJhbD5Db21YPC9saXRlcmFsPgogICAgICAgICAgICBjYW4gYWN0dWFsbHkgZXF1YWwgYW55IGRldmljZQogICAgICAgICAgICAoPG1lZGlhbGFiZWw+L2Rldi9tb2RlbTwvbWVkaWFsYWJlbD4gaXMgYWNjZXB0YWJsZSkuIEl0IGlzCiAgICAgICAgICAgIG5vdCBhbHdheXMgbmVjZXNzYXJ5IHRvIGRlZmluZSBhbnkgQ09NIHBvcnRzIChBbiBvcHRpb25hbAogICAgICAgICAgICBzZXR0aW5nKS4gSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkNvbTEiID0gIi9kZXYvdHR5UzAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBVc2UgYXMgbWFueSBvZiB0aGVzZSBhcyB5b3UgbGlrZSBpbiB0aGUgc2VjdGlvbiB0byBkZWZpbmUKICAgICAgICAgICAgYWxsIG9mIHRoZSBDT00gcG9ydHMgeW91IG5lZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIFtwYXJhbGxlbHBvcnRzXSBzZWN0aW9uIHNldHMgdXAgYW55IHBhcmFsbGVsIHBvcnRzCiAgICAgICAgICAgIHRoYXQgd2lsbCBiZSBhbGxvd2VkIGFjY2VzcyB1bmRlciB3aW5lLgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkxwdFgiID0gIi9kZXYvbHBZIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgU291bmRzIGZhbWlsaWFyPyBTeW50YXggaXMganVzdCBsaWtlIHRoZSBDT00gcG9ydCBzZXR0aW5nLgogICAgICAgICAgICBSZXBsYWNlIDxsaXRlcmFsPlg8L2xpdGVyYWw+IHdpdGggYSB2YWx1ZSBmcm9tIDEtNCBhcyBpdAogICAgICAgICAgICBpcyBpbiBXaW5kb3dzIGFuZCA8bGl0ZXJhbD5ZPC9saXRlcmFsPiB3aXRoIGEgdmFsdWUgZnJvbQogICAgICAgICAgICAwLTMgKDxsaXRlcmFsPlk8L2xpdGVyYWw+IGlzIHVzdWFsbHkgdGhlIHZhbHVlIGluIHdpbmRvd3MKICAgICAgICAgICAgbWludXMgMSwganVzdCBsaWtlIGZvciBDT00gcG9ydHMpLiBZb3UgZG9uJ3QgYWx3YXlzIG5lZWQKICAgICAgICAgICAgdG8gZGVmaW5lIGEgcGFyYWxsZWwgcG9ydCAoQUtBLCBpdCdzIG9wdGlvbmFsKS4gQXMgd2l0aAogICAgICAgICAgICB0aGUgb3RoZXIgc2VjdGlvbiwgTHB0WCBjYW4gZXF1YWwgYW55IGRldmljZSAoTWF5YmUKICAgICAgICAgICAgPG1lZGlhbGFiZWw+L2Rldi9wcmludGVyPC9tZWRpYWxhYmVsPikuIEhlcmUgaXMgYW4KICAgICAgICAgICAgZXhhbXBsZTogIDxwcm9ncmFtbGlzdGluZz4iTHB0MSIgPSAiL2Rldi9scDAiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgW3Nwb29sZXJdIHNlY3Rpb24gd2lsbCBpbmZvcm0gd2luZSB3aGVyZSB0byBzcG9vbAogICAgICAgICAgICBwcmludCBqb2JzLiBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byB0cnkgcHJpbnRpbmcuIFdpbmUKICAgICAgICAgICAgZG9jcyBjbGFpbSB0aGF0IHNwb29saW5nIGlzICJyYXRoZXIgcHJpbWl0aXZlIiBhdCB0aGlzCiAgICAgICAgICAgIHRpbWUsIHNvIGl0IHdvbid0IHdvcmsgcGVyZmVjdGx5LiBJVCBJUyBPUFRJT05BTC4gVGhlIG9ubHkKICAgICAgICAgICAgc2V0dGluZyB5b3UgdXNlIGluIHRoaXMgc2VjdGlvbiB3b3JrcyB0byBtYXAgYSBwb3J0IChMUFQxLAogICAgICAgICAgICBmb3IgZXhhbXBsZSkgdG8gYSBmaWxlIG9yIGEgY29tbWFuZC4gSGVyZSBpcyBhbiBleGFtcGxlLAogICAgICAgICAgICBtYXBwaW5nIExQVDEgdG8gdGhlIGZpbGUgPGZpbGVuYW1lPm91dC5wczwvZmlsZW5hbWU+OgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkxQVDE6IiA9ICJvdXQucHMiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBUaGUgZm9sbG93aW5nIGNvbW1hbmQgbWFwcyBwcmludGluZyBqb2JzIHRvIExQVDEgdG8gdGhlCiAgICAgICAgICAgIGNvbW1hbmQgPGNvbW1hbmQ+bHByPC9jb21tYW5kPi4gTm90aWNlICB0aGUgfDoKICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJMUFQxOiIgPSAifGxwciI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFRoZSBbcG9ydHNdIHNlY3Rpb24gaXMgdXN1YWxseSB1c2VmdWwgb25seSBmb3IgcGVvcGxlIHdobwogICAgICAgICAgICBuZWVkIGRpcmVjdCBwb3J0IGFjY2VzcyBmb3IgcHJvZ3JhbXMgcmVxdWlyaW5nIGRvbmdsZXMgb3IKICAgICAgICAgICAgc2Nhbm5lcnMuIElGIFlPVSBET04nVCBORUVEIElULCBET04nVCBVU0UgSVQhCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJyZWFkIiA9ICIweDc3OSwweDM3OSwweDI4MC0weDJhMCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBHaXZlcyBkaXJlY3QgcmVhZCBhY2Nlc3MgdG8gdGhvc2UgSU8ncy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IndyaXRlIiA9ICIweDc3OSwweDM3OSwweDI4MC0weDJhMCI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBHaXZlcyBkaXJlY3Qgd3JpdGUgYWNjZXNzIHRvIHRob3NlIElPJ3MuIEl0J3MgcHJvYmFibHkgYQogICAgICAgICAgICBnb29kIGlkZWEgdG8ga2VlcCB0aGUgdmFsdWVzIG9mIHRoZQogICAgICAgICAgICA8bGl0ZXJhbD5yZWFkPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+d3JpdGU8L2xpdGVyYWw+CiAgICAgICAgICAgIHNldHRpbmdzIHRoZSBzYW1lLiBUaGlzIHN0dWZmIHdpbGwgb25seSB3b3JrIHdoZW4geW91J3JlCiAgICAgICAgICAgIHJvb3QuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KCiAgICAgICAgPHNlY3QzIGlkPSJjb25maWctZGVidWctZXRjIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RlYnVnXSwgW1JlZ2lzdHJ5XSwgW3R3ZWFrLmxheW91dF0sIGFuZCBbcHJvZ3JhbXNdIFNlY3Rpb25zPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbRGVidWddIGlzIHVzZWQgdG8gaW5jbHVkZSBvciBleGNsdWRlIGRlYnVnIG1lc3NhZ2VzLCBhbmQgdG8KICAgICAgICAgICAgb3V0cHV0IHRoZW0gdG8gYSBmaWxlLiBUaGUgbGF0dGVyIGlzIHJhcmVseSB1c2VkLiBUSEVTRQogICAgICAgICAgICBBUkUgQUxMIE9QVElPTkFMIEFORCBZT1UgUFJPQkFCTFkgRE9OJ1QgTkVFRCBUTyBBREQgT1IKICAgICAgICAgICAgUkVNT1ZFIEFOWVRISU5HIElOIFRISVMgU0VDVElPTiBUTyBZT1VSIENPTkZJRy4gKEluIGV4dHJlbWUKICAgICAgICAgICAgY2FzZXMgeW91IG1heSB3YW50IHRvIHVzZSB0aGVzZSBvcHRpb25zIHRvIG1hbmFnZSB0aGUgYW1vdW50CiAgICAgICAgICAgIG9mIGluZm9ybWF0aW9uIGdlbmVyYXRlZCBieSB0aGUgPHBhcmFtZXRlcj4tLWRlYnVnbXNnICtyZWxheQogICAgICAgICAgICA8L3BhcmFtZXRlcj4gb3B0aW9uLikKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IkZpbGUiID0gIi9ibGFuY28iPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgU2V0cyB0aGUgbG9nZmlsZSBmb3Igd2luZS4gU2V0IHRvIENPTiB0byBsb2cgdG8gc3RhbmRhcmQgb3V0LgogICAgICAgICAgICBUSElTIElTIFJBUkVMWSBVU0VELgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIDxwcm9ncmFtbGlzdGluZz4iU3B5RXhjbHVkZSIgPSAiV01fU0laRTtXTV9USU1FUjsiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgRXhjbHVkZXMgZGVidWcgbWVzc2FnZXMgYWJvdXQgPGNvbnN0YW50PldNX1NJWkU8L2NvbnN0YW50PgogICAgICAgICAgICBhbmQgPGNvbnN0YW50PldNX1RJTUVSPC9jb25zdGFudD4gaW4gdGhlIGxvZ2ZpbGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJTcHlJbmNsdWRlIiA9ICJXTV9TSVpFO1dNX1RJTUVSOyI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBJbmNsdWRlcyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCA8Y29uc3RhbnQ+V01fU0laRTwvY29uc3RhbnQ+CiAgICAgICAgICAgIGFuZCA8Y29uc3RhbnQ+V01fVElNRVI8L2NvbnN0YW50PiBpbiB0aGUgbG9nZmlsZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlJlbGF5SW5jbHVkZSIgPSAidXNlcjMyLkNyZWF0ZVdpbmRvd0E7Y29tY3RsMzIuKiI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBJbmNsdWRlIG9ubHkgdGhlIGxpc3RlZCBmdW5jdGlvbnMgaW4gYQogICAgICAgICAgICA8cGFyYW1ldGVyPi0tZGVidWdtc2cgK3JlbGF5PC9wYXJhbWV0ZXI+IHRyYWNlLiAgVGhpcyBlbnRyeSBpcwogICAgICAgICAgICBpZ25vcmVkIGlmIHRoZXJlIGlzIGEgPHBhcmFtZXRlcj5SZWxheUV4Y2x1ZGU8L3BhcmFtZXRlcj4gZW50cnkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJSZWxheUV4Y2x1ZGUiID0gIlJ0bEVudGVyQ3JpdGljYWxTZWN0aW9uO1J0bExlYXZlQ3JpdGljYWxTZWN0aW9uIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIEV4Y2x1ZGUgdGhlIGxpc3RlZCBmdW5jdGlvbnMgaW4gYSAKICAgICAgICAgICAgPHBhcmFtZXRlcj4tLWRlYnVnbXNnICtyZWxheTwvcGFyYW1ldGVyPiB0cmFjZS4gIFRoaXMgZW50cnkKICAgICAgICAgICAgb3ZlcnJpZGVzIGFueSBzZXR0aW5ncyBpbiBhIDxwYXJhbWV0ZXI+UmVsYXlJbmNsdWRlPC9wYXJhbWV0ZXI+CiAgICAgICAgICAgIGVudHJ5LiAgSWYgbmVpdGhlciBlbnRyeSBpcyBwcmVzZW50IHRoZW4gdGhlIHRyYWNlIGluY2x1ZGVzCiAgICAgICAgICAgIGV2ZXJ5dGhpbmcuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSW4gYm90aCBlbnRyaWVzIHRoZSBmdW5jdGlvbnMgbWF5IGJlIHNwZWNpZmllZCBlaXRoZXIgYXMgYSAKICAgICAgICAgICAgZnVuY3Rpb24gbmFtZSBvciBhcyBhIG1vZHVsZSBhbmQgZnVuY3Rpb24uICBJbiB0aGlzIGxhdHRlcgogICAgICAgICAgICBjYXNlIHNwZWNpZnkgYW4gYXN0ZXJpc2sgZm9yIHRoZSBmdW5jdGlvbiBuYW1lIHRvIGluY2x1ZGUvZXhjbHVkZQogICAgICAgICAgICBhbGwgZnVuY3Rpb25zIGluIHRoZSBtb2R1bGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW1JlZ2lzdHJ5XSBjYW4gYmUgdXNlZCB0byB0ZWxsIHdpbmUgd2hlcmUgeW91ciBvbGQgd2luZG93cwogICAgICAgICAgICByZWdpc3RyeSBmaWxlcyBleGlzdC4gVGhpcyBzZWN0aW9uIGlzIGNvbXBsZXRlbHkgb3B0aW9uYWwKICAgICAgICAgICAgYW5kIHVzZWxlc3MgdG8gcGVvcGxlIHVzaW5nIHdpbmUgd2l0aG91dCBhbiBleGlzdGluZwogICAgICAgICAgICB3aW5kb3dzIGluc3RhbGxhdGlvbi4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlVzZXJGaWxlTmFtZSIgPSAiL2RpcnMvdG8vdXNlci5yZWciPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgVGhlIGxvY2F0aW9uIG9mIHlvdXIgb2xkIDxmaWxlbmFtZT51c2VyLnJlZzwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgW3R3ZWFrLmxheW91dF0gaXMgZGV2b3RlZCB0byB3aW5lJ3MgbG9vay4gVGhlcmUgaXMgb25seQogICAgICAgICAgICBvbmUgc2V0dGluZyBmb3IgaXQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJXaW5lTG9vayIgPSAid2luMzF8d2luOTV8d2luOTgiPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICAgICAgV2lsbCBjaGFuZ2UgdGhlIGxvb2sgb2Ygd2luZSBmcm9tIFdpbmRvd3MgMy4xIHRvIFdpbmRvd3MgOTUuCiAgICAgICAgICAgIFRoZSA8bGl0ZXJhbD53aW45ODwvbGl0ZXJhbD4gc2V0dGluZyBiZWhhdmVzCiAgICAgICAgICAgIGp1c3QgbGlrZSA8bGl0ZXJhbD53aW45NTwvbGl0ZXJhbD4gbW9zdCBvZiB0aGUgdGltZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbcHJvZ3JhbXNdIGNhbiBiZSB1c2VkIHRvIHNheSB3aGF0IHByb2dyYW1zIHJ1biB1bmRlcgogICAgICAgICAgICBzcGVjaWFsIGNvbmRpdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgPHByb2dyYW1saXN0aW5nPiJEZWZhdWx0IiA9ICIvcHJvZ3JhbS90by9leGVjdXRlLmV4ZSI8L3Byb2dyYW1saXN0aW5nPgogICAgICAgICAgICBTZXRzIHRoZSBwcm9ncmFtIHRvIGJlIHJ1biBpZiB3aW5lIGlzIHN0YXJ0ZWQgd2l0aG91dCBzcGVjaWZ5aW5nIGEgcHJvZ3JhbS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+IlN0YXJ0dXAiID0gIi9wcm9ncmFtL3RvL2V4ZWN1dGUuZXhlIjwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICAgIFNldHMgdGhlIHByb2dyYW0gdG8gYXV0b21hdGljYWxseSBiZSBydW4gYXQgc3RhcnR1cCBldmVyeSB0aW1lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW1dpbk1NXSBTZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBbV2luTU1dIGlzIHVzZWQgdG8gZGVmaW5lIHdoaWNoIG11bHRpbWVkaWEgZHJpdmVycyBoYXZlIHRvIGJlIGxvYWRlZC4gU2luY2UKCSAgICB0aG9zZSBkcml2ZXJzIG1heSBkZXBlbmQgb24gdGhlIG11bHRpbWVkaWEgaW50ZXJmYWNlcyBhdmFpbGFibGUgb24geW91ciBzeXN0ZW0KCSAgICAoT1NTLCBBTFNBLi4uIHRvIG5hbWUgYSBmZXcpLCBpdCdzIG5lZWRlZCB0byBiZSBhYmxlIHRvIGNvbmZpZ3VyZSB3aGljaCBkcml2ZXIKCSAgICBoYXMgdG8gYmUgbG9hZGVkLgogICAgICAgICAgPC9wYXJhPgoKICAgICAgICAgIDxwYXJhPgoJICAgIFRoZSBjb250ZW50IG9mIHRoZSBzZWN0aW9uIGxvb2tzIGxpa2U6CgkgICAgPHByb2dyYW1saXN0aW5nPgpbV2luTU1dCiJEcml2ZXJzIiA9ICJ3aW5lb3NzLmRydiIKIldhdmVNYXBwZXIiID0gIm1zYWNtLmRydiIKIk1pZGlNYXBwZXIiID0gIm1pZGltYXAuZHJ2IgoJICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CgkgICAgQWxsIHRoZSBrZXlzIG11c3QgYmUgZGVmaW5lZDoKCSAgICA8aXRlbWl6ZWRsaXN0PgoJICAgICAgPGxpc3RpdGVtPgoJICAgICAgICA8cGFyYT4KCQkgIFRoZSAiRHJpdmVycyIga2V5IGlzIGEgJzsnIHNlcGFyYXRlZCBsaXN0IG9mIG1vZHVsZXMgbmFtZSwgZWFjaCBvZgoJCSAgdGhlbSBjb250YWluaW5nIGEgbG93IGxldmVsIGRyaXZlci4gQWxsIHRob3NlIGRyaXZlcnMgd2lsbCBiZSBsb2FkZWQKCQkgIHdoZW4gTU1TWVNURU0vV0lOTU0gaXMgc3RhcnRlZCBhbmQgd2lsbCBwcm92aWRlIHRoZWlyIGlubmVyIGZlYXR1cmVzLgoJICAgICAgICA8L3BhcmE+CgkgICAgICA8L2xpc3RpdGVtPgoJICAgICAgPGxpc3RpdGVtPgoJICAgICAgICA8cGFyYT4KCQkgIFRoZSAiV2F2ZU1hcHBlciIgcmVwcmVzZW50cyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGNvbnRhaW5pbmcgdGhlIFdhdmUKCQkgIE1hcHBlciBkcml2ZXIuIE9ubHkgb25lIHdhdmUgbWFwcGVyIGNhbiBiZSBkZWZpbmVkIGluIHRoZSBzeXN0ZW0uCgkgICAgICAgIDwvcGFyYT4KCSAgICAgIDwvbGlzdGl0ZW0+CgkgICAgICA8bGlzdGl0ZW0+CgkgICAgICAgIDxwYXJhPgoJCSAgVGhlICJNaWRpTWFwcGVyIiByZXByZXNlbnRzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgY29udGFpbmluZyB0aGUgTUlESQoJCSAgTWFwcGVyIGRyaXZlci4gT25seSBvbmUgTUlESSBtYXBwZXIgY2FuIGJlIGRlZmluZWQgaW4gdGhlIHN5c3RlbS4KCSAgICAgICAgPC9wYXJhPgoJICAgICAgPC9saXN0aXRlbT4KCSAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgIDwvcGFyYT4KCTwvc2VjdDM+CgogICAgICAgIDxzZWN0MyBpZD0ibmV0d29yay1zZWN0aW9uIj4KICAgICAgICAgIDx0aXRsZT5UaGUgW05ldHdvcmtdIFNlY3Rpb248L3RpdGxlPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIFtOZXR3b3JrXSBjb250YWlucyBzZXR0aW5ncyByZWxhdGVkIHRvCiAgICAgICAgICAgIG5ldHdvcmtpbmcuIEN1cnJlbnRseSB0aGVyZSBpcyBvbmx5IG9uZSB2YWx1ZSB0aGF0IGNhbiBiZSBzZXQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPlVzZURuc0NvbXB1dGVyTmFtZTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgQSBib29sZWFuIHNldHRpbmcgKGRlZmF1bHQ6IDxsaXRlcmFsPlk8L2xpdGVyYWw+KSAKICAgICAgICAgICAgICAgICAgdGhhdCBhZmZlY3RzIHRoZSB3YXkgV2luZSBzZXRzIHRoZSBjb21wdXRlciBuYW1lLiBUaGUgY29tcHV0ZXIKICAgICAgICAgICAgICAgICAgbmFtZSBpbiB0aGUgV2luZG93cyB3b3JsZCBpcyB0aGUgc28tY2FsbGVkIDxlbXBoYXNpcz5OZXRCSU9TIG5hbWU8L2VtcGhhc2lzPi4KICAgICAgICAgICAgICAgICAgSXQgaXMgY29udGFpbmVkIGluIHRoZSA8dmFybmFtZT5Db21wdXRlck5hbWU8L3Zhcm5hbWU+IGluIHRoZSByZWdpc3RyeSBlbnRyeQogICAgICAgICAgICAgICAgICA8dmFybmFtZT5IS0VZX0xPQ0FMX01BQ0hJTkVcU3lzdGVtXEN1cnJlbnRDb250cm9sU2V0XENvbnRyb2xcQ29tcHV0ZXJOYW1lXENvbXB1dGVyTmFtZTwvdmFybmFtZT4uCiAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvICJZIiBvciBtaXNzaW5nLCBXaW5lIHdpbGwgc2V0IHRoZQogICAgICAgICAgICAgICAgICBOZXRCSU9TIG5hbWUgdG8gdGhlIFVuaXggaG9zdCBuYW1lIG9mIHlvdXIgY29tcHV0ZXIsIGlmIAogICAgICAgICAgICAgICAgICBuZWNlc3NhcnkgdHJ1bmNhdGVkIHRvIDMxIGNoYXJhY3RlcnMuIFRoZSBVbml4IGhvc3RuYW1lIGlzIHRoZSBvdXRwdXQKICAgICAgICAgICAgICAgICAgb2YgdGhlIHNoZWxsIGNvbW1hbmQgPGNvbW1hbmQ+aG9zdG5hbWU8L2NvbW1hbmQ+LCB1cCB0byBidXQgbm90CiAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0aGUgZmlyc3QgZG90ICgnLicpLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgbWVhbnMgdGhhdAogICAgICAgICAgICAgICAgICBXaW5kb3dzIHByb2dyYW1zIHJ1bm5pbmcgdW5kZXIgV2luZSBjYW5ub3QgY2hhbmdlIHRoZSBOZXRCSU9TIGNvbXB1dGVyIG5hbWUuCiAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvICJOIiwgV2luZSB3aWxsIHVzZSB0aGUgcmVnaXN0cnkgdmFsdWUgYWJvdmUKICAgICAgICAgICAgICAgICAgdG8gc2V0IHRoZSBOZXRCSU9TIG5hbWUuIE9ubHkgaWYgdGhlIHJlZ2lzdHJ5IGVudHJ5IGRvZXNuJ3QgZXhpc3QgKHVzdWFsbHkKICAgICAgICAgICAgICAgICAgb25seSBkdXJpbmcgdGhlIGZpcnN0IHdpbmUgc3RhcnR1cCkgaXQgd2lsbCB1c2UgdGhlIFVuaXggaG9zdG5hbWUgYXMKICAgICAgICAgICAgICAgICAgdXN1YWwuIFdpbmRvd3MgYXBwbGljYXRpb25zIGNhbiBjaGFuZ2UgdGhlIE5ldEJJT1MgbmFtZS4gVGhlIGNoYW5nZQogICAgICAgICAgICAgICAgICB3aWxsIGJlIGVmZmVjdGl2ZSBhZnRlciBhICJyZWJvb3QiLCBpLmUuIGFmdGVyIHJlc3RhcnRpbmcgV2luZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0MyBpZD0iYXBwZGVmYXVsdHMtc2VjdGlvbiI+CiAgICAgICAgICA8dGl0bGU+VGhlIFtBcHBEZWZhdWx0c10gU2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhlIHNlY3Rpb24gaXMgdXNlZCB0byBvdmVyd3JpdGUgY2VydGFpbiBzZXR0aW5ncyBvZiB0aGlzIGZpbGUgZm9yIGEKICAgICAgICAgICAgc3BlY2lhbCBwcm9ncmFtIHdpdGggZGlmZmVyZW50IHNldHRpbmdzLgogICAgICAgICAgICBbQXBwRGVmYXVsdHNdIGlzIG5vdCB0aGUgcmVhbCBuYW1lIG9mIHRoZSBzZWN0aW9uLiBUaGUgcmVhbCBuYW1lCiAgICAgICAgICAgIGNvbnNpc3RzIG9mIHRoZSBsZWFkaW5nIHdvcmQgQXBwRGVmYXVsdHMgZm9sbG93ZWQgYnkgdGhlIG5hbWUKICAgICAgICAgICAgb2YgdGhlIGV4ZWN1dGFibGUgdGhlIHNlY3Rpb24gaXMgdmFsaWQgZm9yLgoJICAgIFRoZSBlbmQgb2YgdGhlIHNlY3Rpb24gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUKCSAgICBjb3JyZXNwb25kaW5nICJzdGFuZGFyZCIgc2VjdGlvbiBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlCgkgICAgdGhhdCBzaG91bGQgaGF2ZSBzb21lIG9mIGl0cyBzZXR0aW5ncyBvdmVyd3JpdHRlbiB3aXRoIHRoZQoJICAgIGFwcGxpY2F0aW9uIHNwZWNpZmljIHNldHRpbmdzIHlvdSBkZWZpbmUuCgkgICAgVGhlIHRocmVlIHBhcnRzIG9mIHRoZSBzZWN0aW9uIG5hbWUgYXJlIHNlcGFyYXRlZCBieSB0d28gYmFja3NsYXNoZXMuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgQ3VycmVudGx5IHdpbmUgc3VwcG9ydHMgb3ZlcnJpZGluZyBzZWxlY3RlZCBzZXR0aW5ncyB3aXRoaW4KCSAgICB0aGUgc2VjdGlvbnMgW0RsbE92ZXJyaWRlc10sIFt4MTFkcnZdLCBbdmVyc2lvbl0gYW5kIFtkc291bmRdIG9ubHkuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgb3ZlcnJpZGVzIHRoZSBub3JtYWwgc2V0dGluZ3MgZm9yIGEKICAgICAgICAgICAgcHJvZ3JhbToKCSAgICA8cHJvZ3JhbWxpc3Rpbmc+Cjs7IGRlZmF1bHQgc2V0dGluZ3MKW3gxMWRydl0KIk1hbmFnZWQiID0gIlkiCiJEZXNrdG9wIiA9ICJOIgoKOzsgcnVuIGluc3RhbGwgaW4gZGVza3RvcCBtb2RlCltBcHBEZWZhdWx0c1xcaW5zdGFsbC5leGVcXHgxMWRydl0KIk1hbmFnZWQiID0gIk4iCiJEZXNrdG9wIiA9ICI4MDB4NjAwIgoJICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgPC9zZWN0Mz4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2hlcmUgRG8gSSBQdXQgSXQ/PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSB3aW5lIGNvbmZpZyBmaWxlIGNhbiBnbyBpbiB0d28gcGxhY2VzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+PGZpbGVuYW1lPi91c3IvbG9jYWwvZXRjL3dpbmUuY29uZjwvZmlsZW5hbWU+PC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICBBIHN5c3RlbXdpZGUgY29uZmlnIGZpbGUsIHVzZWQgZm9yIGFueW9uZSB3aG8gZG9lc24ndAogICAgICAgICAgICAgICAgaGF2ZSB0aGVpciBvd24uIE5PVEU6IHRoaXMgZmlsZSBpcyBjdXJyZW50bHkgdW51c2VkIGFzIGEKICAgICAgICAgICAgICAgIG5ldyBnbG9iYWwgY29uZmlndXJhdGlvbiBtZWNoYW5pc20gaXMgbm90IGluIHBsYWNlIGF0IHRoaXMKICAgICAgICAgICAgICAgIHRpbWUuCiAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT48ZmlsZW5hbWU+JEhPTUUvLndpbmUvY29uZmlnPC9maWxlbmFtZT48L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgIFlvdXIgb3duIGNvbmZpZyBmaWxlICh3aGljaCBvbmx5IGlzIHVzZWQgZm9yIHlvdXIgdXNlcikuCiAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBTbyBjb3B5IHlvdXIgdmVyc2lvbiBvZiB0aGUgd2luZSBjb25maWcgZmlsZSB0bwogICAgICAgICAgPGZpbGVuYW1lPiRIT01FLy53aW5lL2NvbmZpZzwvZmlsZW5hbWU+CgkgIG9yIDxmaWxlbmFtZT4vdXNyL2xvY2FsL2V0Yy93aW5lLmNvbmY8L2ZpbGVuYW1lPgoJICBmb3Igd2luZSB0byByZWNvZ25pemUgaXQuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5XaGF0IElmIEl0IERvZXNuJ3QgV29yaz88L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlcmUgaXMgYWx3YXlzIGEgY2hhbmNlIHRoYXQgdGhpbmdzIHdpbGwgZ28gd3JvbmcuIElmIHRoZQogICAgICAgICAgdW50aGlua2FibGUgaGFwcGVucywgcmVwb3J0IHRoZSBwcm9ibGVtIHRvCgkgIDx1bGluayB1cmw9Imh0dHA6Ly9idWdzLndpbmVocS5jb20vIj5XaW5lIEJ1Z3ppbGxhPC91bGluaz4sCgkgIHRyeSB0aGUgbmV3c2dyb3VwCiAgICAgICAgICA8c3lzdGVtaXRlbT5jb21wLmVtdWxhdG9ycy5tcy13aW5kb3dzLndpbmU8L3N5c3RlbWl0ZW0+LAoJICBvciB0aGUgSVJDIGNoYW5uZWwgPHN5c3RlbWl0ZW0+I1dpbmVIUTwvc3lzdGVtaXRlbT4gZm91bmQgb24KICAgICAgICAgIGlyYy5mcmVlbm9kZS5uZXQsIG9yIGNvbm5lY3RlZCBzZXJ2ZXJzLgoJICBNYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBsb29rZWQgb3ZlciB0aGlzIGRvY3VtZW50IHRob3JvdWdobHksCgkgIGFuZCBoYXZlIGFsc28gcmVhZDoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+PGZpbGVuYW1lPlJFQURNRTwvZmlsZW5hbWU+PC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgPGZpbGVuYW1lPmh0dHA6Ly93d3cud2luZWhxLm9yZy90cm91YmxlLzwvZmlsZW5hbWU+CiAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiBpbmRlZWQgaXQgbG9va3MgbGlrZSB5b3UndmUgZG9uZSB5b3VyIHJlc2VhcmNoLCBiZQogICAgICAgICAgcHJlcGFyZWQgZm9yIGhlbHBmdWwgc3VnZ2VzdGlvbnMuIElmIHlvdSBoYXZlbid0LCBicmFjZQogICAgICAgICAgeW91cnNlbGYgZm9yIGhlYXZpbmcgZmxhbWluZy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0ieDExZHJ2Ij4KICAgICAgPHRpdGxlPkNvbmZpZ3VyaW5nIHRoZSB4MTFkcnYgRHJpdmVyPC90aXRsZT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24veDExZHJ2PC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIE1vc3QgV2luZSB1c2VycyBydW4gV2luZSB1bmRlciB0aGUgd2luZG93aW5nIHN5c3RlbSBrbm93biBhcwogICAgICAgIFgxMS4gRHVyaW5nIG1vc3Qgb2YgV2luZSdzIGhpc3RvcnksIHRoaXMgd2FzIHRoZSBvbmx5IGRpc3BsYXkKICAgICAgICBkcml2ZXIgYXZhaWxhYmxlLCBidXQgaW4gcmVjZW50IHllYXJzLCBwYXJ0cyBvZiBXaW5lIGhhdmUgYmVlbgogICAgICAgIHJlb3JnYW5pemVkIHRvIGFsbG93IGZvciBvdGhlciBkaXNwbGF5IGRyaXZlcnMgKGFsdGhvdWdoIHRoZQogICAgICAgIG9ubHkgYWx0ZXJuYXRpdmUgY3VycmVudGx5IGF2YWlsYWJsZSBpcyBQYXRyaWsgU3RyaWR2YWxsJ3MKICAgICAgICBuY3Vyc2VzLWJhc2VkIHR0eWRydiwgd2hpY2ggaGUgY2xhaW1zIHdvcmtzIGZvciBkaXNwbGF5aW5nCiAgICAgICAgY2FsYy5leGUpLiBUaGUgZGlzcGxheSBkcml2ZXIgaXMgY2hvc2VuIHdpdGggdGhlCiAgICAgICAgPGxpdGVyYWw+R3JhcGhpY3NEcml2ZXI8L2xpdGVyYWw+IG9wdGlvbiBpbiB0aGUgW3dpbmVdIHNlY3Rpb24KICAgICAgICBvZiA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiwgYnV0IEkgd2lsbCBvbmx5IGNvdmVyIHRoZQogICAgICAgIHgxMWRydiBkcml2ZXIgaW4gdGhpcyBhcnRpY2xlLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPngxMWRydiBtb2RlcyBvZiBvcGVyYXRpb248L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSB4MTFkcnYgZHJpdmVyIGNvbnNpc3RzIG9mIHR3byBjb25jZXB0dWFsbHkgZGlzdGluY3QKICAgICAgICAgIHBpZWNlcywgdGhlIGdyYXBoaWNzIGRyaXZlciAoR0RJIHBhcnQpLCBhbmQgdGhlIHdpbmRvd2luZwogICAgICAgICAgZHJpdmVyIChVU0VSIHBhcnQpLiBCb3RoIG9mIHRoZXNlIGFyZSBsaW5rZWQgaW50byB0aGUKICAgICAgICAgIDxmaWxlbmFtZT5saWJ4MTFkcnYuc288L2ZpbGVuYW1lPiBtb2R1bGUsIHRob3VnaCAod2hpY2ggeW91CiAgICAgICAgICBsb2FkIHdpdGggdGhlIDxsaXRlcmFsPkdyYXBoaWNzRHJpdmVyPC9saXRlcmFsPiBvcHRpb24pLiBJbgogICAgICAgICAgV2luZSwgcnVubmluZyBvbiBYMTEsIHRoZSBncmFwaGljcyBkcml2ZXIgbXVzdCBkcmF3IG9uCiAgICAgICAgICBkcmF3YWJsZXMgKHdpbmRvdyBpbnRlcmlvcnMpIHByb3ZpZGVkIGJ5IHRoZSB3aW5kb3dpbmcKICAgICAgICAgIGRyaXZlci4gVGhpcyBkaWZmZXJzIGEgYml0IGZyb20gdGhlIFdpbmRvd3MgbW9kZWwsIHdoZXJlIHRoZQogICAgICAgICAgd2luZG93aW5nIHN5c3RlbSBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGRldmljZSBjb250ZXh0cwogICAgICAgICAgY29udHJvbGxlZCBieSB0aGUgZ3JhcGhpY3MgZHJpdmVyLCBhbmQgYXBwbGljYXRpb25zIGFyZQogICAgICAgICAgYWxsb3dlZCB0byBob29rIGludG8gdGhpcyByZWxhdGlvbnNoaXAgYW55d2hlcmUgdGhleSBsaWtlLgogICAgICAgICAgVGh1cywgdG8gcHJvdmlkZSBhbnkgcmVhc29uYWJsZSB0cmFkZW9mZiBiZXR3ZWVuCiAgICAgICAgICBjb21wYXRpYmlsaXR5IGFuZCB1c2FiaWxpdHksIHRoZSB4MTFkcnYgaGFzIHRocmVlIGRpZmZlcmVudAogICAgICAgICAgbW9kZXMgb2Ygb3BlcmF0aW9uLgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHZhcmlhYmxlbGlzdD4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPk1hbmFnZWQ8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0LiBTcGVjaWZpZWQgYnkgdXNpbmcgdGhlIDxsaXRlcmFsPk1hbmFnZWQ8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICB3aW5lIGNvbmZpZyBmaWxlIG9wdGlvbiAoc2VlIGJlbG93KS4KICAgICAgICAgICAgICAgIE9yZGluYXJ5IHRvcC1sZXZlbCBmcmFtZSB3aW5kb3dzIHdpdGggdGhpY2sgYm9yZGVycywKICAgICAgICAgICAgICAgIHRpdGxlIGJhcnMsIGFuZCBzeXN0ZW0gbWVudXMgd2lsbCBiZSBtYW5hZ2VkIGJ5IHlvdXIKICAgICAgICAgICAgICAgIHdpbmRvdyBtYW5hZ2VyLiBUaGlzIGxldHMgdGhlc2UgYXBwbGljYXRpb25zIGludGVncmF0ZQogICAgICAgICAgICAgICAgYmV0dGVyIHdpdGggdGhlIHJlc3Qgb2YgeW91ciBkZXNrdG9wLCBidXQgbWF5IG5vdAogICAgICAgICAgICAgICAgYWx3YXlzIHdvcmsgcGVyZmVjdGx5IChhIHJld3JpdGUgb2YgdGhpcyBtb2RlIG9mCiAgICAgICAgICAgICAgICBvcGVyYXRpb24sIHRvIG1ha2UgaXQgbW9yZSByb2J1c3QgYW5kIGxlc3MgcGF0Y2h5LCBpcwogICAgICAgICAgICAgICAgY3VycmVudGx5IGJlaW5nIGRvbmUsIHRob3VnaCwgYW5kIGl0J3MgcGxhbm5lZCB0byBiZQogICAgICAgICAgICAgICAgZmluaXNoZWQgYmVmb3JlIHRoZSBXaW5lIDEuMCByZWxlYXNlKS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlVubWFuYWdlZC9Ob3JtYWw8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFdpbmRvdyBtYW5hZ2VyIGluZGVwZW5kZW50IChhbnkgcnVubmluZwogICAgICAgICAgICAgICAgd2luZG93IG1hbmFnZXIgaXMgaWdub3JlZCBjb21wbGV0ZWx5KS4gV2luZG93CiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucyAodGl0bGUgYmFycywgYm9yZGVycywgZXRjKSBhcmUgZHJhd24gYnkKICAgICAgICAgICAgICAgIFdpbmUgdG8gbG9vayBhbmQgZmVlbCBsaWtlIHRoZSByZWFsIFdpbmRvd3MuIFRoaXMgaXMKICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBhcHBsaWNhdGlvbnMgdGhhdCBkZXBlbmQgb24gYmVpbmcgYWJsZQogICAgICAgICAgICAgICAgdG8gY29tcHV0ZSB0aGUgZXhhY3Qgc2l6ZXMgb2YgYW55IHN1Y2ggZGVjb3JhdGlvbnMsIG9yCiAgICAgICAgICAgICAgICB0aGF0IHdhbnQgdG8gZHJhdyB0aGVpciBvd24uCiAgICAgICAgICAgICAgICBVbm1hbmFnZWQgbW9kZSBpcyBvbmx5IHVzZWQgaWYgYm90aCBNYW5hZ2VkIGFuZCBEZXNrdG9wCiAgICAgICAgICAgICAgICBhcmUgc2V0IHRvIGRpc2FibGVkLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcC1pbi1hLUJveDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgU3BlY2lmaWVkIGJ5IHVzaW5nIHRoZSA8bGl0ZXJhbD5EZXNrdG9wPC9saXRlcmFsPgoJCXdpbmUgY29uZmlnIGZpbGUgb3B0aW9uIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgKGFkZGluZyBhIGdlb21ldHJ5LCBlLmcuIDxsaXRlcmFsPjgwMHg2MDA8L2xpdGVyYWw+CgkJZm9yIGEgc3VjaC1zaXplZCBkZXNrdG9wLCBvcgogICAgICAgICAgICAgICAgZXZlbiA8bGl0ZXJhbD44MDB4NjAwKzArMDwvbGl0ZXJhbD4gdG8KICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcG9zaXRpb24gdGhlIGRlc2t0b3AgYXQgdGhlIHVwcGVyLWxlZnQKICAgICAgICAgICAgICAgIGNvcm5lciBvZiB0aGUgZGlzcGxheSkuIFRoaXMgaXMgdGhlIG1vZGUgbW9zdAogICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBXaW5kb3dzIG1vZGVsLiBBbGwgYXBwbGljYXRpb24KICAgICAgICAgICAgICAgIHdpbmRvd3Mgd2lsbCBqdXN0IGJlIFdpbmUtZHJhd24gd2luZG93cyBpbnNpZGUgdGhlCiAgICAgICAgICAgICAgICBXaW5lLXByb3ZpZGVkIGRlc2t0b3Agd2luZG93ICh3aGljaCB3aWxsIGl0c2VsZiBiZQogICAgICAgICAgICAgICAgbWFuYWdlZCBieSB5b3VyIHdpbmRvdyBtYW5hZ2VyKSwgYW5kIFdpbmRvd3MKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyBjYW4gcm9hbSBmcmVlbHkgd2l0aGluIHRoaXMgdmlydHVhbAogICAgICAgICAgICAgICAgd29ya3NwYWNlIGFuZCB0aGluayB0aGV5IG93biBpdCBhbGwsIHdpdGhvdXQKICAgICAgICAgICAgICAgIGRpc3R1cmJpbmcgeW91ciBvdGhlciBYIGFwcHMuCgkJTm90ZTogY3VycmVudGx5IHRoZXJlJ3Mgb25lIGRlc2t0b3Agd2luZG93IGZvciBldmVyeQoJCWFwcGxpY2F0aW9uOyB0aGlzIHdpbGwgYmUgZml4ZWQgYXQgc29tZSB0aW1lLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5UaGUgW3gxMWRydl0gc2VjdGlvbjwvdGl0bGU+CgogICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5NYW5hZ2VkPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBXaW5lIGNhbiBsZXQgZnJhbWUgd2luZG93cyBiZSBtYW5hZ2VkIGJ5IHlvdXIgd2luZG93CiAgICAgICAgICAgICAgICBtYW5hZ2VyLiBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgd2hldGhlciB5b3Ugd2FudCB0aGF0CiAgICAgICAgICAgICAgICBieSBkZWZhdWx0LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgQ3JlYXRlcyBhIG1haW4gZGVza3RvcCB3aW5kb3cgb2YgYSBzcGVjaWZpZWQgc2l6ZQoJCXRvIGRpc3BsYXkgYWxsIFdpbmRvd3MgYXBwbGljYXRpb25zIGluLgoJCVRoZSBzaXplIGFyZ3VtZW50IGNvdWxkIGUuZy4gYmUgIjgwMHg2MDAiLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RFhHcmFiPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBJZiB5b3UgZG9uJ3QgdXNlIERHQSwgeW91IG1heSB3YW50IGFuIGFsdGVybmF0aXZlCiAgICAgICAgICAgICAgICBtZWFucyB0byBjb252aW5jZSB0aGUgbW91c2UgY3Vyc29yIHRvIHN0YXkgd2l0aGluIHRoZQogICAgICAgICAgICAgICAgZ2FtZSB3aW5kb3cuIFRoaXMgb3B0aW9uIGRvZXMgdGhhdC4gT2YgY291cnNlLCBhcyB3aXRoCiAgICAgICAgICAgICAgICBER0EsIGlmIFdpbmUgY3Jhc2hlcywgeW91J3JlIGluIHRyb3VibGUgKGFsdGhvdWdoIG5vdAogICAgICAgICAgICAgICAgYXMgYmFkbHkgYXMgaW4gdGhlIERHQSBjYXNlLCBzaW5jZSB5b3UgY2FuIHN0aWxsIHVzZQogICAgICAgICAgICAgICAgdGhlIGtleWJvYXJkIHRvIGdldCBvdXQgb2YgWCkuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Vc2VER0E8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoZXRoZXIgeW91IHdhbnQgRGlyZWN0RHJhdyB0byB1c2UKICAgICAgICAgICAgICAgIFhGcmVlODYncyA8Zmlyc3R0ZXJtPkRpcmVjdCBHcmFwaGljcwogICAgICAgICAgICAgICAgICBBcmNoaXRlY3R1cmU8L2ZpcnN0dGVybT4gKERHQSksIHdoaWNoIGlzIGFibGUgdG8KICAgICAgICAgICAgICAgIHRha2Ugb3ZlciB0aGUgZW50aXJlIGRpc3BsYXkgYW5kIHJ1biB0aGUgZ2FtZQogICAgICAgICAgICAgICAgZnVsbC1zY3JlZW4gYXQgbWF4aW11bSBzcGVlZC4gKFdpdGggREdBMSAoWEZyZWU4NgogICAgICAgICAgICAgICAgMy54KSwgeW91IHN0aWxsIGhhdmUgdG8gY29uZmlndXJlIHRoZSBYIHNlcnZlciB0byB0aGUKICAgICAgICAgICAgICAgIGdhbWUncyByZXF1ZXN0ZWQgYnBwIGZpcnN0LCBidXQgd2l0aCBER0EyIChYRnJlZTg2CiAgICAgICAgICAgICAgICA0LngpLCBydW50aW1lIGRlcHRoLXN3aXRjaGluZyBtYXkgYmUgcG9zc2libGUsCiAgICAgICAgICAgICAgICBkZXBlbmRpbmcgb24geW91ciBkcml2ZXIncyBjYXBhYmlsaXRpZXMuKSBCdXQgYmUgYXdhcmUKICAgICAgICAgICAgICAgIHRoYXQgaWYgV2luZSBjcmFzaGVzIHdoaWxlIGluIERHQSBtb2RlLCBpdCBtYXkgbm90IGJlCiAgICAgICAgICAgICAgICBwb3NzaWJsZSB0byByZWdhaW4gY29udHJvbCBvdmVyIHlvdXIgY29tcHV0ZXIgd2l0aG91dAogICAgICAgICAgICAgICAgcmVib290aW5nLiBER0Egbm9ybWFsbHkgcmVxdWlyZXMgZWl0aGVyIHJvb3QKICAgICAgICAgICAgICAgIHByaXZpbGVnZXMgb3IgcmVhZC93cml0ZSBhY2Nlc3MgdG8KICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vZGV2L21lbTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+VXNlWFNobTwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgSWYgeW91IGRvbid0IHdhbnQgRGlyZWN0WCB0byB1c2UgREdBLCB5b3UgY2FuIGF0IGxlYXN0CiAgICAgICAgICAgICAgICB1c2UgWCBTaGFyZWQgTWVtb3J5IGV4dGVuc2lvbnMgKFhTaG0pLiBJdCBpcyBtdWNoCiAgICAgICAgICAgICAgICBzbG93ZXIgdGhhbiBER0EsIHNpbmNlIHRoZSBhcHAgZG9lc24ndCBoYXZlIGRpcmVjdAogICAgICAgICAgICAgICAgYWNjZXNzIHRvIHRoZSBwaHlzaWNhbCBmcmFtZSBidWZmZXIsIGJ1dCB1c2luZyBzaGFyZWQKICAgICAgICAgICAgICAgIG1lbW9yeSB0byBkcmF3IHRoZSBmcmFtZSBpcyBhdCBsZWFzdCBmYXN0ZXIgdGhhbgogICAgICAgICAgICAgICAgc2VuZGluZyB0aGUgZGF0YSB0aHJvdWdoIHRoZSBzdGFuZGFyZCBYMTEgc29ja2V0LCBldmVuCiAgICAgICAgICAgICAgICB0aG91Z2ggV2luZSdzIFhTaG0gc3VwcG9ydCBpcyBzdGlsbCBrbm93biB0byBjcmFzaAogICAgICAgICAgICAgICAgc29tZXRpbWVzLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+RGVza3RvcERvdWJsZUJ1ZmZlcmVkPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgaWYgeW91IHVzZSB0aGUKICAgICAgICAgICAgICAgIDxwYXJhbWV0ZXI+LS1kZXNrdG9wPC9wYXJhbWV0ZXI+IGNvbW1hbmQtbGluZSBvcHRpb24KICAgICAgICAgICAgICAgIHRvIHJ1biBpbiBhIGRlc2t0b3Agd2luZG93LiBTcGVjaWZpZXMgd2hldGhlciB0bwogICAgICAgICAgICAgICAgY3JlYXRlIHRoZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGEgZG91YmxlLWJ1ZmZlcmVkCiAgICAgICAgICAgICAgICB2aXN1YWwsIHNvbWV0aGluZyBtb3N0IE9wZW5HTCBnYW1lcyBuZWVkIHRvIHJ1bgogICAgICAgICAgICAgICAgY29ycmVjdGx5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+QWxsb2NTeXN0ZW1Db2xvcnM8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgaGF2ZSBhIHBhbGV0dGUtYmFzZWQgZGlzcGxheSwgaS5lLgogICAgICAgICAgICAgICAgaWYgeW91ciBYIHNlcnZlciBpcyBzZXQgdG8gYSBkZXB0aCBvZiA4YnBwLCBhbmQgaWYgeW91CiAgICAgICAgICAgICAgICBoYXZlbid0IHJlcXVlc3RlZCBhIHByaXZhdGUgY29sb3IgbWFwLiBJdCBzcGVjaWZpZXMKICAgICAgICAgICAgICAgIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaGFyZWQgY29sb3JtYXAgY2VsbHMgKHBhbGV0dGUKICAgICAgICAgICAgICAgIGVudHJpZXMpIFdpbmUgc2hvdWxkIG9jY3VweS4gVGhlIGhpZ2hlciB0aGlzIHZhbHVlLAogICAgICAgICAgICAgICAgdGhlIGxlc3MgY29sb3JzIHdpbGwgYmUgYXZhaWxhYmxlIHRvIG90aGVyCiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMuCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dGVybT5Qcml2YXRlQ29sb3JNYXA8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIEFwcGxpZXMgb25seSBpZiB5b3UgaGF2ZSBhIHBhbGV0dGUtYmFzZWQgZGlzcGxheSwgaS5lLgogICAgICAgICAgICAgICAgaWYgeW91ciBYIHNlcnZlciBpcyBzZXQgdG8gYSBkZXB0aCBvZiA4YnBwLiBJdAogICAgICAgICAgICAgICAgc3BlY2lmaWVzIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gdXNlIHRoZSBzaGFyZWQgY29sb3IKICAgICAgICAgICAgICAgIG1hcCwgYnV0IGEgcHJpdmF0ZSBjb2xvciBtYXAsIHdoZXJlIGFsbCAyNTYgY29sb3JzIGFyZQogICAgICAgICAgICAgICAgYXZhaWxhYmxlLiBUaGUgZGlzYWR2YW50YWdlIGlzIHRoYXQgV2luZSdzIHByaXZhdGUKICAgICAgICAgICAgICAgIGNvbG9yIG1hcCBpcyBvbmx5IHNlZW4gd2hpbGUgdGhlIG1vdXNlIHBvaW50ZXIgaXMKICAgICAgICAgICAgICAgIGluc2lkZSBhIFdpbmUgd2luZG93LCBzbyBwc3ljaGVkZWxpYyBmbGFzaGluZyBhbmQKICAgICAgICAgICAgICAgIGZ1bmt5IGNvbG9ycyB3aWxsIGJlY29tZSByb3V0aW5lIGlmIHlvdSB1c2UgdGhlIG1vdXNlCiAgICAgICAgICAgICAgICBhIGxvdC4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlN5bmNocm9ub3VzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBUbyBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgWDExIG9wZXJhdGlvbnMuCgkJSWYgV2luZSBjcmFzaGVzIHdpdGggYW4gWDExIGVycm9yLCB0aGVuIHlvdSBzaG91bGQgZW5hYmxlCgkJU3luY2hyb25vdXMgbW9kZSB0byBkaXNhYmxlIFgxMSByZXF1ZXN0IGNhY2hpbmcgaW4gb3JkZXIKCQl0byBtYWtlIHN1cmUgdGhhdCB0aGUgWDExIGVycm9yIGhhcHBlbnMgZGlyZWN0bHkgYWZ0ZXIKCQl0aGUgY29ycmVzcG9uZGluZyBYMTEgY2FsbCBpbiB0aGUgbG9nIGZpbGUgYXBwZWFycy4KCQlXaWxsIHNsb3cgZG93biBYMTEgb3V0cHV0ICEKICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlNjcmVlbkRlcHRoPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBBcHBsaWVzIG9ubHkgdG8gbXVsdGktZGVwdGggZGlzcGxheXMuIEl0IHNwZWNpZmllcwogICAgICAgICAgICAgICAgd2hpY2ggb2YgdGhlIGF2YWlsYWJsZSBkZXB0aHMgV2luZSBzaG91bGQgdXNlIChhbmQKICAgICAgICAgICAgICAgIHRlbGwgV2luZG93cyBhcHBzIGFib3V0KS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPkRpc3BsYXk8L3Rlcm0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgIFRoaXMgc3BlY2lmaWVzIHdoaWNoIFgxMSBkaXNwbGF5IHRvIHVzZSwgYW5kIGlmCiAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHdpbGwgb3ZlcnJpZGUgdGhlCiAgICAgICAgICAgICAgICA8ZW52YXI+RElTUExBWTwvZW52YXI+IGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHRlcm0+UGVyZmVjdEdyYXBoaWNzPC90ZXJtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICBUaGlzIG9wdGlvbiBvbmx5IGRldGVybWluZXMgd2hldGhlciBmYXN0IFgxMSByb3V0aW5lcwogICAgICAgICAgICAgICAgb3IgZXhhY3QgV2luZSByb3V0aW5lcyB3aWxsIGJlIHVzZWQgZm9yIGNlcnRhaW4gUk9QCiAgICAgICAgICAgICAgICBjb2RlcyBpbiBibGl0IG9wZXJhdGlvbnMuIE1vc3QgdXNlcnMgd29uJ3Qgbm90aWNlIGFueQogICAgICAgICAgICAgICAgZGlmZmVyZW5jZS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx0ZXJtPlRleHRDUDwvdGVybT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBDb2RlcGFnZSB0byBiZSB1c2VkIGZvciByZW5kZXJpbmcgdGhlIHRleHQgaW4gWDExCgkJb3V0cHV0LiBTb21lIHNhbXBsZSB2YWx1ZXMgd291bGQgYmUgNDM3IChVU0EsIENhbmFkYSksCgkJODUwIChFdXJvcGUpLCA4NTIgKENlbnRyYWwvRWFzdGVybiBFdXJvcGUpLCA4NTUKCQkoQ3lyaWxsaWMpLiBGb3IgYWRkaXRpb25hbCBzdWl0YWJsZSB2YWx1ZXMsIHNlZSBlLmcuIHRoZSBMaW51eAoJCWtlcm5lbCdzIGNvZGVwYWdlIGNvbmZpZ3VyYXRpb24gcGFnZS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogICAgJnJlZ2lzdHJ5OwoKICAgIDxzZWN0MSBpZD0id2luZG93cy12ZXJzaW9ucyI+CgogICAgICA8dGl0bGU+U2V0dGluZyB0aGUgd2luZG93cyBhbmQgRE9TIHZlcnNpb24gdmFsdWUgdGhhdCdzIHBhc3NlZCB0bwogICAgICBwcm9ncmFtczwvdGl0bGU+CiAgICAgIAogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICBPY3QgMTggMjAwMgogICAgICA8L3BhcmE+CgogICAgICA8cGFyYT4KICAgICAgICBUaGUgd2luZG93cyBhbmQgRE9TIHZlcnNpb24gdmFsdWUgYSBwcm9ncmFtIGdldHMgZS5nLiBieSBjYWxsaW5nIHRoZQoJV2luZG93cyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgcGxheXMgYSB2ZXJ5IGltcG9ydGFudCByb2xlOgoJSWYgeW91ciBXaW5lIGluc3RhbGxhdGlvbiBmb3Igd2hhdGV2ZXIgcmVhc29uIGZhaWxzIHRvIHByb3ZpZGUKCXRvIHlvdXIgcHJvZ3JhbSB0aGUgY29ycmVjdCB2ZXJzaW9uIHZhbHVlIHRoYXQgaXQgZXhwZWN0cywKCXRoZW4gdGhlIHByb2dyYW0gbWlnaHQgYXNzdW1lIHNvbWUgdmVyeSBiYWQgdGhpbmdzIGFuZCBmYWlsIChpbgoJdGhlIHdvcnN0IGNhc2UgZXZlbiBzaWxlbnRseSAhKS4KICAgIAogICAgICAgIEZvcnR1bmF0ZWx5IFdpbmUgY29udGFpbnMgc29tZSBtb3JlIG9yIGxlc3MgaW50ZWxsaWdlbnQgV2luZG93cwoJdmVyc2lvbiBndWVzc2luZyBhbGdvcml0aG0gdGhhdCB3aWxsIHRyeSB0byBndWVzcyB0aGUgV2luZG93cwoJdmVyc2lvbiBhIHByb2dyYW0gbWlnaHQgZXhwZWN0IGFuZCBwYXNzIHRoYXQgb25lIG9uIHRvIHRoZQoJcHJvZ3JhbS4KCglUaHVzIHlvdSBzaG91bGQgPGVtcGhhc2lzPm5vdDwvZW1waGFzaXM+IGxpZ2h0bHkgY29uZmlndXJlIGEgdmVyc2lvbiB2YWx1ZSwgYXMgdGhpcyB3aWxsIGJlIGEgImZvcmNlZCIgdmFsdWUgYW5kIHRodXMgdHVybiBvdXQgdG8gYmUgcmF0aGVyIGhhcm1mdWwgdG8gcHJvcGVyIG9wZXJhdGlvbi4gSW4gb3RoZXIgd29yZHM6IG9ubHkgZXhwbGljaXRseSBzZXQgYSBXaW5kb3dzIHZlcnNpb24gdmFsdWUgaW4gY2FzZSBXaW5lJ3Mgb3duIHZlcnNpb24gZGV0ZWN0aW9uIHdhcyB1bmFibGUgdG8gcHJvdmlkZSB0aGUgY29ycmVjdCBXaW5kb3dzIHZlcnNpb24gYW5kIHRoZSBwcm9ncmFtIGZhaWxzLgogICAgICA8L3BhcmE+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyB0byBjb25maWd1cmUgdGhlIFdpbmRvd3MgYW5kIERPUyB2ZXJzaW9uIHZhbHVlIFdpbmUKCXNob3VsZCByZXR1cm48L3RpdGxlPgoJCgk8cGFyYT4KCVRoZSB2ZXJzaW9uIHZhbHVlcyBjYW4gYmUgY29uZmlndXJlZCBpbiB0aGUgd2luZSBjb25maWcgZmlsZSBpbgoJdGhlIFtWZXJzaW9uXSBzZWN0aW9uLgoJPC9wYXJhPgoKCTx2YXJpYWJsZWxpc3Q+CgkgIDx2YXJsaXN0ZW50cnk+CgkgICAgPHRlcm0+IldpbmRvd3MiID0gIiZsdDt2ZXJzaW9uIHN0cmluZyZndDsiPC90ZXJtPgoJICAgIDxsaXN0aXRlbT4KCSAgICAgIDxwYXJhPgoJICAgICAgICBkZWZhdWx0OiBub25lOyBjaG9zZW4gYnkgc2VtaS1pbnRlbGxpZ2VudCBkZXRlY3Rpb24KCSAgICAgICAgbWVjaGFuaXNtIGJhc2VkIG9uIERMTCBlbnZpcm9ubWVudC4KCSAgICAgICAgVXNlZCB0byBzcGVjaWZ5IHdoaWNoIFdpbmRvd3MgdmVyc2lvbiB0byByZXR1cm4gdG8KCSAgICAgICAgcHJvZ3JhbXMgIChmb3JjZWQgIHZhbHVlLCBvdmVycmlkZXMgc3RhbmRhcmQgZGV0ZWN0aW9uCgkgICAgICAgIG1lY2hhbmlzbSAgISkuIFZhbGlkICBzZXR0aW5ncyBhcmUgZS5nLiAid2luMzEiLCAid2luOTUiLAoJICAgICAgICAid2luOTgiLCAgIndpbjJrIiwgICJ3aW54cCIuCgkJQWxzbyB2YWxpZCBhcyBhbgoJCTxsaW5rIGxpbmtlbmQ9ImFwcGRlZmF1bHRzLXNlY3Rpb24iPkFwcERlZmF1bHRzPC9saW5rPgoJICAgICAgICBzZXR0aW5nIChyZWNvbW1lbmRlZC9wcmVmZXJyZWQgdXNlKS4KCSAgICAgIDwvcGFyYT4KCSAgICA8L2xpc3RpdGVtPgoJICA8L3Zhcmxpc3RlbnRyeT4KCSAgPHZhcmxpc3RlbnRyeT4KCSAgICA8dGVybT4iRE9TIj0iJmx0O3ZlcnNpb24gc3RyaW5nJmd0OyI8L3Rlcm0+CgkgICAgPGxpc3RpdGVtPgoJICAgICAgPHBhcmE+CgkgICAgICAgIFVzZWQgdG8gc3BlY2lmeSB0aGUgRE9TIHZlcnNpb24gdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQKCQl0byBwcm9ncmFtcy4gT25seSB0YWtlcyBlZmZlY3QgaW4gY2FzZSBXaW5lIGFjdHMgYXMKCQkid2luMzEiIFdpbmRvd3MgdmVyc2lvbiAhIENvbW1vbiBET1MgdmVyc2lvbiBzZXR0aW5ncwoJCWluY2x1ZGUgNi4yMiwgNi4yMCwgNi4wMCwgNS4wMCwgNC4wMCwgMy4zMCwgMy4xMC4KCQlBbHNvIHZhbGlkIGFzIGFuCgkJPGxpbmsgbGlua2VuZD0iYXBwZGVmYXVsdHMtc2VjdGlvbiI+QXBwRGVmYXVsdHM8L2xpbms+CgkgICAgICAgIHNldHRpbmcgKHJlY29tbWVuZGVkL3ByZWZlcnJlZCB1c2UpLgoJICAgICAgPC9wYXJhPgoJICAgIDwvbGlzdGl0ZW0+CgkgIDwvdmFybGlzdGVudHJ5PgoJPC92YXJpYWJsZWxpc3Q+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgogICAgCiAgICA8c2VjdDEgaWQ9ImNkcm9tLWxhYmVscyI+CiAgICAgIDxzZWN0MWluZm8+CiAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgPGF1dGhvcj4KICAgICAgICAgICAgPGZpcnN0bmFtZT5QZXRyPC9maXJzdG5hbWU+CiAgICAgICAgICAgIDxzdXJuYW1lPlRvbWFzZWs8L3N1cm5hbWU+CiAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KICAgICAgICAgICAgICA8YWRkcmVzcz48ZW1haWw+JmVtYWlsLXBldHItdG9tYXNlazs8L2VtYWlsPjwvYWRkcmVzcz4KICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KICAgICAgICAgICAgPGNvbnRyaWI+Tm92IDE0IDE5OTk8L2NvbnRyaWI+CiAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgIDxhdXRob3I+CiAgICAgICAgICAgIDxmaXJzdG5hbWU+QW5kcmVhczwvZmlyc3RuYW1lPgogICAgICAgICAgICA8c3VybmFtZT5Nb2hyPC9zdXJuYW1lPgogICAgICAgICAgICA8YWZmaWxpYXRpb24+CiAgICAgICAgICAgICAgPGFkZHJlc3M+PGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD48L2FkZHJlc3M+CiAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+CiAgICAgICAgICAgIDxjb250cmliPkphbiAyNSAyMDAwPC9jb250cmliPgogICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgPC9hdXRob3Jncm91cD4KICAgICAgPC9zZWN0MWluZm8+CgogICAgICA8dGl0bGU+RHJpdmUgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyB3aXRoIHdpbmU8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLXBldHItdG9tYXNlazsgPGVtYWlsPiZlbWFpbC1wZXRyLXRvbWFzZWs7PC9lbWFpbD4KICAgICAgICBOb3YgMTQgMTk5OQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIENoYW5nZXMgYnkgJm5hbWUtYW5kcmVhcy1tb2hyOyA8ZW1haWw+JmVtYWlsLWFuZHJlYXMtbW9ocjs8L2VtYWlsPgogICAgICAgIEphbiAyNSAyMDAwCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vY2Ryb20tbGFiZWxzPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgVW50aWwgbm93LCB5b3VyIG9ubHkgcG9zc2liaWxpdHkgb2Ygc3BlY2lmeWluZyBkcml2ZSB2b2x1bWUKICAgICAgICBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIHdhcyB0byBzZXQgdGhlbSBtYW51YWxseSBpbiB0aGUgd2luZQogICAgICAgIGNvbmZpZyBmaWxlLiBCeSBub3csIHdpbmUgY2FuIHJlYWQgdGhlbSBkaXJlY3RseSBmcm9tIHRoZQogICAgICAgIGRldmljZSBhcyB3ZWxsLiBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIG1hbnkgV2luIDl4IGdhbWVzIG9yCiAgICAgICAgZm9yIHNldHVwIHByb2dyYW1zIGRpc3RyaWJ1dGVkIG9uIENELVJPTXMgdGhhdCBjaGVjayBmb3IKICAgICAgICB2b2x1bWUgbGFiZWwuCiAgICAgIDwvcGFyYT4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+V2hhdCdzIFN1cHBvcnRlZD88L3RpdGxlPgoKICAgICAgICA8aW5mb3JtYWx0YWJsZSBmcmFtZT0iYWxsIj4KICAgICAgICAgIDx0Z3JvdXAgY29scz0iMyI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZpbGUgU3lzdGVtPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5UeXBlczwvZW50cnk+CiAgICAgICAgICAgICAgICA8ZW50cnk+Q29tbWVudDwvZW50cnk+CiAgICAgICAgICAgICAgPC9yb3c+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PkZBVCBzeXN0ZW1zPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5oZCwgZmxvcHB5PC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgICA8cm93PgogICAgICAgICAgICAgICAgPGVudHJ5PklTTzk2NjA8L2VudHJ5PgogICAgICAgICAgICAgICAgPGVudHJ5PmNkcm9tPC9lbnRyeT4KICAgICAgICAgICAgICAgIDxlbnRyeT5yZWFkcyBsYWJlbHMgYW5kIHNlcmlhbCBudW1iZXJzIChub3QgbWl4ZWQtbW9kZSBDRHMgeWV0ICEpPC9lbnRyeT4KICAgICAgICAgICAgICA8L3Jvdz4KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgIDwvdGdyb3VwPgogICAgICAgIDwvaW5mb3JtYWx0YWJsZT4KCiAgICAgIDwvc2VjdDI+CgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPkhvdyBUbyBTZXQgVXA/PC90aXRsZT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFJlYWRpbmcgbGFiZWxzIGFuZCBzZXJpYWwgbnVtYmVycyBqdXN0IHdvcmtzIGF1dG9tYWdpY2FsbHkKICAgICAgICAgIGlmIHlvdSBzcGVjaWZ5IGEgPGxpdGVyYWw+RGV2aWNlPTwvbGl0ZXJhbD4gbGluZSBpbiB0aGUKICAgICAgICAgIFtEcml2ZSBYXSBzZWN0aW9uIGluIHlvdXIgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4uCiAgICAgICAgICBOb3RlIHRoYXQgdGhlIGRldmljZSBoYXMgdG8gZXhpc3QgYW5kIG11c3QgYmUgYWNjZXNzaWJsZSBpZgogICAgICAgICAgeW91IGRvIHRoaXMsIHRob3VnaC4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgZG9uJ3QgZG8gdGhhdCwgdGhlbiB5b3Ugc2hvdWxkIGdpdmUgZml4ZWQKICAgICAgICAgIDxsaXRlcmFsPiJMYWJlbCIgPTwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+IlNlcmlhbCIgPTwvbGl0ZXJhbD4KICAgICAgICAgIGVudHJpZXMgaW4gPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4sIGFzIFdpbmUgcmV0dXJucwogICAgICAgICAgdGhlc2UgZW50cmllcyBpbnN0ZWFkIGlmIG5vIGRldmljZSBpcyBnaXZlbi4gSWYgdGhleSBkb24ndAogICAgICAgICAgZXhpc3QsIHRoZW4gV2luZSB3aWxsIHJldHVybiBkZWZhdWx0IHZhbHVlcyAobGFiZWwKICAgICAgICAgIDxsaXRlcmFsPkRyaXZlIFg8L2xpdGVyYWw+IGFuZCBzZXJpYWwKICAgICAgICAgIDxsaXRlcmFsPjEyMzQ1Njc4PC9saXRlcmFsPikuCiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgSWYgeW91IHdhbnQgdG8gZ2l2ZSBhIDxsaXRlcmFsPiJEZXZpY2UiID08L2xpdGVyYWw+IGVudHJ5CiAgICAgICAgICA8ZW1waGFzaXM+b25seTwvZW1waGFzaXM+IGZvciBkcml2ZSByYXcgc2VjdG9yIGFjY2Vzc2VzLAoJICBidXQgbm90IGZvciByZWFkaW5nIHRoZSB2b2x1bWUgaW5mbyBmcm9tIHRoZSBkZXZpY2UgKGkuZS4geW91IHdhbnQKCSAgYSA8ZW1waGFzaXM+Zml4ZWQ8L2VtcGhhc2lzPiwgcHJlY29uZmlndXJlZCBsYWJlbCksIHlvdSBuZWVkCiAgICAgICAgICB0byBzcGVjaWZ5IDxsaXRlcmFsPiJSZWFkVm9sSW5mbyIgPSAiMCI8L2xpdGVyYWw+IHRvIHRlbGwgV2luZQogICAgICAgICAgdG8gc2tpcCB0aGUgdm9sdW1lIHJlYWRpbmcuCiAgICAgICAgPC9wYXJhPgogICAgICA8L3NlY3QyPgoKICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5FWEFNUExFUzwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYSBzaW1wbGUgZXhhbXBsZSBvZiBjZHJvbSBhbmQgZmxvcHB5OyBsYWJlbHMgd2lsbCBiZQogICAgICAgICAgcmVhZCBmcm9tIHRoZSBkZXZpY2Ugb24gYm90aCBjZHJvbSBhbmQgZmxvcHB5OyBzZXJpYWwKICAgICAgICAgIG51bWJlcnMgb24gZmxvcHB5IG9ubHk6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBBXQoiUGF0aCIgPSAiL21udC9mbG9wcHkiCiJUeXBlIiA9ICJmbG9wcHkiCiJEZXZpY2UiID0gIi9kZXYvZmQwIgoiRmlsZXN5c3RlbSIgPSAibXNkb3MiCgpbRHJpdmUgUl0KIlBhdGgiID0gIi9tbnQvY2Ryb20iCiJUeXBlIiA9ICJjZHJvbSIKIkRldmljZSIgPSAiL2Rldi9oZGExIgoiRmlsZXN5c3RlbSIgPSAid2luOTUiCiAgICAgICAgPC9zY3JlZW4+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBvdmVycmlkaW5nIHRoZSBDRC1ST00gbGFiZWw6CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxzY3JlZW4+CltEcml2ZSBKXQoiUGF0aCIgPSAiL21udC9jZHJvbSIKIlR5cGUiID0gImNkcm9tIgoiTGFiZWwiID0gIlgyMzRHQ0RTRSIKOyBub3RlIHRoYXQgdGhlIGRldmljZSBpc24ndCByZWFsbHkgbmVlZGVkIGhlcmUgYXMgd2UgaGF2ZSBhIGZpeGVkIGxhYmVsCiJEZXZpY2UiID0gIi9kZXYvY2Ryb20iCiJGaWxlc3lzdGVtIiA9ICJtc2RvcyIKICAgICAgICA8L3NjcmVlbj4KICAgICAgPC9zZWN0Mj4KCiAgICAgIDxzZWN0Mj4KICAgICAgICA8dGl0bGU+VG9kbyAvIE9wZW4gSXNzdWVzPC90aXRsZT4KICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICBUaGUgY2Ryb20gbGFiZWwgY2FuIGJlIHJlYWQgb25seSBpZiB0aGUgZGF0YSB0cmFjayBvZgogICAgICAgICAgICAgIHRoZSBkaXNrIHJlc2lkZXMgaW4gdGhlIGZpcnN0IHRyYWNrIGFuZCB0aGUgY2Ryb20gaXMKICAgICAgICAgICAgICBpc285NjYwLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIEJldHRlciBjaGVja2luZyBmb3IgRkFUIHN1cGVyYmxvY2sgKGl0IG5vdyBjaGVja3Mgb25seQogICAgICAgICAgICAgIG9uZSBieXRlKS4gPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgbGFiZWxzL3NlcmlhbCBudW1zIFdSSVRJTkcuCiAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgQ2FuIHRoZSBsYWJlbCBiZSBsb25nZXIgdGhhbiAxMSBjaGFycz8gKGlzbzk2NjAgaGFzIDMyCiAgICAgICAgICAgICAgY2hhcnMpLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgIFdoYXQgYWJvdXQgcmVhZGluZyBleHQyIHZvbHVtZSBsYWJlbD8gLi4uLgogICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgIDxzZWN0MSBpZD0iZGxsLWNvbmZpZyI+CiAgICAgIDx0aXRsZT5ETEwgY29uZmlndXJhdGlvbjwvdGl0bGU+CiAgICAgIDxzZWN0MiBpZD0iZGxsLW92ZXJyaWRlcyI+CiAgICAgICAgPHRpdGxlPkRMTCBPdmVycmlkZXM8L3RpdGxlPgoKICAgICAgICA8cGFyYT4KICAgICAgICAgIFdyaXR0ZW4gYnkgJm5hbWUtb3ZlLWthYXZlbjsgPGVtYWlsPiZlbWFpbC1vdmUta2FhdmVuOzwvZW1haWw+CiAgICAgICAgPC9wYXJhPgogICAgICAgIDxwYXJhPgogICAgICAgICAgKEV4dHJhY3RlZCBmcm9tIDxmaWxlbmFtZT53aW5lL2RvY3VtZW50YXRpb24vZGxsLW92ZXJyaWRlczwvZmlsZW5hbWU+KQogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBUaGUgd2luZSBjb25maWcgZmlsZSBkaXJlY3RpdmVzIFtEbGxEZWZhdWx0c10KICAgICAgICAgIGFuZCBbRGxsT3ZlcnJpZGVzXSBhcmUgdGhlIHN1YmplY3Qgb2Ygc29tZSBjb25mdXNpb24uIFRoZQogICAgICAgICAgb3ZlcmFsbCBwdXJwb3NlIG9mIG1vc3Qgb2YgdGhlc2UgZGlyZWN0aXZlcyBhcmUgY2xlYXIgZW5vdWdoLAogICAgICAgICAgdGhvdWdoIC0gZ2l2ZW4gYSBjaG9pY2UsIHNob3VsZCBXaW5lIHVzZSBpdHMgb3duIGJ1aWx0LWluCiAgICAgICAgICBETExzLCBvciBzaG91bGQgaXQgdXNlIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZXMgZm91bmQKICAgICAgICAgIGluIGFuIGV4aXN0aW5nIFdpbmRvd3MgaW5zdGFsbGF0aW9uPyBUaGlzIGRvY3VtZW50IGV4cGxhaW5zCiAgICAgICAgICBob3cgdGhpcyBmZWF0dXJlIHdvcmtzLgogICAgICAgIDwvcGFyYT4KCiAgICAgICAgPHNlY3QzPgogICAgICAgICAgPHRpdGxlPkRMTCB0eXBlczwvdGl0bGU+CiAgICAgICAgICA8dmFyaWFibGVsaXN0PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm5hdGl2ZTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBICJuYXRpdmUiIERMTCBpcyBhIDxmaWxlbmFtZT4uRExMPC9maWxlbmFtZT4gZmlsZQogICAgICAgICAgICAgICAgICB3cml0dGVuIGZvciB0aGUgcmVhbCBNaWNyb3NvZnQgV2luZG93cy4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+YnVpbHRpbjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBICJidWlsdGluIiBETEwgaXMgYSBXaW5lIERMTC4gVGhlc2UgY2FuIGVpdGhlciBiZSBhCiAgICAgICAgICAgICAgICAgIHBhcnQgb2YgPGZpbGVuYW1lPmxpYndpbmUuc288L2ZpbGVuYW1lPiwgb3IgbW9yZQogICAgICAgICAgICAgICAgICByZWNlbnRseSwgaW4gYSBzcGVjaWFsIDxmaWxlbmFtZT4uc288L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICAgIHRoYXQgV2luZSBpcyBhYmxlIHRvIGxvYWQgb24gZGVtYW5kLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbERlZmF1bHRzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+RGVmYXVsdExvYWRPcmRlcjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBUaGlzIHNwZWNpZmllcyBpbiB3aGF0IG9yZGVyIFdpbmUgc2hvdWxkIHNlYXJjaCBmb3IKICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlIERMTCB0eXBlcywgaWYgdGhlIERMTCBpbiBxdWVzdGlvbiB3YXMgbm90CiAgICAgICAgICAgICAgICAgIGZvdW5kIGluIHRoZSBbRGxsT3ZlcnJpZGVzXSBzZWN0aW9uLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbFBhaXJzXSBzZWN0aW9uPC90aXRsZT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICBBdCBvbmUgdGltZSwgdGhlcmUgd2FzIGEgc2VjdGlvbiBjYWxsZWQgW0RsbFBhaXJzXSBpbiB0aGUKICAgICAgICAgICAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZpbGUsIGJ1dCB0aGlzIGhhcyBiZWVuIG9ic29sZXRlZAogICAgICAgICAgICBiZWNhdXNlIHRoZSBwYWlyaW5nIGluZm9ybWF0aW9uIGhhcyBub3cgYmVlbiBlbWJlZGRlZCBpbnRvCiAgICAgICAgICAgIFdpbmUgaXRzZWxmLiAoVGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHdhcyBtZXJlbHkgdG8gYmUKICAgICAgICAgICAgYWJsZSB0byBpc3N1ZSB3YXJuaW5ncyBpZiB0aGUgdXNlciBhdHRlbXB0ZWQgdG8gcGFpcgogICAgICAgICAgICBjb2RlcGVuZGVudCAxNi1iaXQvMzItYml0IERMTHMgb2YgZGlmZmVyZW50IHR5cGVzLikgSWYgeW91CiAgICAgICAgICAgIHN0aWxsIGhhdmUgdGhpcyBpbiB5b3VyIDxmaWxlbmFtZT5+Ly53aW5lL2NvbmZpZzwvZmlsZW5hbWU+IG9yCiAgICAgICAgICAgIDxmaWxlbmFtZT53aW5lLmNvbmY8L2ZpbGVuYW1lPiwgeW91IG1heSBzYWZlbHkgZGVsZXRlIGl0LgogICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvc2VjdDM+CgogICAgICAgIDxzZWN0Mz4KICAgICAgICAgIDx0aXRsZT5UaGUgW0RsbE92ZXJyaWRlc10gc2VjdGlvbjwvdGl0bGU+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgVGhpcyBzZWN0aW9uIHNwZWNpZmllcyBob3cgeW91IHdhbnQgc3BlY2lmaWMgRExMcyB0byBiZQogICAgICAgICAgICBoYW5kbGVkLCBpbiBwYXJ0aWN1bGFyIHdoZXRoZXIgeW91IHdhbnQgdG8gdXNlICJuYXRpdmUiIERMTHMKICAgICAgICAgICAgb3Igbm90LCBpZiB5b3UgaGF2ZSBzb21lIGZyb20gYSByZWFsIFdpbmRvd3MgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgQmVjYXVzZSBidWlsdGlucyBkbyBub3QgbWl4IHNlYW1sZXNzbHkgd2l0aCBuYXRpdmUgRExMcyB5ZXQsCiAgICAgICAgICAgIGNlcnRhaW4gRExMIGRlcGVuZGVuY2llcyBtYXkgYmUgcHJvYmxlbWF0aWMsIGJ1dCB3b3JrYXJvdW5kcwogICAgICAgICAgICBleGlzdCBpbiBXaW5lIGZvciBtYW55IHBvcHVsYXIgRExMIGNvbmZpZ3VyYXRpb25zLiBBbHNvIHNlZQogICAgICAgICAgICBXV04ncyBbMTZdU3RhdHVzIFBhZ2UgdG8gZmlndXJlIG91dCBob3cgd2VsbCB5b3VyIGZhdm9yaXRlCiAgICAgICAgICAgIERMTCBpcyBpbXBsZW1lbnRlZCBpbiBXaW5lLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgIEl0IGlzIG9mIGNvdXJzZSBhbHNvIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoZXNlIHNldHRpbmdzIGJ5CiAgICAgICAgICAgIGV4cGxpY3RseSB1c2luZyBXaW5lJ3MgPHBhcmFtZXRlcj4tLWRsbDwvcGFyYW1ldGVyPgogICAgICAgICAgICBjb21tYW5kLWxpbmUgb3B0aW9uIChzZWUgdGhlIG1hbiBwYWdlIGZvciBkZXRhaWxzKS4gIFNvbWUKICAgICAgICAgICAgaGludHMgZm9yIGNob29zaW5nIHlvdXIgb3B0aW1hbCBjb25maWd1cmF0aW9uIChsaXN0ZWQgYnkKICAgICAgICAgICAgMTYvMzItYml0IERMTCBwYWlyKToKICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgIDx2YXJpYWJsZWxpc3Q+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+a3JubDM4Niwga2VybmVsMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgTmF0aXZlIHZlcnNpb25zIG9mIHRoZXNlIHdpbGwgbmV2ZXIgd29yaywgc28gZG9uJ3QgdHJ5LiBMZWF2ZQogICAgICAgICAgICAgICAgICBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+Z2RpLCBnZGkzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBHcmFwaGljcyBEZXZpY2UgSW50ZXJmYWNlLiBObyBlZmZvcnQgaGFzIGJlZW4gbWFkZSBhdCB0cnlpbmcgdG8KICAgICAgICAgICAgICAgICAgcnVuIG5hdGl2ZSBHREkuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT51c2VyLCB1c2VyMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luZG93IG1hbmFnZW1lbnQgYW5kIHN0YW5kYXJkIGNvbnRyb2xzLiBJdCB3YXMKICAgICAgICAgICAgICAgICAgcG9zc2libGUgdG8gdXNlIFdpbjk1J3MgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICB2ZXJzaW9ucyBhdCBzb21lIHBvaW50IChpZiBhbGwgb3RoZXIgRExMcyB0aGF0IGRlcGVuZAogICAgICAgICAgICAgICAgICBvbiBpdCwgc3VjaCBhcyBjb21jdGwzMiBhbmQgY29tZGxnMzIsIHdlcmUgYWxzbyBydW4KICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPikuIEhvd2V2ZXIsIHRoaXMgaXMgbm8gbG9uZ2VyCiAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIGFmdGVyIHRoZSBBZGRyZXNzIFNwYWNlIFNlcGFyYXRpb24sIHNvIGxlYXZlCiAgICAgICAgICAgICAgICAgIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5udGRsbDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBOVCBrZXJuZWwgQVBJLiBBbHRob3VnaCBiYWRseSBkb2N1bWVudGVkLCB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgd2lsbCBuZXZlcgogICAgICAgICAgICAgICAgICB3b3JrLiBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dzMyc2tybmw8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luMzJzIChmb3IgV2luMy54KS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgICAgdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyIHdvcmsuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT53b3czMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW4xNiBzdXBwb3J0IGxpYnJhcnkgZm9yIE5ULiBUaGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIHdpbGwgcHJvYmFibHkgbmV2ZXIKICAgICAgICAgICAgICAgICAgd29yay4gTGVhdmUgYXQgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnN5c3RlbTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXaW4xNiBrZXJuZWwgc3R1ZmYuIFdpbGwgbmV2ZXIgd29yawogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LiBMZWF2ZSBhdAogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZGlzcGxheTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBEaXNwbGF5IGRyaXZlci4gRGVmaW5pdGVseSBsZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dG9vbGhlbHA8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgVG9vbCBoZWxwZXIgcm91dGluZXMuIFRoaXMgaXMgcmFyZWx5IGEgc291cmNlIG9mIHByb2JsZW1zLgogICAgICAgICAgICAgICAgICBMZWF2ZSBhdCA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+dmVyLCB2ZXJzaW9uPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFZlcnNpb25pbmcuIFNlbGRvbSB1c2VmdWwgdG8gbWVzcyB3aXRoLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5hZHZhcGkzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBSZWdpc3RyeSBhbmQgc2VjdXJpdHkgZmVhdHVyZXMuIFRyeWluZyB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMgbWF5IG9yIG1heQogICAgICAgICAgICAgICAgICBub3Qgd29yay4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+Y29tbWRsZywgY29tZGxnMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQ29tbW9uIERpYWxvZ3MsIHN1Y2ggYXMgY29sb3IgcGlja2VyLCBmb250IGRpYWxvZywKICAgICAgICAgICAgICAgICAgcHJpbnQgZGlhbG9nLCBvcGVuL3NhdmUgZGlhbG9nLCBldGMuIEl0IGlzIHNhZmUgdG8gdHJ5CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmNvbW1jdHJsLCBjb21jdGwzMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDb21tb24gQ29udHJvbHMuIFRoaXMgaXMgdG9vbGJhcnMsIHN0YXR1cyBiYXJzLCBsaXN0IGNvbnRyb2xzLAogICAgICAgICAgICAgICAgICB0aGUgd29ya3MuIEl0IGlzIHNhZmUgdG8gdHJ5IDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPnNoZWxsLCBzaGVsbDMyPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFNoZWxsIGludGVyZmFjZSAoZGVza3RvcCwgZmlsZXN5c3RlbSwgZXRjKS4gQmVpbmcgb25lIG9mIHRoZQogICAgICAgICAgICAgICAgICBtb3N0IHVuZG9jdW1lbnRlZCBwaWVjZXMgb2YgV2luZG93cywgeW91IG1heSBoYXZlIGx1Y2sgd2l0aCB0aGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uLCBzaG91bGQgeW91IG5lZWQgaXQuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPndpbnNvY2ssIHdzb2NrMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgV2luZG93cyBTb2NrZXRzLiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgIHdpbGwgbm90IHdvcmsgdW5kZXIgV2luZSwgc28gbGVhdmUgYXQKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmljbXA8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgSUNNUCByb3V0aW5lcyBmb3Igd3NvY2szMi4gQXMgd2l0aCB3c29jazMyLCBsZWF2ZSBhdAogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bXByPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24gbWF5IG5vdCB3b3JrIGR1ZQogICAgICAgICAgICAgICAgICB0byB0aHVua2luZyBpc3N1ZXMuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5semV4cGFuZCwgbHozMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBMZW1wZWwtWml2IGRlY29tcHJlc3Npb24uIFdpbmUncwogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5idWlsdGluPC9saXRlcmFsPiB2ZXJzaW9uIG91Z2h0IHRvIHdvcmsgZmluZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d2luYXNwaSwgd25hc3BpMzI8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQWR2YW5jZWQgU0NTSSBQZXJpcGhlcmFsIEludGVyZmFjZS4gVGhlCiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbiB3aWxsIHByb2JhYmx5IG5ldmVyCiAgICAgICAgICAgICAgICAgIHdvcmsuIExlYXZlIGF0IDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5jcnRkbGw8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQyBSdW50aW1lIGxpYnJhcnkuIFRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+CiAgICAgICAgICAgICAgICAgIHZlcnNpb24gd2lsbCBlYXNpbHkgd29yayBiZXR0ZXIgdGhhbiBXaW5lJ3Mgb24gdGhpcwogICAgICAgICAgICAgICAgICBvbmUuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPndpbnNwb29sLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBQcmludGVyIHNwb29sZXIuIFlvdSBhcmUgbm90IGxpa2VseSB0byBoYXZlIG1vcmUgbHVjawogICAgICAgICAgICAgICAgICB3aXRoIHRoZSA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+IHZlcnNpb24uCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmRkcmF3PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpcmVjdERyYXcvRGlyZWN0M0QuIFNpbmNlIFdpbmUgZG9lcyBub3QgaW1wbGVtZW50IHRoZQogICAgICAgICAgICAgICAgICBEaXJlY3RYIEhBTCwgdGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4gdmVyc2lvbgogICAgICAgICAgICAgICAgICB3aWxsIG5vdCB3b3JrIGF0IHRoaXMgdGltZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+ZGlucHV0PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIERpcmVjdElucHV0LiBSdW5uaW5nIHRoaXMgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPgogICAgICAgICAgICAgICAgICBtYXkgb3IgbWF5IG5vdCB3b3JrLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5kc291bmQ8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgRGlyZWN0U291bmQuIEl0IG1heSBiZSBwb3NzaWJsZSB0byBydW4gdGhpcwogICAgICAgICAgICAgICAgICA8bGl0ZXJhbD5uYXRpdmU8L2xpdGVyYWw+LCBidXQgZG9uJ3QgY291bnQgb24gaXQuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPmRwbGF5L2RwbGF5eDwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBEaXJlY3RQbGF5LiBUaGUgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgIG91Z2h0IHRvIHdvcmsgYmVzdCBvbiB0aGlzLCBpZiBhdCBhbGwuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1tc3lzdGVtLCB3aW5tbTwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBNdWx0aW1lZGlhIHN5c3RlbS4gVGhlIDxsaXRlcmFsPm5hdGl2ZTwvbGl0ZXJhbD4KICAgICAgICAgICAgICAgICAgdmVyc2lvbiBpcyBub3QgbGlrZWx5IHRvIHdvcmsuIExlYXZlIGF0CiAgICAgICAgICAgICAgICAgIDxsaXRlcmFsPmJ1aWx0aW48L2xpdGVyYWw+LgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tc2FjbSwgbXNhY20zMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBdWRpbyBDb21wcmVzc2lvbiBNYW5hZ2VyLiBUaGUKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+YnVpbHRpbjwvbGl0ZXJhbD4gdmVyc2lvbiB3b3JrcyBiZXN0LCBpZiB5b3UKICAgICAgICAgICAgICAgICAgc2V0IG1zYWNtLmRydiB0byB0aGUgc2FtZS4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bXN2aWRlbywgbXN2ZnczMjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBWaWRlbyBmb3IgV2luZG93cy4gSXQgaXMgc2FmZSAoYW5kIHJlY29tbWVuZGVkKSB0byB0cnkKICAgICAgICAgICAgICAgICAgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bWNpY2RhLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBDRCBBdWRpbyBNQ0kgZHJpdmVyLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2lzZXEuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIE1JREkgU2VxdWVuY2VyIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uTUlEPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgcGxheWJhY2spLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2l3YXZlLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBXYXZlIGF1ZGlvIE1DSSBkcml2ZXIgKDxmaWxlbmFtZT4uV0FWPC9maWxlbmFtZT4gcGxheWJhY2spLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5tY2lhdmkuZHJ2PC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIEFWSSBNQ0kgZHJpdmVyICg8ZmlsZW5hbWU+LkFWSTwvZmlsZW5hbWU+IHZpZGVvCiAgICAgICAgICAgICAgICAgIHBsYXliYWNrKS4gQmVzdCB0byB1c2UgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPi4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+bWNpYW5pbS5kcnY8L3Rlcm0+CiAgICAgICAgICAgICAgPGxpc3RpdGVtPiA8cGFyYT4KICAgICAgICAgICAgICAgICAgQW5pbWF0aW9uIE1DSSBkcml2ZXIuCiAgICAgICAgICAgICAgICA8L3BhcmE+IDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICAgICAgIDx0ZXJtPm1zYWNtLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBBdWRpbyBDb21wcmVzc2lvbiBNYW5hZ2VyLiBTZXQgdG8gc2FtZSBhcyBtc2FjbTMyLgogICAgICAgICAgICAgICAgPC9wYXJhPiA8L2xpc3RpdGVtPgogICAgICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICAgICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgICAgICAgICA8dGVybT5taWRpbWFwLmRydjwvdGVybT4KICAgICAgICAgICAgICA8bGlzdGl0ZW0+IDxwYXJhPgogICAgICAgICAgICAgICAgICBNSURJIE1hcHBlci4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICAgICAgICAgPHRlcm0+d3Byb2NzPC90ZXJtPgogICAgICAgICAgICAgIDxsaXN0aXRlbT4gPHBhcmE+CiAgICAgICAgICAgICAgICAgIFRoaXMgaXMgYSBwc2V1ZG8tRExMIHVzZWQgYnkgV2luZSBmb3IgdGh1bmtpbmcKICAgICAgICAgICAgICAgICAgcHVycG9zZXMuIEEgPGxpdGVyYWw+bmF0aXZlPC9saXRlcmFsPiB2ZXJzaW9uIG9mIHRoaXMKICAgICAgICAgICAgICAgICAgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgIDwvcGFyYT4gPC9saXN0aXRlbT4KICAgICAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICAgICA8L3NlY3QzPgogICAgICA8L3NlY3QyPgogICAgICA8c2VjdDIgaWQ9ImRsbC1taXNzaW5nIj4KICAgICAgICA8dGl0bGU+TWlzc2luZyBETExzPC90aXRsZT4KCiAgICAgICAgPHBhcmE+CiAgICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLWFuZHJlYXMtbW9ocjsgPGVtYWlsPiZlbWFpbC1hbmRyZWFzLW1vaHI7PC9lbWFpbD4KICAgICAgICA8L3BhcmE+CgogICAgICAgIDxwYXJhPgoJICBJbiBjYXNlIFdpbmUgY29tcGxhaW5zIGFib3V0IGEgbWlzc2luZyBETEwsIHlvdSBzaG91bGQgY2hlY2sgd2hldGhlcgoJICB0aGlzIGZpbGUgaXMgYSBwdWJsaWNseSBhdmFpbGFibGUgRExMIG9yIGEgY3VzdG9tIERMTCBiZWxvbmdpbmcKCSAgdG8geW91ciBwcm9ncmFtIChieSBzZWFyY2hpbmcgZm9yIGl0cyBuYW1lIG9uIHRoZSBpbnRlcm5ldCkuCgkgIElmIHlvdSBtYW5hZ2VkIHRvIGdldCBob2xkIG9mIHRoZSBETEwsIHRoZW4geW91IHNob3VsZCBtYWtlIHN1cmUKCSAgdGhhdCBXaW5lIGlzIGFibGUgdG8gZmluZCBhbmQgbG9hZCBpdC4KCSAgRExMcyB1c3VhbGx5IGdldCBsb2FkZWQgYWNjb3JkaW5nIHRvIHRoZSBtZWNoYW5pc20gb2YgdGhlCgkgIFNlYXJjaFBhdGgoKSBmdW5jdGlvbi4KCSAgVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyBkaXJlY3RvcmllcyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOgoKICAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgZGlyZWN0b3J5IHRoZSBwcm9ncmFtIHdhcyBzdGFydGVkIGZyb20uCiAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICAgICAgPHBhcmE+CgkgICAgICAgIFRoZSBjdXJyZW50IGRpcmVjdG9yeS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KCSAgICAgICAgVGhlIFdpbmRvd3Mgc3lzdGVtIGRpcmVjdG9yeS4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgICAgICA8cGFyYT4KCSAgICAgICAgVGhlIFdpbmRvd3MgZGlyZWN0b3J5LgogICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgICAgIDxwYXJhPgoJICAgICAgICBUaGUgUEFUSCB2YXJpYWJsZSBkaXJlY3Rvcmllcy4KICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICA8L29yZGVyZWRsaXN0PgoKCSAgSW4gc2hvcnQ6IGVpdGhlciBwdXQgdGhlIHJlcXVpcmVkIERMTCBpbnRvIHlvdXIgYXBwbGljYXRpb24KCSAgZGlyZWN0b3J5IChtaWdodCBiZSB1Z2x5KSwgb3IgdXN1YWxseSBwdXQgaXQgaW50byB0aGUgV2luZG93cyBzeXN0ZW0KCSAgZGlyZWN0b3J5LiBKdXN0IGZpbmQgb3V0IGl0cyBkaXJlY3RvcnkgYnkgaGF2aW5nIGEgbG9vayBhdCB0aGUgV2luZQoJICBjb25maWcgRmlsZSB2YXJpYWJsZSAiU3lzdGVtIiAod2hpY2ggaW5kaWNhdGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUKCSAgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5KSBhbmQgdGhlIGFzc29jaWF0ZWQgZHJpdmUgZW50cnkuCgkgIE5vdGUgdGhhdCB5b3UgcHJvYmFibHkgc2hvdWxkbid0IHVzZSBOVC1iYXNlZCBuYXRpdmUgRExMcywKCSAgc2luY2UgV2luZSdzIE5UIEFQSSBzdXBwb3J0IGlzIHNvbWV3aGF0IHdlYWtlciB0aGFuIGl0cyBXaW45eAoJICBBUEkgc3VwcG9ydCAodGh1cyBsZWFkaW5nIHRvIGV2ZW4gd29yc2UgY29tcGF0aWJpbGl0eSB3aXRoIE5UIERMTHMKCSAgdGhhbiB3aXRoIGEgbm8td2luZG93cyBzZXR1cCAhKSwgc28gYmV0dGVyIHVzZSBXaW45eCBuYXRpdmUgRExMcwoJICBpbnN0ZWFkIG9yIG5vIG5hdGl2ZSBETExzIGF0IGFsbC4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICAgIDxzZWN0MiBpZD0iZGxsLXdpbmRvd3MiPgogICAgICAgIDx0aXRsZT5GZXRjaGluZyBuYXRpdmUgRExMcyBmcm9tIGEgV2luZG93cyBDRDwvdGl0bGU+CgogICAgICAgIDxwYXJhPgogICAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1hbmRyZWFzLW1vaHI7IDxlbWFpbD4mZW1haWwtYW5kcmVhcy1tb2hyOzwvZW1haWw+CiAgICAgICAgPC9wYXJhPgoKICAgICAgICA8cGFyYT4KCVRoZSBMaW51eCA8Y29tbWFuZD5jYWJleHRyYWN0PC9jb21tYW5kPiB1dGlsaXR5IGNhbiBiZSB1c2VkIHRvCglleHRyYWN0IG5hdGl2ZSBXaW5kb3dzIC5kbGwgZmlsZXMgZnJvbSAuY2FiIGZpbGVzIHRoYXQgYXJlIHRvIGJlCglmb3VuZCBvbiBtYW55IFdpbmRvd3MgaW5zdGFsbGF0aW9uIENEcy4KICAgICAgICA8L3BhcmE+CiAgICAgIDwvc2VjdDI+CiAgICA8L3NlY3QxPgoKICAgICZmb250czsKICAgICZwcmludGluZzsKCiAgICA8c2VjdDEgaWQ9Indpbjk1bG9vayI+CiAgICAgIDx0aXRsZT5XaW45NS85OCBMb29rPC90aXRsZT4KICAgICAgPHBhcmE+CiAgICAgICAgV3JpdHRlbiBieSAmbmFtZS1kYXZpZC1jdXRoYmVydDsgPGVtYWlsPiZlbWFpbC1kYXZpZC1jdXRoYmVydDs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL3dpbjk1bG9vazwvZmlsZW5hbWU+KQogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdpbjk1L1dpbjk4IGludGVyZmFjZSBjb2RlIGlzIGJlaW5nIGludHJvZHVjZWQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSW5zdGVhZCBvZiBjb21waWxpbmcgV2luZSBmb3IgV2luMy4xIHZzLiBXaW45NSB1c2luZwogICAgICAgIDxjb25zdGFudD4jZGVmaW5lPC9jb25zdGFudD4gc3dpdGNoZXMsIHRoZSBjb2RlIG5vdyBsb29rcyBpbiBhCiAgICAgICAgc3BlY2lhbCBbVHdlYWsuTGF5b3V0XSBzZWN0aW9uIG9mCiAgICAgICAgPGZpbGVuYW1lPn4vLndpbmUvY29uZmlnPC9maWxlbmFtZT4gZm9yIGEKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk1IjwvbGl0ZXJhbD4gb3IKICAgICAgICA8bGl0ZXJhbD4iV2luZUxvb2siID0gIldpbjk4IjwvbGl0ZXJhbD4gZW50cnkuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQSBmZXcgbmV3IHNlY3Rpb25zIGFuZCBhIG51bWJlciBvZiBlbnRyaWVzIGhhdmUgYmVlbiBhZGRlZCB0bwogICAgICAgIHRoZSA8ZmlsZW5hbWU+fi8ud2luZS9jb25maWc8L2ZpbGVuYW1lPiBmaWxlIC0tIHRoZXNlIGFyZSBmb3IKICAgICAgICBkZWJ1Z2dpbmcgdGhlIFdpbjk1IHR3ZWFrcyBvbmx5IGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZQogICAgICAgIHJlbGVhc2UhICBUaGVzZSBlbnRyaWVzL3NlY3Rpb25zIGFyZToKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CltUd2Vhay5Gb250c10KIlN5c3RlbS5IZWlnaHQiID0gIiZsdDtwb2ludCBzaXplPiIgICAgIyBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIHN5c3RlbSB0eXBlZmFjZQoiU3lzdGVtLkJvbGQiID0gIlt0cnVlfGZhbHNlXSIgICAgICAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSBib2xkZmFjZWQKIlN5c3RlbS5JdGFsaWMiID0gIlt0cnVlfGZhbHNlXSIgICAgIyBXaGV0aGVyIHRoZSBzeXN0ZW0gZm9udCBzaG91bGQgYmUgaXRhbGljaXplZAoiU3lzdGVtLlVuZGVybGluZSIgPSAiW3RydWV8ZmFsc2VdIiAjIFdoZXRoZXIgdGhlIHN5c3RlbSBmb250IHNob3VsZCBiZSB1bmRlcmxpbmVkCiJTeXN0ZW0uU3RyaWtlT3V0IiA9ICJbdHJ1ZXxmYWxzZV0iICMgV2hldGhlciB0aGUgc3lzdGVtIGZvbnQgc2hvdWxkIGJlIHN0cnVjayBvdXQKIk9FTUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICAjIFNhbWUgcGFyYW1ldGVycyBmb3IgdGhlIE9FTSBmaXhlZCB0eXBlZmFjZQoiQW5zaUZpeGVkLnh4eCIgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSBmaXhlZCB0eXBlZmFjZQoiQW5zaVZhci54eHgiICAgICAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgQW5zaSB2YXJpYWJsZSB0eXBlZmFjZQoiU3lzdGVtRml4ZWQueHh4IiAgICAgICAgICAgICAgICMgU2FtZSBwYXJhbWV0ZXJzIGZvciB0aGUgU3lzdGVtIGZpeGVkIHR5cGVmYWNlCgpbVHdlYWsuTGF5b3V0XQoiV2luZUxvb2siID0gIltXaW4zMXxXaW45NXxXaW45OF0iICAjIENoYW5nZXMgV2luZSdzIGxvb2sgYW5kIGZlZWwKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJrZXlib2FyZCI+CiAgICAgIDx0aXRsZT5LZXlib2FyZDwvdGl0bGU+CgogICAgICA8cGFyYT4KICAgICAgICBXcml0dGVuIGJ5ICZuYW1lLW92ZS1rYWF2ZW47IDxlbWFpbD4mZW1haWwtb3ZlLWthYXZlbjs8L2VtYWlsPgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIChFeHRyYWN0ZWQgZnJvbSA8ZmlsZW5hbWU+d2luZS9kb2N1bWVudGF0aW9uL2tleWJvYXJkPC9maWxlbmFtZT4pCiAgICAgIDwvcGFyYT4KCiAgICAgIDxwYXJhPgogICAgICAgIFdpbmUgbm93IG5lZWRzIHRvIGtub3cgYWJvdXQgeW91ciBrZXlib2FyZCBsYXlvdXQuIFRoaXMKICAgICAgICByZXF1aXJlbWVudCBjb21lcyBmcm9tIGEgbmVlZCBmcm9tIG1hbnkgYXBwcyB0byBoYXZlIHRoZQogICAgICAgIGNvcnJlY3Qgc2NhbmNvZGVzIGF2YWlsYWJsZSwgc2luY2UgdGhleSByZWFkIHRoZXNlIGRpcmVjdGx5LAogICAgICAgIGluc3RlYWQgb2YganVzdCB0YWtpbmcgdGhlIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIFgKICAgICAgICBzZXJ2ZXIuIFRoaXMgbWVhbnMgdGhhdCBXaW5lIG5vdyBuZWVkcyB0byBoYXZlIGEgbWFwcGluZyBmcm9tCiAgICAgICAgWCBrZXlzIHRvIHRoZSBzY2FuY29kZXMgdGhlc2UgYXBwbGljYXRpb25zIGV4cGVjdC4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBPbiBzdGFydHVwLCBXaW5lIHdpbGwgdHJ5IHRvIHJlY29nbml6ZSB0aGUgYWN0aXZlIFggbGF5b3V0IGJ5CiAgICAgICAgc2VlaW5nIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBkZWZpbmVkIHRhYmxlcy4gSWYgaXQgZG9lcywKICAgICAgICBldmVyeXRoaW5nIGlzIGFscmlnaHQuIElmIG5vdCwgeW91IG5lZWQgdG8gZGVmaW5lIGl0LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRvIGRvIHRoaXMsIG9wZW4gdGhlIGZpbGUKICAgICAgICA8ZmlsZW5hbWU+ZGxscy94MTFkcnYva2V5Ym9hcmQuYzwvZmlsZW5hbWU+IGFuZCB0YWtlIGEgbG9vawogICAgICAgIGF0IHRoZSBleGlzdGluZyB0YWJsZXMuIE1ha2UgYSBiYWNrdXAgY29weSBvZiBpdCwgZXNwZWNpYWxseQogICAgICAgIGlmIHlvdSBkb24ndCB1c2UgQ1ZTLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFdoYXQgeW91IHJlYWxseSB3b3VsZCBuZWVkIHRvIGRvLCBpcyBmaW5kIG91dCB3aGljaCBzY2FuY29kZQogICAgICAgIGVhY2gga2V5IG5lZWRzIHRvIGdlbmVyYXRlLiAgRmluZCBpdCBpbiB0aGUKICAgICAgICA8ZnVuY3Rpb24+bWFpbl9rZXlfc2NhbjwvZnVuY3Rpb24+IHRhYmxlLCB3aGljaCBsb29rcyBsaWtlCiAgICAgICAgdGhpczoKICAgICAgPC9wYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CnN0YXRpYyBjb25zdCBpbnQgbWFpbl9rZXlfc2NhbltNQUlOX0xFTl0gPQp7Ci8qIHRoaXMgaXMgbXkgKDEwMi1rZXkpIGtleWJvYXJkIGxheW91dCwgc29ycnkgaWYgaXQgZG9lc24ndCBxdWl0ZSBtYXRjaCB5b3VycyAqLwogICAweDI5LDB4MDIsMHgwMywweDA0LDB4MDUsMHgwNiwweDA3LDB4MDgsMHgwOSwweDBBLDB4MEIsMHgwQywweDBELAogICAweDEwLDB4MTEsMHgxMiwweDEzLDB4MTQsMHgxNSwweDE2LDB4MTcsMHgxOCwweDE5LDB4MUEsMHgxQiwKICAgMHgxRSwweDFGLDB4MjAsMHgyMSwweDIyLDB4MjMsMHgyNCwweDI1LDB4MjYsMHgyNywweDI4LDB4MkIsCiAgIDB4MkMsMHgyRCwweDJFLDB4MkYsMHgzMCwweDMxLDB4MzIsMHgzMywweDM0LDB4MzUsCiAgIDB4NTYgLyogdGhlIDEwMm5kIGtleSAoYWN0dWFsbHkgdG8gdGhlIHJpZ2h0IG9mIGwtc2hpZnQpICovCn07CiAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICAgIDxwYXJhPgogICAgICAgIE5leHQsIGFzc2lnbiBlYWNoIHNjYW5jb2RlIHRoZSBjaGFyYWN0ZXJzIGltcHJpbnRlZCBvbiB0aGUKICAgICAgICBrZXljYXBzLiBUaGlzIHdhcyBkb25lIChzb3J0IG9mKSBmb3IgdGhlIFVTIDEwMS1rZXkga2V5Ym9hcmQsCiAgICAgICAgd2hpY2ggeW91IGNhbiBmaW5kIG5lYXIgdGhlIHRvcCBpbgogICAgICAgIDxmaWxlbmFtZT5rZXlib2FyZC5jPC9maWxlbmFtZT4uIEl0IGFsc28gc2hvd3MgdGhhdCBpZiB0aGVyZQogICAgICAgIGlzIG5vIDEwMm5kIGtleSwgeW91IGNhbiBza2lwIHRoYXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSG93ZXZlciwgZm9yIG1vc3QgaW50ZXJuYXRpb25hbCAxMDIta2V5IGtleWJvYXJkcywgd2UgaGF2ZQogICAgICAgIGRvbmUgaXQgZWFzeSBmb3IgeW91LiBUaGUgc2NhbmNvZGUgbGF5b3V0IGZvciB0aGVzZSBhbHJlYWR5CiAgICAgICAgcHJldHR5IG11Y2ggbWF0Y2hlcyB0aGUgcGh5c2ljYWwgbGF5b3V0IGluIHRoZQogICAgICAgIDxmdW5jdGlvbj5tYWluX2tleV9zY2FuPC9mdW5jdGlvbj4sIHNvIGFsbCB5b3UgbmVlZCB0byBkbyBpcwogICAgICAgIHRvIGdvIHRocm91Z2ggYWxsIHRoZSBrZXlzIHRoYXQgZ2VuZXJhdGUgY2hhcmFjdGVycyBvbiB5b3VyCiAgICAgICAgbWFpbiBrZXlib2FyZCAoZXhjZXB0IHNwYWNlYmFyKSwgYW5kIHN0dWZmIHRob3NlIGludG8gYW4KICAgICAgICBhcHByb3ByaWF0ZSB0YWJsZS4gVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoYXQgdGhlIDEwMm5kIGtleSwKICAgICAgICB3aGljaCBpcyB1c3VhbGx5IHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBrZXkgb2YgdGhlIGxhc3QgbGluZQogICAgICAgICh1c3VhbGx5IDxrZXljYXA+Wjwva2V5Y2FwPiksIG11c3QgYmUgcGxhY2VkIG9uIGEgc2VwYXJhdGUKICAgICAgICBsaW5lIGFmdGVyIHRoZSBsYXN0IGxpbmUuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgRm9yIGV4YW1wbGUsIG15IE5vcndlZ2lhbiBrZXlib2FyZCBsb29rcyBsaWtlIHRoaXMKICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgqnICAhICAiICAjICCkICAlICAmICAvICAoICApICA9ICA/ICBgICBCYWNrLQp8ICAxICAyQCAzoyA0JCA1ICA2ICA3eyA4WyA5XSAwfSArICBctCBzcGFjZQoKVGFiIFEgIFcgIEUgIFIgIFQgIFkgIFUgIEkgIE8gIFAgIMUgIF4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIKh+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRlcgpDYXBzIEEgIFMgIEQgIEYgIEcgIEggIEogIEsgIEwgINggIMYgICoKTG9jayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCgpTaC0gPiBaICBYICBDICBWICBCICBOICBNICA7ICA6ICBfICBTaGlmdAppZnQgJmx0OyAgICAgICAgICAgICAgICAgICAgICAsICAuICAtCgpDdHJsICBBbHQgICAgICAgU3BhY2ViYXIgICAgICAgQWx0R3IgIEN0cmwKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIE5vdGUgdGhlIDEwMm5kIGtleSwgd2hpY2ggaXMgdGhlIDxrZXljYXA+Jmx0Oz48L2tleWNhcD4ga2V5LCB0bwogICAgICAgIHRoZSBsZWZ0IG9mIDxrZXljYXA+Wjwva2V5Y2FwPi4gVGhlIGNoYXJhY3RlciB0byB0aGUgcmlnaHQgb2YKICAgICAgICB0aGUgbWFpbiBjaGFyYWN0ZXIgaXMgdGhlIGNoYXJhY3RlciBnZW5lcmF0ZWQgYnkKICAgICAgICA8a2V5Y2FwPkFsdEdyPC9rZXljYXA+LgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRoaXMga2V5Ym9hcmQgaXMgZGVmaW5lZCBhcyBmb2xsb3dzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIGNvbnN0IGNoYXIgbWFpbl9rZXlfTk9bTUFJTl9MRU5dWzRdID0KewogInynIiwiMSEiLCIyXCJAIiwiMyOjIiwiNKQkIiwiNSUiLCI2JiIsIjcveyIsIjgoWyIsIjkpXSIsIjA9fSIsIis/IiwiXFy0IiwKICJxUSIsIndXIiwiZUUiLCJyUiIsInRUIiwieVkiLCJ1VSIsImlJIiwib08iLCJwUCIsIuXFIiwiqF5+IiwKICJhQSIsInNTIiwiZEQiLCJmRiIsImdHIiwiaEgiLCJqSiIsImtLIiwibEwiLCL42CIsIubGIiwiJyoiLAogInpaIiwieFgiLCJjQyIsInZWIiwiYkIiLCJuTiIsIm1NIiwiLDsiLCIuOiIsIi1fIiwKICImbHQ7PiIKfTsKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgRXhjZXB0IHRoYXQgIiBhbmQgXCBuZWVkcyB0byBiZSBxdW90ZWQgd2l0aCBhIGJhY2tzbGFzaCwgYW5kCiAgICAgICAgdGhhdCB0aGUgMTAybmQga2V5IGlzIG9uIGEgc2VwYXJhdGUgbGluZSwgaXQncyBwcmV0dHkKICAgICAgICBzdHJhaWdodGZvcndhcmQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgQWZ0ZXIgeW91IGhhdmUgd3JpdHRlbiBzdWNoIGEgdGFibGUsIHlvdSBuZWVkIHRvIGFkZCBpdCB0byB0aGUKICAgICAgICA8ZnVuY3Rpb24+bWFpbl9rZXlfdGFiW108L2Z1bmN0aW9uPiBsYXlvdXQgaW5kZXggdGFibGUuIFRoaXMKICAgICAgICB3aWxsIGxvb2sgbGlrZSB0aGlzOgogICAgICA8L3BhcmE+CiAgICAgIDxwcm9ncmFtbGlzdGluZz4Kc3RhdGljIHN0cnVjdCB7CiBXT1JEIGxhbmcsIGFuc2lfY29kZXBhZ2UsIG9lbV9jb2RlcGFnZTsKIGNvbnN0IGNoYXIgKCprZXkpW01BSU5fTEVOXVs0XTsKfSBtYWluX2tleV90YWJbXT17Ci4uLgouLi4KIHtNQUtFTEFOR0lEKExBTkdfTk9SV0VHSUFOLFNVQkxBTkdfREVGQVVMVCksICAxMjUyLCA4NjUsICZhbXA7bWFpbl9rZXlfTk99LAouLi4KICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgPHBhcmE+CiAgICAgICAgQWZ0ZXIgeW91IGhhdmUgYWRkZWQgeW91ciB0YWJsZSwgcmVjb21waWxlIFdpbmUgYW5kIHRlc3QgdGhhdAogICAgICAgIGl0IHdvcmtzLiBJZiBpdCBmYWlscyB0byBkZXRlY3QgeW91ciB0YWJsZSwgdHJ5IHJ1bm5pbmcKICAgICAgPC9wYXJhPgogICAgICA8c2NyZWVuPgp3aW5lIC0tZGVidWdtc2cgK2tleSwra2V5Ym9hcmQgPiYga2V5LmxvZwogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIGxvb2sgaW4gdGhlIHJlc3VsdGluZyA8ZmlsZW5hbWU+a2V5LmxvZzwvZmlsZW5hbWU+IGZpbGUgdG8KICAgICAgICBmaW5kIHRoZSBlcnJvciBtZXNzYWdlcyBpdCBnaXZlcyBmb3IgeW91ciBsYXlvdXQuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgTm90ZSB0aGF0IHRoZSA8Y29uc3RhbnQ+TEFOR18qPC9jb25zdGFudD4gYW5kCiAgICAgICAgPGNvbnN0YW50PlNVQkxBTkdfKjwvY29uc3RhbnQ+IGRlZmluaXRpb25zIGFyZSBpbgogICAgICAgIDxmaWxlbmFtZT5pbmNsdWRlL3dpbm5scy5oPC9maWxlbmFtZT4sIHdoaWNoIHlvdSBtaWdodCBuZWVkIHRvCiAgICAgICAga25vdyB0byBmaW5kIG91dCB3aGljaCBudW1iZXJzIHlvdXIgbGFuZ3VhZ2UgaXMgYXNzaWduZWQsIGFuZAogICAgICAgIGZpbmQgaXQgaW4gdGhlIGRlYnVnbXNnIG91dHB1dC4gVGhlIG51bWJlcnMgd2lsbCBiZQogICAgICAgIDxsaXRlcmFsPihTVUJMQU5HICogMHg0MDAgKyBMQU5HKTwvbGl0ZXJhbD4sIHNvLCBmb3IgZXhhbXBsZQogICAgICAgIHRoZSBjb21iaW5hdGlvbiA8bGl0ZXJhbD5MQU5HX05PUldFR0lBTiAoMHgxNCk8L2xpdGVyYWw+IGFuZAogICAgICAgIDxsaXRlcmFsPlNVQkxBTkdfREVGQVVMVCAoMHgxKTwvbGl0ZXJhbD4gd2lsbCBiZSAoaW4gaGV4KQogICAgICAgIDxsaXRlcmFsPjE0ICsgMSo0MDAgPSA0MTQ8L2xpdGVyYWw+LCBzbyBzaW5jZSBJJ20gTm9yd2VnaWFuLCBJCiAgICAgICAgY291bGQgbG9vayBmb3IgPGxpdGVyYWw+MDQxNDwvbGl0ZXJhbD4gaW4gdGhlIGRlYnVnbXNnIG91dHB1dAogICAgICAgIHRvIGZpbmQgb3V0IHdoeSBteSBrZXlib2FyZCB3b24ndCBkZXRlY3QuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgT25jZSBpdCB3b3Jrcywgc3VibWl0IGl0IHRvIHRoZSBXaW5lIHByb2plY3QuIElmIHlvdSB1c2UgQ1ZTLAogICAgICAgIHlvdSB3aWxsIGp1c3QgaGF2ZSB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmN2cyAtejMgZGlmZiAtdSBkbGxzL3gxMWRydi9rZXlib2FyZC5jID4gbGF5b3V0LmRpZmYKICAgICAgPC9zY3JlZW4+CiAgICAgIDxwYXJhPgogICAgICAgIGZyb20geW91ciBtYWluIFdpbmUgZGlyZWN0b3J5LCB0aGVuIHN1Ym1pdAogICAgICAgIDxmaWxlbmFtZT5sYXlvdXQuZGlmZjwvZmlsZW5hbWU+IHRvCiAgICAgICAgPGVtYWlsPndpbmUtcGF0Y2hlc0B3aW5laHEuY29tPC9lbWFpbD4gYWxvbmcgd2l0aCBhIGJyaWVmIG5vdGUKICAgICAgICBvZiB3aGF0IGl0IGlzLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIElmIHlvdSBkb24ndCB1c2UgQ1ZTLCB5b3UgbmVlZCB0byBkbwogICAgICA8L3BhcmE+CiAgICAgIDxzY3JlZW4+CmRpZmYgLXUgdGhlX2JhY2t1cF9maWxlX3lvdV9tYWRlIGRsbHMveDExZHJ2L2tleWJvYXJkLmMgPiBsYXlvdXQuZGlmZgogICAgICA8L3NjcmVlbj4KICAgICAgPHBhcmE+CiAgICAgICAgYW5kIHN1Ym1pdCBpdCBhcyBleHBsYWluZWQgYWJvdmUuCiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICAgSWYgeW91IGRpZCBpdCByaWdodCwgaXQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgbmV4dCBXaW5lCiAgICAgICAgcmVsZWFzZSwgYW5kIGFsbCB0aGUgdHJvdWJsZXNvbWUgYXBwbGljYXRpb25zIChlc3BlY2lhbGx5CiAgICAgICAgcmVtb3RlLWNvbnRyb2wgYXBwbGljYXRpb25zKSBhbmQgZ2FtZXMgdGhhdCB1c2Ugc2NhbmNvZGVzIHdpbGwKICAgICAgICBiZSBoYXBwaWx5IHVzaW5nIHlvdXIga2V5Ym9hcmQgbGF5b3V0LCBhbmQgeW91IHdvbid0IGdldCB0aG9zZQogICAgICAgIGFubm95aW5nIGZpeG1lIG1lc3NhZ2VzIGVpdGhlci4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgICBHb29kIGx1Y2suCiAgICAgIDwvcGFyYT4KICAgIDwvc2VjdDE+CgogICAgPHNlY3QxIGlkPSJvZGJjIj4KICAgICAgPHRpdGxlPlVzaW5nIE9EQkM8L3RpdGxlPgogICAgICA8cGFyYT4KICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGhvdyBPREJDIHdvcmtzIHdpdGhpbiBXaW5lIGFuZCBob3cgdG8gY29uZmlndXJlCiAgICAgICAgaXQgdG8gZG8gd2hhdCB5b3Ugd2FudCAoaWYgaXQgY2FuIGRvIHdoYXQgeW91IHdhbnQpLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJhPgogICAgICAgIFRoZSBPREJDIHN5c3RlbSB3aXRoaW4gd2luZSwgYXMgd2l0aCB0aGUgcHJpbnRpbmcgc3lzdGVtLCBpcyBkZXNpZ25lZAogICAgICAgIHRvIGhvb2sgYWNyb3NzIHRvIHRoZSBVbml4IHN5c3RlbSBhdCBhIGhpZ2ggbGV2ZWwuICBSYXRoZXIgdGhhbiAKICAgICAgICBlbnN1cmluZyB0aGF0IGFsbCB0aGUgd2luZG93cyBjb2RlIHdvcmtzIHVuZGVyIHdpbmUgaXQgdXNlcyBhIHN1aXRhYmxlCiAgICAgICAgVW5peCBPREJDIHByb3ZpZGVyLCBzdWNoIGFzIFVuaXhPREJDLiAgVGh1cyBpZiB5b3UgY29uZmlndXJlIFdpbmUgdG8gCiAgICAgICAgdXNlIHRoZSBidWlsdGluIG9kYmMzMi5kbGwgdGhhdCB3aW5lIGRsbCB3aWxsIGludGVyZmFjZSB0byB5b3VyIAogICAgICAgIFVuaXggT0RCQyBwYWNrYWdlIGFuZCBsZXQgdGhhdCBkbyB0aGUgd29yaywgd2hlcmVhcyBpZiB5b3UgY29uZmlndXJlIAogICAgICAgIFdpbmUgdG8gdXNlIHRoZSBuYXRpdmUgb2RiYzMyLmRsbCBpdCB3aWxsIHRyeSB0byB1c2UgdGhlIG5hdGl2ZQogICAgICAgIE9EQkMzMiBkcml2ZXJzIGV0Yy4KICAgICAgPC9wYXJhPgogICAgICA8c2VjdDI+CiAgICAgICAgPHRpdGxlPlVzaW5nIGEgVW5peCBPREJDIHN5c3RlbSB3aXRoIFdpbmU8L3RpdGxlPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGZpcnN0IHN0ZXAgaW4gdXNpbmcgYSBVbml4IE9EQkMgc3lzdGVtIHdpdGggV2luZSBpcywgb2YgY291cnNlLAogICAgICAgICAgdG8gZ2V0IHRoZSBVbml4IE9EQkMgc3lzdGVtIHdvcmtpbmcgaXRzZWxmLiAgVGhpcyBtYXkgaW52b2x2ZSAKICAgICAgICAgIGRvd25sb2FkaW5nIGNvZGUgb3IgcnBtcyBldGMuICBUaGVyZSBhcmUgc2V2ZXJhbCBVbml4IE9EQkMgc3lzdGVtcwogICAgICAgICAgYXZhaWxhYmxlOyB0aGUgb25lIHRoZSBhdXRob3IgaXMgdXNlZCB0byBpcyB1bml4T0RCQyAod2l0aCB0aGUKICAgICAgICAgIElCTSBEQjIgZHJpdmVyKS4gVHlwaWNhbGx5IHN1Y2ggc3lzdGVtcyB3aWxsIGluY2x1ZGUgYSB0b29sLCBzdWNoIAogICAgICAgICAgYXMgaXNxbCwgd2hpY2ggd2lsbCBhbGxvdyB5b3UgdG8gYWNjZXNzIHRoZSBkYXRhIGZyb20gdGhlIGNvbW1hbmQKICAgICAgICAgIGxpbmUgc28gdGhhdCB5b3UgY2FuIGNoZWNrIHRoYXQgdGhlIHN5c3RlbSBpcyB3b3JraW5nLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgIFRoZSBuZXh0IHN0ZXAgaXMgdG8gaG9vayB0aGUgVW5peCBPREJDIGxpYnJhcnkgdG8gdGhlIHdpbmUgYnVpbHRpbiAKICAgICAgICAgIG9kYmMzMiBkbGwuICBUaGUgYnVpbHRpbiBvZGJjMzIgKGN1cnJlbnRseSkgbG9va3MgdG8gdGhlCiAgICAgICAgICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIDxlbXBoYXNpcz5MSUJfT0RCQ19EUklWRVJfTUFOQUdFUjwvZW1waGFzaXM+CiAgICAgICAgICBmb3IgdGhlIG5hbWUgb2YgdGhlIG9kYmMgbGlicmFyeS4gIEZvciBleGFtcGxlIGluIHRoZSBhdXRob3IncwogICAgICAgICAgLmJhc2hyYyBmaWxlIGlzIHRoZSBsaW5lOgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cHJvZ3JhbWxpc3Rpbmc+CmV4cG9ydCBMSUJfT0RCQ19EUklWRVJfTUFOQUdFUj0vdXNyL2xpYi9saWJvZGJjLnNvLjEuMC4wCiAgICAgICAgPC9wcm9ncmFtbGlzdGluZz4KICAgICAgICA8cGFyYT4KICAgICAgICAgIElmIHRoYXQgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBpcyBub3Qgc2V0IHRoZW4gaXQgbG9va3MgZm9yIGEgCiAgICAgICAgICBsaWJyYXJ5IGNhbGxlZCBsaWJvZGJjLnNvIGFuZCBzbyB5b3UgY2FuIGFkZCBhIHN5bWJvbGljIGxpbmsgdG8KICAgICAgICAgIGVxdWF0ZSB0aGF0IHRvIHlvdXIgb3duIGxpYnJhcnkuICBGb3IgZXhhbXBsZSBhcyByb290IHlvdSBjb3VsZAogICAgICAgICAgcnVuIHRoZSBjb21tYW5kczoKICAgICAgICA8L3BhcmE+CiAgICAgICAgPHByb2dyYW1saXN0aW5nPgpsbiAtcyBsaWJvZGJjLnNvLjEuMC4wIC91c3IvbGliL2xpYm9kYmMuc28KL3NiaW4vbGRjb25maWcKICAgICAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgICAgIDxwYXJhPgogICAgICAgICAgVGhlIGxhc3Qgc3RlcCBpbiBjb25maWd1cmluZyB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0IFdpbmUgaXMgc2V0IHVwCiAgICAgICAgICB0byBydW4gdGhlIGJ1aWx0aW4gdmVyc2lvbiBvZiBvZGJjMzIuZGxsLCBieSBtb2RpZnlpbmcgdGhlIERMTAogICAgICAgICAgY29uZmlndXJhdGlvbi4gIFRoaXMgYnVpbHRpbiBkbGwgbWVyZWx5IGFjdHMgYXMgYSBzdHViIGJldHdlZW4gdGhlCiAgICAgICAgICBjYWxsaW5nIGNvZGUgYW5kIHRoZSBVbml4IE9EQkMgbGlicmFyeS4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBJZiB5b3UgaGF2ZSBhbnkgcHJvYmxlbXMgdGhlbiB5b3UgY2FuIHVzZSB0aGUgZGVidWdtc2cgY2hhbm5lbAogICAgICAgICAgb2RiYzMyIHRvIHRyYWNlIHdoYXQgaXMgaGFwcGVuaW5nLiAgT25lIHdvcmQgb2Ygd2FybmluZy4gIFNvbWUKICAgICAgICAgIHByb2dyYW1zIGFjdHVhbGx5IGNoZWF0IGEgbGl0dGxlIGFuZCBieXBhc3MgdGhlIG9kYmMgbGlicmFyeS4gIEZvcgogICAgICAgICAgZXhhbXBsZSB0aGUgQ3J5c3RhbCBSZXBvcnRzIGVuZ2luZSBnb2VzIHRvIHRoZSByZWdpc3RyeSB0byBjaGVjayBvbgogICAgICAgICAgdGhlIERTTi4gIFRoZSBmaXggZm9yIHRoaXMgaXMgZG9jdW1lbnRlZCBhdCB1bml4T0RCQydzIHNpdGUgd2hlcmUgCiAgICAgICAgICB0aGVyZSBpcyBhIHNlY3Rpb24gb24gdXNpbmcgdW5peE9EQkMgd2l0aCBXaW5lLgogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgICAgPHNlY3QyPgogICAgICAgIDx0aXRsZT5Vc2luZyBXaW5kb3dzIE9EQkMgZHJpdmVyczwvdGl0bGU+CiAgICAgICAgPHBhcmE+CiAgICAgICAgICBEb2VzIGFueW9uZSBhY3R1YWxseSBoYXZlIGFueSBleHBlcmllbmNlIG9mIHRoaXMgYW5kIGFueXRoaW5nIHRvIAogICAgICAgICAgYWRkPwogICAgICAgIDwvcGFyYT4KICAgICAgPC9zZWN0Mj4KICAgIDwvc2VjdDE+CgogIDwvY2hhcHRlcj4KCjwhLS0gS2VlcCB0aGlzIGNvbW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZQpMb2NhbCB2YXJpYWJsZXM6Cm1vZGU6IHNnbWwKc2dtbC1wYXJlbnQtZG9jdW1lbnQ6KCJ3aW5lLWRvYy5zZ21sIiAic2V0IiAiYm9vayIgImNoYXB0ZXIiICIiKQpFbmQ6Ci0tPgo=