1/*
2 * Copyright (c) 2007-2010 Apple Inc. All Rights Reserved.
3 */
4
5#include <CoreFoundation/CoreFoundation.h>
6#include <Security/SecCertificate.h>
7#include <Security/SecCertificatePriv.h>
8#include <Security/SecPolicyPriv.h>
9#include <Security/SecTrust.h>
10#include <Security/SecKey.h>
11#include <Security/SecInternal.h>
12#include <CommonCrypto/CommonDigest.h>
13#include <CommonCrypto/CommonDigestSPI.h>
14
15#include <stdlib.h>
16#include <unistd.h>
17
18#include "Security_regressions.h"
19
20static const UInt8 sITunesStoreRootCertificate[] =
21{
22	0x30, 0x82, 0x04, 0x65, 0x30, 0x82, 0x03, 0x4d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00,
23	0xcb, 0x06, 0xa3, 0x3b, 0x30, 0xc3, 0x24, 0x03, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
24	0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7e, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
25	0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x15,
26	0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0c, 0x69, 0x54, 0x75, 0x6e, 0x65, 0x73, 0x20,
27	0x53, 0x74, 0x6f, 0x72, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11,
28	0x69, 0x54, 0x75, 0x6e, 0x65, 0x73, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x52, 0x6f, 0x6f,
29	0x74, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
30	0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72,
31	0x6e, 0x69, 0x61, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x75,
32	0x70, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x6f, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x31, 0x30, 0x30,
33	0x39, 0x31, 0x37, 0x35, 0x31, 0x33, 0x30, 0x5a, 0x17, 0x0d, 0x33, 0x32, 0x31, 0x30, 0x30, 0x32,
34	0x31, 0x37, 0x35, 0x31, 0x33, 0x30, 0x5a, 0x30, 0x7e, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55,
35	0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x15,
36	0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0c, 0x69, 0x54, 0x75, 0x6e, 0x65, 0x73, 0x20,
37	0x53, 0x74, 0x6f, 0x72, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11,
38	0x69, 0x54, 0x75, 0x6e, 0x65, 0x73, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x52, 0x6f, 0x6f,
39	0x74, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13,
40	0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x43, 0x61, 0x6c, 0x69, 0x66, 0x6f, 0x72,
41	0x6e, 0x69, 0x61, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x75,
42	0x70, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x6f, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a,
43	0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30,
44	0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0x78, 0xc0, 0xaf, 0x1a, 0x96, 0x59, 0xad,
45	0xf8, 0x3c, 0x16, 0xe1, 0xfc, 0xc4, 0x7a, 0xaf, 0xf0, 0x80, 0xed, 0x7f, 0x3a, 0xff, 0xf2, 0x2a,
46	0xb6, 0xf3, 0x1a, 0xdd, 0xbd, 0x14, 0xb1, 0x5d, 0x9d, 0x66, 0xaf, 0xc7, 0xaf, 0x2b, 0x26, 0x78,
47	0x9c, 0xb8, 0x0b, 0x41, 0x9c, 0xdc, 0x17, 0xf1, 0x40, 0x18, 0x09, 0xa1, 0x0a, 0xbc, 0x01, 0x9a,
48	0x0c, 0xbe, 0x89, 0xdb, 0x9d, 0x34, 0xc7, 0x52, 0x8a, 0xf2, 0xbf, 0x35, 0x2b, 0x24, 0x04, 0xb0,
49	0x0c, 0x9d, 0x41, 0x7d, 0x63, 0xe3, 0xad, 0xcf, 0x8b, 0x34, 0xbf, 0x5c, 0x42, 0x82, 0x9b, 0x78,
50	0x7f, 0x00, 0x10, 0x88, 0xd9, 0xfd, 0xf8, 0xbf, 0x63, 0x2c, 0x91, 0x87, 0x03, 0xda, 0xbc, 0xc6,
51	0x71, 0x2b, 0x9a, 0x21, 0x30, 0x95, 0xd6, 0x88, 0xe8, 0xbd, 0x0a, 0x74, 0xa4, 0xa6, 0x39, 0xd0,
52	0x61, 0xd3, 0xb6, 0xe0, 0x2b, 0x1e, 0xe4, 0x78, 0x5c, 0x70, 0x32, 0x66, 0x97, 0x34, 0xa9, 0x79,
53	0xfc, 0x96, 0xaf, 0x4b, 0x8a, 0xd5, 0x12, 0x07, 0x8c, 0x1c, 0xf6, 0x3e, 0x5f, 0xdc, 0x8f, 0x92,
54	0x10, 0xe8, 0x7e, 0xa0, 0x14, 0x1e, 0x61, 0x28, 0xfa, 0xcc, 0xcf, 0x3c, 0xdb, 0x2b, 0xe3, 0xe9,
55	0x44, 0x4a, 0x9d, 0x5f, 0x92, 0x3d, 0xa3, 0xfd, 0x1a, 0x63, 0xb4, 0xbb, 0xab, 0x67, 0x45, 0xc6,
56	0x4d, 0x84, 0x4a, 0xaa, 0x33, 0xe4, 0xde, 0xd3, 0x04, 0x92, 0xbf, 0xf7, 0x00, 0x48, 0x76, 0xc6,
57	0x4e, 0x17, 0xea, 0x70, 0xdb, 0x09, 0xbc, 0x22, 0x07, 0x7b, 0x97, 0x49, 0xe5, 0x29, 0xa7, 0x1a,
58	0x04, 0xd2, 0x0d, 0x0e, 0x73, 0xf1, 0x49, 0x43, 0x34, 0x35, 0x61, 0xe5, 0x67, 0xdf, 0x3c, 0x58,
59	0x42, 0x51, 0xfb, 0xc3, 0xa4, 0x15, 0x6d, 0x39, 0x6b, 0x2a, 0x22, 0xde, 0xdd, 0xe2, 0x36, 0x5b,
60	0xd7, 0x37, 0x53, 0x96, 0x9d, 0x3a, 0x9f, 0x4b, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xe5,
61	0x30, 0x81, 0xe2, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xb0, 0xda,
62	0xe1, 0x7f, 0xa8, 0x8b, 0x4a, 0x6a, 0x81, 0x5d, 0x0c, 0xa1, 0x84, 0x56, 0x46, 0x1e, 0x6a, 0xef,
63	0xe5, 0xcf, 0x30, 0x81, 0xb2, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x81, 0xaa, 0x30, 0x81, 0xa7,
64	0x80, 0x14, 0xb0, 0xda, 0xe1, 0x7f, 0xa8, 0x8b, 0x4a, 0x6a, 0x81, 0x5d, 0x0c, 0xa1, 0x84, 0x56,
65	0x46, 0x1e, 0x6a, 0xef, 0xe5, 0xcf, 0xa1, 0x81, 0x83, 0xa4, 0x81, 0x80, 0x30, 0x7e, 0x31, 0x13,
66	0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x49,
67	0x6e, 0x63, 0x2e, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0c, 0x69, 0x54,
68	0x75, 0x6e, 0x65, 0x73, 0x20, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03,
69	0x55, 0x04, 0x03, 0x13, 0x11, 0x69, 0x54, 0x75, 0x6e, 0x65, 0x73, 0x20, 0x53, 0x74, 0x6f, 0x72,
70	0x65, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13,
71	0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x43, 0x61,
72	0x6c, 0x69, 0x66, 0x6f, 0x72, 0x6e, 0x69, 0x61, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04,
73	0x07, 0x13, 0x09, 0x43, 0x75, 0x70, 0x65, 0x72, 0x74, 0x69, 0x6e, 0x6f, 0x82, 0x09, 0x00, 0xcb,
74	0x06, 0xa3, 0x3b, 0x30, 0xc3, 0x24, 0x03, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05,
75	0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01,
76	0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x7b, 0xcc, 0xfb, 0x34, 0x4e, 0xec, 0x27,
77	0x05, 0xf9, 0x10, 0xc9, 0xdf, 0x8e, 0x22, 0x21, 0x94, 0x70, 0xe9, 0x74, 0x64, 0x11, 0xce, 0x07,
78	0x91, 0xc2, 0x58, 0x0d, 0xff, 0x51, 0x6d, 0x97, 0x64, 0x32, 0x1a, 0x1c, 0xdf, 0x4a, 0x93, 0xdb,
79	0x94, 0x62, 0x14, 0xcb, 0x00, 0x13, 0x37, 0x98, 0x0e, 0x3d, 0x96, 0x19, 0x5f, 0x44, 0xc9, 0x11,
80	0xd2, 0xc9, 0x8c, 0xa3, 0x19, 0x2f, 0x88, 0x4f, 0x5f, 0x3c, 0x46, 0x56, 0xe2, 0xbd, 0x78, 0x4f,
81	0xfe, 0x8e, 0x39, 0xb5, 0xed, 0x37, 0x3e, 0xfb, 0xf6, 0xae, 0x56, 0x2c, 0x49, 0x37, 0x4a, 0x94,
82	0x05, 0x4b, 0x8f, 0x67, 0xdb, 0xe6, 0x24, 0xa6, 0x75, 0xae, 0xc8, 0xa2, 0x26, 0x87, 0x70, 0xb8,
83	0x1d, 0xc2, 0xfc, 0x8d, 0xff, 0x41, 0x23, 0x8a, 0x01, 0x8a, 0xc3, 0x78, 0x5a, 0x61, 0x4a, 0xed,
84	0x48, 0x96, 0xb5, 0x82, 0xa7, 0xaa, 0x2e, 0xb5, 0xed, 0xdd, 0xf4, 0xe6, 0xb5, 0xa1, 0x27, 0x3b,
85	0xda, 0xf9, 0x18, 0x26, 0x7e, 0x8e, 0xec, 0xef, 0xe1, 0x00, 0x7d, 0x3d, 0xf7, 0x3d, 0x01, 0x68,
86	0x14, 0x92, 0xfc, 0x9c, 0xbb, 0x0a, 0xa1, 0xc3, 0x60, 0x31, 0x16, 0x08, 0x9b, 0xef, 0x4d, 0xaf,
87	0x46, 0xc7, 0xcc, 0x4e, 0x05, 0x34, 0xa8, 0x44, 0xb2, 0x85, 0x03, 0x67, 0x6c, 0x31, 0xae, 0xa3,
88	0x18, 0xb5, 0x5f, 0x75, 0xae, 0xe0, 0x5a, 0xbf, 0x64, 0x32, 0x2b, 0x28, 0x99, 0x24, 0xcd, 0x01,
89	0x34, 0xc2, 0xfc, 0xf1, 0x88, 0xba, 0x8c, 0x9b, 0x90, 0x85, 0x56, 0x6d, 0xaf, 0xd5, 0x2e, 0x88,
90	0x12, 0x61, 0x7c, 0x76, 0x33, 0x6b, 0xc4, 0xf7, 0x31, 0x77, 0xe4, 0x02, 0xb7, 0x9e, 0x9c, 0x8c,
91	0xbe, 0x04, 0x2e, 0x51, 0xa3, 0x04, 0x4c, 0xcd, 0xe2, 0x71, 0x5e, 0x36, 0xfb, 0xf1, 0x68, 0xf0,
92	0xad, 0x37, 0x80, 0x98, 0x26, 0xc0, 0xef, 0x9b, 0x3c
93};
94
95static const unsigned char url_bag[] =
96"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>"
97"<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
98"<plist version=\"1.0\">"
99"<dict>"
100"  <key>signature</key><data>PXlOzELnbcmmd6zbfl/CfXhx4lUKpH7exmCIMQXbwLzGCEjy2g1ekpMopSZZ+OeizHJDPrgfMf3mzhPsagguGNVan8Y335wF0iT5zh4dR/POso9mj1HOvoU5JmqjVXpNVWoflfkIyHZUiQafXitKda7DWXOrNpP92LplPtBzLIg=</data>"
101"  <key>certs</key>"
102"  <array>"
103"    <data>MIIDRjCCAi6gAwIBAgIBAjANBgkqhkiG9w0BAQUFADB+MRMwEQYDVQQKEwpBcHBsZSBJbmMuMRUwEwYDVQQLEwxpVHVuZXMgU3RvcmUxGjAYBgNVBAMTEWlUdW5lcyBTdG9yZSBSb290MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTESMBAGA1UEBxMJQ3VwZXJ0aW5vMB4XDTExMDYwNjIyMTkxOFoXDTEzMDYwNTIyMTkxOFowgYExEzARBgNVBAoTCkFwcGxlIEluYy4xFTATBgNVBAsTDGlUdW5lcyBTdG9yZTEdMBsGA1UEAxMUaVR1bmVzIFN0b3JlIFVSTCBCYWcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRIwEAYDVQQHEwlDdXBlcnRpbm8wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALucax5drB+v1stVZDaqk/kyW1zcZ9Va8lKAXzsDXpkt4gvzhSJX1bQ3Z6qNMhbVT1nvkDHONGsnCyqOkRfI6Py19gRAoQO3XtfAqrZ5Sh7Spxsznm8GCUBBNRtSUzYa+StvwOWiXdPX3D9X5dZTetatpsLL5t5FeedaAW7Baan7AgMBAAGjTzBNMB0GA1UdDgQWBBTI704/Bfpw+vAHyPMVdbk/gT3xpjAfBgNVHSMEGDAWgBSw2uF/qItKaoFdDKGEVkYeau/lzzALBgNVHQ8EBAMCB4AwDQYJKoZIhvcNAQEFBQADggEBAIF7O5xNidy+EE3/skB0Erwy0358vboeowqkSPYzYaNWhK2UCyUiERN61hkaZFFIDqjchND3h7y67kJDCyGviRzRlFiMAEb56rKFzAwlT5w1btOoQjbKgl5MnqYIC9GtUWKC5gH4Qx6lgmIR90qQ/7gEykivZ/IkIvYpXHCYvOStEPqN//u1oiAAVmJpmMN1MHCrhJeZebtMu8zgS9i1rv/e+YaxQJcdJ5COg0GD8i5RI3VCCWqRGl3aGvLx5TzzetnQlRvglnfzsSuXR7gB6oENnOjPGnarccN1qdwPCd8lw+hxfzG8/2LWLUooH2tWXC1Qi9dU9yxCgjgTwzmol3I=</data>"
104"  </array>"
105"  <key>bag</key><data>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlIENvbXB1dGVyLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q+CiAgPGtleT50aW1lc3RhbXA8L2tleT48ZGF0ZT4yMDExLTA3LTIyVDE0OjIyOjE4WjwvZGF0ZT4KICA8a2V5PnN0b3JlRnJvbnQ8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evc3RvcmVGcm9udDwvc3RyaW5nPgogIDxrZXk+bmV3VXNlclN0b3JlRnJvbnQ8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvZmlyc3RMYXVuY2g8L3N0cmluZz4KICA8a2V5Pm5ld0lQb2RVc2VyU3RvcmVGcm9udDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9uZXdJUG9kVXNlcj9uZXdJUG9kVXNlcj10cnVlPC9zdHJpbmc+CiAgPGtleT5uZXdQaG9uZVVzZXI8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvcGhvbmVMYW5kaW5nUGFnZTwvc3RyaW5nPgogIDxrZXk+c2VhcmNoPC9rZXk+PHN0cmluZz5odHRwOi8vYXguc2VhcmNoLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlNlYXJjaC53b2Evd2Evc2VhcmNoPC9zdHJpbmc+CiAgPGtleT5hZHZhbmNlZFNlYXJjaDwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNlYXJjaC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTZWFyY2gud29hL3dhL2FkdmFuY2VkU2VhcmNoPC9zdHJpbmc+CiAgPGtleT5zZWFyY2hIaW50czwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNlYXJjaC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTZWFyY2hIaW50cy53b2Evd2EvaGludHM8L3N0cmluZz4KICA8a2V5PnBhcmVudGFsQWR2aXNvcnk8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvcGFyZW50YWxBZHZpc29yeTwvc3RyaW5nPgogIDxrZXk+YnJvd3NlPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL2Jyb3dzZTwvc3RyaW5nPgogIDxrZXk+dmlld0FsYnVtPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdBbGJ1bTwvc3RyaW5nPgogIDxrZXk+dmlld0Jvb2s8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0Jvb2s8L3N0cmluZz4KICA8a2V5PnZpZXdBcnRpc3Q8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0FydGlzdDwvc3RyaW5nPgogIDxrZXk+dmlld0NvbXBvc2VyPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdDb21wb3Nlcjwvc3RyaW5nPgogIDxrZXk+dmlld0dlbnJlPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdHZW5yZTwvc3RyaW5nPgogIDxrZXk+dmlld1BvZGNhc3Q8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld1BvZGNhc3Q8L3N0cmluZz4KICA8a2V5PnZpZXdQdWJsaXNoZWRQbGF5bGlzdDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3UHVibGlzaGVkUGxheWxpc3Q8L3N0cmluZz4KICA8a2V5PnZpZXdWaWRlbzwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3VmlkZW88L3N0cmluZz4KICA8a2V5PmFwcHM8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0FwcHNNYWluPC9zdHJpbmc+CiAgPGtleT5hdWRpb2Jvb2tzPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdBdWRpb2Jvb2tzTWFpbjwvc3RyaW5nPgogIDxrZXk+aXR1bmVzLXU8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0dlbnJlP2lkPTQwMDAwMDAwPC9zdHJpbmc+CiAgPGtleT5tb3ZpZXM8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld01vdmllc01haW48L3N0cmluZz4KICA8a2V5Pm11c2ljPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdNdXNpY01haW48L3N0cmluZz4KICA8a2V5PnBvZGNhc3RzPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdQb2RjYXN0RGlyZWN0b3J5PC9zdHJpbmc+CiAgPGtleT5yaW5ndG9uZXM8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld1Jpbmd0b25lczwvc3RyaW5nPgogIDxrZXk+dHYtc2hvd3M8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld1RWU2hvd3NNYWluPC9zdHJpbmc+CiAgPGtleT5leHRlcm5hbFVSTFNlYXJjaEtleTwva2V5PjxzdHJpbmc+aXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogIDxrZXk+ZXh0ZXJuYWxVUkxSZXBsYWNlS2V5PC9rZXk+PHN0cmluZz5pdHVuZXMuYXBwbGUuY29tPC9zdHJpbmc+CiAgPGtleT5zb25nTWV0YURhdGE8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evc29uZ01ldGFEYXRhPC9zdHJpbmc+CiAgPGtleT5zZWxlY3RlZEl0ZW1zUGFnZTwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9zZWxlY3RlZEl0ZW1zUGFnZTwvc3RyaW5nPgogIDxrZXk+c3dpc2gtdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdSb29tP2ZjSWQ9Mjk3NDgwODcyJmFtcDtpZD0zNzwvc3RyaW5nPgogIDxrZXk+dXBsb2FkUHVibGlzaGVkUGxheWxpc3Q8L2tleT48c3RyaW5nPmh0dHA6Ly9jLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkNvbm5lY3Rpb25zLndvYS93YS9jcmVhdGVJTWl4P3M9MTQzNDQxPC9zdHJpbmc+CiAgPGtleT5taW5pLXN0b3JlPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL21pbmlzdG9yZVJldGlyZWQ8L3N0cmluZz4KICA8a2V5Pm1pbmktc3RvcmUtZmllbGRzPC9rZXk+PHN0cmluZz48L3N0cmluZz4KICA8a2V5Pm1pbmktc3RvcmUtbWF0Y2g8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvbWluaXN0b3JlUmV0aXJlZDwvc3RyaW5nPgogIDxrZXk+bWluaS1zdG9yZS1tYXRjaC1maWVsZHM8L2tleT48c3RyaW5nPjwvc3RyaW5nPgogIDxrZXk+bWluaS1zdG9yZS13ZWxjb21lPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL21pbmlzdG9yZVJldGlyZWQ8L3N0cmluZz4KICA8a2V5Pm1heFB1Ymxpc2hlZFBsYXlsaXN0SXRlbXM8L2tleT48aW50ZWdlcj4xMDA8L2ludGVnZXI+CiAgPGtleT5hdmFpbGFibGUtcmluZ3RvbmVzPC9rZXk+PHN0cmluZz5odHRwOi8vbXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aUGVyc29uYWxpemVyLndvYS93YS9hdmFpbGFibGVSaW5ndG9uZXM8L3N0cmluZz4KICA8a2V5PmFib3V0LXJpbmd0b25lczwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9SaW5ndG9uZUxlYXJuTW9yZVBhZ2U8L3N0cmluZz4KICA8a2V5PnJpbmd0b25lLWluZm8tZmllbGRzLWxpc3Q8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPmlkLHMsZHNpZDwvc3RyaW5nPgogIDwvYXJyYXk+CiAgPGtleT5jb3Zlci1hcnQ8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9jb3ZlckFydE1hdGNoPC9zdHJpbmc+CiAgPGtleT5jb3Zlci1hcnQtbWF0Y2g8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9jb3ZlckFydE1hdGNoPC9zdHJpbmc+CiAgPGtleT5jb3Zlci1hcnQtZmllbGRzPC9rZXk+PHN0cmluZz5hLHA8L3N0cmluZz4KICA8a2V5PmNvdmVyLWFydC1jZC1maWVsZHM8L2tleT48c3RyaW5nPmNkZGI8L3N0cmluZz4KICA8a2V5PmNvdmVyLWFydC1tYXRjaC1maWVsZHM8L2tleT48c3RyaW5nPmNkZGItdHVpZCxjZGRiLGFuLGFhbixwbjwvc3RyaW5nPgogIDxrZXk+Y292ZXItYXJ0LWZpZWxkcy1saXN0PC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5hLHA8L3N0cmluZz4KICAgIDxzdHJpbmc+aWQsY2RkYi10dWlkLGNkZGIsYW4sYWFuLHBuPC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PmNvdmVyLWFydC11c2VyPC9rZXk+PHN0cmluZz5odHRwOi8vbXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aUGVyc29uYWxpemVyLndvYS93YS9jb3ZlckFydFVzZXI8L3N0cmluZz4KICA8a2V5Pm1hdGNoVVJMczwva2V5PgogIDxhcnJheT4KICAgIDxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vPC9zdHJpbmc+CiAgICA8c3RyaW5nPmh0dHA6Ly9zZWFyY2guaXR1bmVzLmFwcGxlLmNvbS88L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cDovL2J1eS5pdHVuZXMuYXBwbGUuY29tLzwvc3RyaW5nPgogIDwvYXJyYXk+CiAgPGtleT5saWJyYXJ5LWxpbms8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9saWJyYXJ5TGluazwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS1saW5rLWZpZWxkcy1saXN0PC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5pZCxhLHAsZyxjZGRiLXR1aWQsYW4sY24sZ24sa2luZCxuLHBuLHBvZGNhc3QtdXJsPC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PmxpYnJhcnlMaW5rPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmVTZXJ2aWNlcy53b2Evd2EvbGlicmFyeUxpbms8L3N0cmluZz4KICA8a2V5Pm1heENvbXB1dGVyczwva2V5PjxzdHJpbmc+NTwvc3RyaW5nPgogIDxrZXk+dHJ1c3RlZERvbWFpbnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPmFsYmVydC1zby5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+YWIyLXNvLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5hbGJlcnQuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPmJ1eWlwaG9uZS5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+MmdhY3RpdmF0aW9uLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4qLmlwcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+d3d3LmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz50cmFpbGVycy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+cGhvYm9zLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4uaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4ubXpzdGF0aWMuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+bWV0cmljcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+c2VjdXJlLm1lLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4uYXBwbGUuY29tLmVkZ2VzdWl0ZS5uZXQ8L3N0cmluZz4KICAgIDxzdHJpbmc+c3VwcG9ydC5tYWMuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPi5pdHVuZXMuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0dW5lcy5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+ZGVpbW9zLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5kZWltb3MyLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5kZWltb3MzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5pbmRpZ28wMS5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+aW5kaWdvLWVkZ2UuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPm53ay11bmJyaWNrMy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+bXpzdXBwb3J0LmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5zdG9yZXByZXZpZXcuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPi5jb3JwLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4uYXNpYS5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+LmV1cm8uYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPmFpdXN3LmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5zb2Z0ZGVwb3QuZmlsZW1ha2VyLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5pc3RkZXYxLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5pc3R3ZWJkZXYxLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4ucnRsY2RuLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5pc3R3ZWIuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+ZHNpZC1kb21haW5zPC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5idXkuaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4qLWJ1eS5pdHVuZXMuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPnN1Lml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+YXguc3UuaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5teS5pdHVuZXMuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPnNlLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+bXlhcHAuaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz51c2VycHViLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+Yy5pdHVuZXMuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPnNjLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+ZHUuaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5zaWRlYmFyLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+YXguc2lkZWJhci5pdHVuZXMuYXBwbGUuY29tPC9zdHJpbmc+CiAgICA8c3RyaW5nPiotaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz4qLWl0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cGx1cy1pbmZvPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL2lUdW5lc1BsdXNMZWFybk1vcmVQYWdlPC9zdHJpbmc+CiAgPGtleT5oZC1pbmZvPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL0hEVFZMZWFybk1vcmVQYWdlPC9zdHJpbmc+CiAgPGtleT5hcHBsZXR2LXJlbGF0ZWQtY29udGVudC11cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9teS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpQZXJzb25hbGl6ZXIud29hL3dhL3JlbGF0ZWRJdGVtc1NoZWxmPC9zdHJpbmc+CiAgPGtleT5hcHBsZXR2LXlvdXR1YmUtYXV0aC11cmw8L2tleT48c3RyaW5nPmh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vPC9zdHJpbmc+CiAgPGtleT5hcHBsZXR2LXlvdXR1YmUtdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vZ2RhdGEueW91dHViZS5jb20vPC9zdHJpbmc+CiAgPGtleT5hdmFpbGFibGUtc3RvcmVmcm9udHM8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvYXZhaWxhYmxlU3RvcmVGcm9udHM8L3N0cmluZz4KICA8a2V5PmFwcGxldHYtdmlldy10b3AtdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdUb3A8L3N0cmluZz4KICA8a2V5PmFwcGxldHYtdXNlLXBlcnNvbmFsaXplZC1tZW51LWNvbnRlbnQ8L2tleT48c3RyaW5nPk5PPC9zdHJpbmc+CiAgPGtleT5HaG9zdHJpZGVyPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICA8a2V5Pml0dW5lcy1wcmVzZW50cy1kaXJlY3RvcnktdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmVTZXJ2aWNlcy53b2Evd3MvUlNTL2RpcmVjdG9yeTwvc3RyaW5nPgogIDxrZXk+cDItdG9wLXRlbjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3VG9wVGVuc0xpc3Q8L3N0cmluZz4KICA8a2V5PnAyLXNlcnZpY2UtdGVybXMtdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vd3d3LmFwcGxlLmNvbS9sZWdhbC9pdHVuZXMvd3cvPC9zdHJpbmc+CiAgPGtleT5tb2JpbGUtY29ubmVjdGlvbi10eXBlLWFsbG93czwva2V5PgogIDxkaWN0PgogICAgPGtleT4zRzwva2V5PgogICAgPGRpY3Q+CiAgICAgIDxrZXk+ZUJvb2stc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5lQm9vay1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+ZUJvb2stc2VhcmNoLXBhcmFtZXRlcnM8L2tleT48c3RyaW5nPm1lZGlhPWVib29rPC9zdHJpbmc+CiAgICAgIDxrZXk+cDItbXVzaWMtc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5tdXNpYy1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+cDItc3RvcmUtc2VhcmNoLXBhcmFtZXRlcnM8L2tleT48c3RyaW5nPm1lZGlhPWFsbDwvc3RyaW5nPgogICAgICA8a2V5PnAyLXN0b3JlLW5zLXNlYXJjaC1wYXJhbWV0ZXJzPC9rZXk+PHN0cmluZz5tZWRpYT1hbGxXaXRoUmluZ3RvbmU8L3N0cmluZz4KICAgICAgPGtleT5wMi1wb2RjYXN0cy1lbmFibGVkPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5wb2RjYXN0LWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4yMDk3MTUyMDwvaW50ZWdlcj4KICAgICAgPGtleT5wMi1tdXNpYy1zZWFyY2gtcGFyYW1ldGVyczwva2V5PjxzdHJpbmc+bWVkaWE9bXVzaWNBbmRQb2RjYXN0PC9zdHJpbmc+CiAgICAgIDxrZXk+cDItc29mdHdhcmUtc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5zb2Z0d2FyZS1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+dmlkZW8tZG93bmxvYWQtc2l6ZS1saW1pdC1pbi1ieXRlczwva2V5PjxpbnRlZ2VyPjIwOTcxNTIwPC9pbnRlZ2VyPgogICAgPC9kaWN0PgogICAgPGtleT4yRzwva2V5PgogICAgPGRpY3Q+CiAgICAgIDxrZXk+ZUJvb2stc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5lQm9vay1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+ZUJvb2stc2VhcmNoLXBhcmFtZXRlcnM8L2tleT48c3RyaW5nPm1lZGlhPWVib29rPC9zdHJpbmc+CiAgICAgIDxrZXk+cDItbXVzaWMtc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5tdXNpYy1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+cDItc3RvcmUtc2VhcmNoLXBhcmFtZXRlcnM8L2tleT48c3RyaW5nPm1lZGlhPWFsbDwvc3RyaW5nPgogICAgICA8a2V5PnAyLXN0b3JlLW5zLXNlYXJjaC1wYXJhbWV0ZXJzPC9rZXk+PHN0cmluZz5tZWRpYT1hbGxXaXRoUmluZ3RvbmU8L3N0cmluZz4KICAgICAgPGtleT5wMi1wb2RjYXN0cy1lbmFibGVkPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5wb2RjYXN0LWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4yMDk3MTUyMDwvaW50ZWdlcj4KICAgICAgPGtleT5wMi1tdXNpYy1zZWFyY2gtcGFyYW1ldGVyczwva2V5PjxzdHJpbmc+bWVkaWE9bXVzaWNBbmRQb2RjYXN0PC9zdHJpbmc+CiAgICAgIDxrZXk+cDItc29mdHdhcmUtc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5zb2Z0d2FyZS1kb3dubG9hZC1zaXplLWxpbWl0LWluLWJ5dGVzPC9rZXk+PGludGVnZXI+MjA5NzE1MjA8L2ludGVnZXI+CiAgICAgIDxrZXk+dmlkZW8tZG93bmxvYWQtc2l6ZS1saW1pdC1pbi1ieXRlczwva2V5PjxpbnRlZ2VyPjIwOTcxNTIwPC9pbnRlZ2VyPgogICAgPC9kaWN0PgogICAgPGtleT5XaUZpPC9rZXk+CiAgICA8ZGljdD4KICAgICAgPGtleT5lQm9vay1zdG9yZS1hdmFpbGFibGU8L2tleT48c3RyaW5nPllFUzwvc3RyaW5nPgogICAgICA8a2V5PmVCb29rLWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4wPC9pbnRlZ2VyPgogICAgICA8a2V5PmVCb29rLXNlYXJjaC1wYXJhbWV0ZXJzPC9rZXk+PHN0cmluZz5tZWRpYT1lYm9vazwvc3RyaW5nPgogICAgICA8a2V5PnAyLW11c2ljLXN0b3JlLWF2YWlsYWJsZTwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgICAgIDxrZXk+bXVzaWMtZG93bmxvYWQtc2l6ZS1saW1pdC1pbi1ieXRlczwva2V5PjxpbnRlZ2VyPjA8L2ludGVnZXI+CiAgICAgIDxrZXk+cDItc3RvcmUtc2VhcmNoLXBhcmFtZXRlcnM8L2tleT48c3RyaW5nPm1lZGlhPWFsbDwvc3RyaW5nPgogICAgICA8a2V5PnAyLXN0b3JlLW5zLXNlYXJjaC1wYXJhbWV0ZXJzPC9rZXk+PHN0cmluZz5tZWRpYT1hbGxXaXRoUmluZ3RvbmU8L3N0cmluZz4KICAgICAgPGtleT5wMi1wb2RjYXN0cy1lbmFibGVkPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT5wb2RjYXN0LWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4wPC9pbnRlZ2VyPgogICAgICA8a2V5PnAyLW11c2ljLXNlYXJjaC1wYXJhbWV0ZXJzPC9rZXk+PHN0cmluZz5tZWRpYT1tdXNpY0FuZFBvZGNhc3Q8L3N0cmluZz4KICAgICAgPGtleT5wMi1zb2Z0d2FyZS1zdG9yZS1hdmFpbGFibGU8L2tleT48c3RyaW5nPllFUzwvc3RyaW5nPgogICAgICA8a2V5PnNvZnR3YXJlLWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4wPC9pbnRlZ2VyPgogICAgICA8a2V5PnZpZGVvLWRvd25sb2FkLXNpemUtbGltaXQtaW4tYnl0ZXM8L2tleT48aW50ZWdlcj4wPC9pbnRlZ2VyPgogICAgPC9kaWN0PgogIDwvZGljdD4KICA8a2V5PnAyLW11c2ljLXNlYXJjaDwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNlYXJjaC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTZWFyY2gud29hL3dhL3NlYXJjaDwvc3RyaW5nPgogIDxrZXk+cDItbXVzaWMtc2VhcmNoSGludHM8L2tleT48c3RyaW5nPmh0dHA6Ly9heC5zZWFyY2guaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU2VhcmNoSGludHMud29hL3dhL2hpbnRzPC9zdHJpbmc+CiAgPGtleT5wMi1ib29rLXNlYXJjaDwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNlYXJjaC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTZWFyY2gud29hL3dhL3NlYXJjaD9tZWRpYT1lYm9vazwvc3RyaW5nPgogIDxrZXk+cDItYm9vay1zZWFyY2hIaW50czwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNlYXJjaC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTZWFyY2hIaW50cy53b2Evd2EvaGludHM/bWVkaWE9ZWJvb2s8L3N0cmluZz4KICA8a2V5Pm1vYmlsZS10YWItYmFyczwva2V5PgogIDxkaWN0PgogICAgPGtleT5XaUZpLU11c2ljPC9rZXk+CiAgICA8ZGljdD4KICAgICAgPGtleT52ZXJzaW9uPC9rZXk+PHN0cmluZz4zMy0xNDM0NDE8L3N0cmluZz4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvZm9vdGVyU2VjdGlvbnM/YXBwPXdpZmk8L3N0cmluZz4KICAgIDwvZGljdD4KICAgIDxrZXk+U29mdHdhcmU8L2tleT4KICAgIDxkaWN0PgogICAgICA8a2V5PnZlcnNpb248L2tleT48c3RyaW5nPjEyLTE0MzQ0MTwvc3RyaW5nPgogICAgICA8a2V5PnVybDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9mb290ZXJTZWN0aW9ucz9hcHA9YXBwPC9zdHJpbmc+CiAgICA8L2RpY3Q+CiAgICA8a2V5PmVCb29rczwva2V5PgogICAgPGRpY3Q+CiAgICAgIDxrZXk+dmVyc2lvbjwva2V5PjxzdHJpbmc+Ny0xNDM0NDE8L3N0cmluZz4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvZm9vdGVyU2VjdGlvbnM/YXBwPWVCb29rczwvc3RyaW5nPgogICAgPC9kaWN0PgogIDwvZGljdD4KICA8a2V5PnAyLWxhdW5jaC1ob3N0LXN1ZmZpeC13aGl0ZWxpc3Q8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPi5hcHBsZS5jb208L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLW1vYmlsZXN0b3JlLWhvc3QtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPigoYnV5fG15fHNlYXJjaHxjKVwuKT9pdHVuZXNcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICA8c3RyaW5nPnBob2Jvc1wuYXBwbGVcLmNvbSQ8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLW1vYmlsZXN0b3JlLXBhdGgtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPl4vd2Vib2JqZWN0cy9tenN0b3JlLndvYS93YS8oc3RvcmVmcm9udHx2aWV3dG9wdGVuc2xpc3R8dmlld3RvcGZpZnR5fHZpZXd0b3B8dmlld2F1ZGlvYm9va3x2aWV3Z3JvdXBpbmd8dmlld2dlbnJlfHZpZXdwbGF5bGlzdHNwYWdlfHZpZXdyb29tfHZpZXdhbGJ1bXx2aWV3cG9kY2FzdHx2aWV3bWl4fHN0b3JlZnJvbnRzfHZpZXdjb250ZW50c3VzZXJyZXZpZXdzfHZpZXdldWxhfHZpZXd0dnNob3d8dmlld3R2c2Vhc29ufHZpZXdtb3ZpZXx2aWV3dmlkZW98Zm9vdGVyc2VjdGlvbnN8bGlicmFyeWxpbmt8dmlld2ZlYXR1cmV8dmlld2FydGlzdCk8L3N0cmluZz4KICAgIDxzdHJpbmc+Xi93ZWJvYmplY3RzL216c2VhcmNoLndvYS93YS8oc2VhcmNofGFkdmFuY2Vkc2VhcmNoKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXooZmFzdCk/ZmluYW5jZS53b2Evd2EvKGNvbS5hcHBsZS5qaW5nbGUuYXBwLmZpbmFuY2UuZGlyZWN0YWN0aW9uLyk/KHJlZGVlbWxhbmRpbmdwYWdlfGZyZWVwcm9kdWN0Y29kZXdpemFyZHxjaGVja2ZvcnByZW9yZGVyc3xzaG93ZGlhbG9nZm9ycmVkZWVtfGJ1eW9uZWdldG9uZXxjaGVja2ZvcnB1cmNoYXNlc2F1dGh8YXJ0aXN0Y29ubmVjdHxyZWpvaW5hcnRpc3Rjb25uZWN0fG9wdGludG9jb25uZWN0aW9uc3xyZWpvaW5vcHRpbnRvY29ubmVjdGlvbnN8b3B0aW50b3BpbmcpPC9zdHJpbmc+CiAgICA8c3RyaW5nPl4vKFthLXpdW2Etel0vKT8oYWxidW18YXJ0aXN0fGF1ZGlvYm9va3xhdWRpb2Jvb2tzfGF1dGhvcnxib29rfGJyb3dzZXxjYXRlZ29yeXxjZWxlYnJpdHktcGxheWxpc3RzfGNoYXJ0c3xjb2xsYWJvcmF0aW9ufGNvbGxlY3Rpb258Y29sbGVjdGlvbnN8Y29tcG9zZXJ8Y3VzdG9tZXItcmV2aWV3c3xkaXJlY3Rvcnxlc3NlbnRpYWx8ZXNzZW50aWFsc3xmYXF8Z2VucmV8aW1peHxpbWl4ZXN8bW92aWV8bW92aWUtcmVudGFsc3xtb3ZpZXN8bXVzaWN8bXVzaWMtdmlkZW98cGxheWxpc3R8cG9kY2FzdHxwb2RjYXN0c3xwcmVvcmRlcnxwcm9tb3Rpb258cmV2aWV3fHJldmlld3N8c3RvcmV8c3R1ZGlvfHR2LXNlYXNvbnx0di1zaG93fHR2LXNob3dzfHZpZGVvfGl0dW5lcy11fGluc3RpdHV0aW9ufG9wdGludG9jb25uZWN0aW9uc3xvcHRpbnRvcGluZykoL3xcP3wkKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpjb250ZW50bGluay53b2Evd2EvbGluayhcP3wkKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpjb25uZWN0aW9ucy53b2Evd2EvPC9zdHJpbmc+CiAgICA8c3RyaW5nPl4vd2Vib2JqZWN0cy9tenVzZXJwdWJsaXNoaW5nLndvYS93YS8obWFuYWdlYXJ0aXN0YWxlcnRzKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpwZXJzb25hbGl6ZXIud29hL3dhLyhteWFsZXJ0cyk8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLWFwcHN0b3JlLWhvc3QtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPigoYnV5fG15fHNlYXJjaHxjKVwuKT9pdHVuZXNcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICA8c3RyaW5nPnBob2Jvc1wuYXBwbGVcLmNvbSQ8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLWFwcHN0b3JlLXBhdGgtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPlsmYW1wOz9dKG10PTh8bWVkaWE9c29mdHdhcmUpKCZhbXA7fCQpPC9zdHJpbmc+CiAgICA8c3RyaW5nPl4vd2Vib2JqZWN0cy9tenNvZnR3YXJldXBkYXRlLndvYS93YS8oYXZhaWxhYmxlc29mdHdhcmV1cGRhdGVzKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzdG9yZS53b2Evd2EvKHZpZXdzb2Z0d2FyZXxwYW5kYXN0b3JlZnJvbnR8dmlld2ZlYXR1cmVkc29mdHdhcmVjYXRlZ29yaWVzKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpmaW5hbmNlLndvYS93YS8oY29tLmFwcGxlLmppbmdsZS5hcHAuZmluYW5jZS5kaXJlY3RhY3Rpb24vKT8odmVyaWZ5YWNjb3VudGVtYWlsKTwvc3RyaW5nPgogICAgPHN0cmluZz5eLyhbYS16XVthLXpdLyk/KGFwcHxhcHBzLXN0b3JlfGRldmVsb3BlcikoL3xcP3wkKTwvc3RyaW5nPgogIDwvYXJyYXk+CiAgPGtleT5wMi1sYXVuY2gtZWJvb2tzdG9yZS1ob3N0LXBhdHRlcm5zPC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz4oKGJ1eXxteXxzZWFyY2h8YylcLik/aXR1bmVzXC5hcHBsZVwuY29tJDwvc3RyaW5nPgogICAgPHN0cmluZz5waG9ib3NcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PnAyLWxhdW5jaC1lYm9va3N0b3JlLXBhdGgtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPlsmYW1wOz9dKG10PTExfG1lZGlhPWVib29rKSgmYW1wO3wkKTwvc3RyaW5nPgogICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzdG9yZS53b2Evd2EvKHZpZXdib29rKTwvc3RyaW5nPgogICAgPHN0cmluZz5eLyhbYS16XVthLXpdLyk/KGJvb2spKC98XD98JCk8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLWFwcGxlLXN0b3JlLWhvc3QtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPl4oc3RvcmV8cmVzZXJ2ZSlbLl1hcHBsZVsuXWNvbSQ8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+cDItbGF1bmNoLWFwcGxlLXN0b3JlLXBhdGgtcGF0dGVybnM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPl4vKFteL10rLyk/eGMvPC9zdHJpbmc+CiAgICA8c3RyaW5nPl5bXj9dKi9yZXNlcnZlcHJvZHVjdChcP3wkKTwvc3RyaW5nPgogIDwvYXJyYXk+CiAgPGtleT5wMi11cmwtcmVzb2x1dGlvbjwva2V5PgogIDxhcnJheT4KICAgIDxkaWN0PgogICAgICA8a2V5PnAyLXVybC1zZWN0aW9uLW5hbWU8L2tleT48c3RyaW5nPkVCb29rczwvc3RyaW5nPgogICAgICA8a2V5Pmhvc3Qtc3VmZml4LXdoaXRlbGlzdDwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz4uYXBwbGUuY29tPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICAgIDxrZXk+aG9zdC1wYXR0ZXJuczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz4oKGJ1eXxteXxzZWFyY2h8YylcLik/aXR1bmVzXC5hcHBsZVwuY29tJDwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+cGhvYm9zXC5hcHBsZVwuY29tJDwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgICA8a2V5PnBhdGgtcGF0dGVybnM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+WyZhbXA7P10obXQ9MTF8bWVkaWE9ZWJvb2spKCZhbXA7fCQpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzdG9yZS53b2Evd2EvKHZpZXdib29rKTwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+Xi8oW2Etel1bYS16XS8pPyhib29rKSgvfFw/fCQpPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICAgIDxrZXk+c2NoZW1lLW1hcHBpbmc8L2tleT4KICAgICAgPGRpY3Q+CiAgICAgICAgPGtleT5odHRwPC9rZXk+PHN0cmluZz5pdG1zLWJvb2s8L3N0cmluZz4KICAgICAgICA8a2V5Pmh0dHBzPC9rZXk+PHN0cmluZz5pdG1zLWJvb2tzPC9zdHJpbmc+CiAgICAgIDwvZGljdD4KICAgIDwvZGljdD4KICAgIDxkaWN0PgogICAgICA8a2V5PnAyLXVybC1zZWN0aW9uLW5hbWU8L2tleT48c3RyaW5nPk1vYmlsZVNvZnR3YXJlQXBwbGljYXRpb25zPC9zdHJpbmc+CiAgICAgIDxrZXk+aG9zdC1zdWZmaXgtd2hpdGVsaXN0PC9rZXk+CiAgICAgIDxhcnJheT4KICAgICAgICA8c3RyaW5nPi5hcHBsZS5jb208L3N0cmluZz4KICAgICAgPC9hcnJheT4KICAgICAgPGtleT5ob3N0LXBhdHRlcm5zPC9rZXk+CiAgICAgIDxhcnJheT4KICAgICAgICA8c3RyaW5nPigoYnV5fG15fHNlYXJjaHxjKVwuKT9pdHVuZXNcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5waG9ib3NcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICAgIDxrZXk+cGF0aC1wYXR0ZXJuczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz5bJmFtcDs/XShtdD04fG1lZGlhPXNvZnR3YXJlKSgmYW1wO3wkKTwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+Xi93ZWJvYmplY3RzL216c29mdHdhcmV1cGRhdGUud29hL3dhLyhhdmFpbGFibGVzb2Z0d2FyZXVwZGF0ZXMpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzdG9yZS53b2Evd2EvKHZpZXdzb2Z0d2FyZXxwYW5kYXN0b3JlZnJvbnR8dmlld2ZlYXR1cmVkc29mdHdhcmVjYXRlZ29yaWVzKTwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+Xi93ZWJvYmplY3RzL216ZmluYW5jZS53b2Evd2EvKGNvbS5hcHBsZS5qaW5nbGUuYXBwLmZpbmFuY2UuZGlyZWN0YWN0aW9uLyk/KHZlcmlmeWFjY291bnRlbWFpbCk8L3N0cmluZz4KICAgICAgICA8c3RyaW5nPl4vKFthLXpdW2Etel0vKT8oYXBwfGFwcHMtc3RvcmV8ZGV2ZWxvcGVyKSgvfFw/fCQpPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICAgIDxrZXk+c2NoZW1lLW1hcHBpbmc8L2tleT4KICAgICAgPGRpY3Q+CiAgICAgICAgPGtleT5odHRwPC9rZXk+PHN0cmluZz5pdG1zLWFwcHM8L3N0cmluZz4KICAgICAgICA8a2V5Pmh0dHBzPC9rZXk+PHN0cmluZz5pdG1zLWFwcHNzPC9zdHJpbmc+CiAgICAgIDwvZGljdD4KICAgIDwvZGljdD4KICAgIDxkaWN0PgogICAgICA8a2V5PnAyLXVybC1zZWN0aW9uLW5hbWU8L2tleT48c3RyaW5nPk11c2ljPC9zdHJpbmc+CiAgICAgIDxrZXk+aG9zdC1zdWZmaXgtd2hpdGVsaXN0PC9rZXk+CiAgICAgIDxhcnJheT4KICAgICAgICA8c3RyaW5nPi5hcHBsZS5jb208L3N0cmluZz4KICAgICAgPC9hcnJheT4KICAgICAgPGtleT5ob3N0LXBhdHRlcm5zPC9rZXk+CiAgICAgIDxhcnJheT4KICAgICAgICA8c3RyaW5nPigoYnV5fG15fHNlYXJjaHxjKVwuKT9pdHVuZXNcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5waG9ib3NcLmFwcGxlXC5jb20kPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICAgIDxrZXk+cGF0aC1wYXR0ZXJuczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzdG9yZS53b2Evd2EvKHN0b3JlZnJvbnR8dmlld3RvcHRlbnNsaXN0fHZpZXd0b3BmaWZ0eXx2aWV3dG9wfHZpZXdhdWRpb2Jvb2t8dmlld2dyb3VwaW5nfHZpZXdnZW5yZXx2aWV3cGxheWxpc3RzcGFnZXx2aWV3cm9vbXx2aWV3YWxidW18dmlld3BvZGNhc3R8dmlld21peHxzdG9yZWZyb250c3x2aWV3Y29udGVudHN1c2VycmV2aWV3c3x2aWV3ZXVsYXx2aWV3dHZzaG93fHZpZXd0dnNlYXNvbnx2aWV3bW92aWV8dmlld3ZpZGVvfGZvb3RlcnNlY3Rpb25zfGxpYnJhcnlsaW5rfHZpZXdmZWF0dXJlfHZpZXdhcnRpc3QpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpzZWFyY2gud29hL3dhLyhzZWFyY2h8YWR2YW5jZWRzZWFyY2gpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXooZmFzdCk/ZmluYW5jZS53b2Evd2EvKGNvbS5hcHBsZS5qaW5nbGUuYXBwLmZpbmFuY2UuZGlyZWN0YWN0aW9uLyk/KHJlZGVlbWxhbmRpbmdwYWdlfGZyZWVwcm9kdWN0Y29kZXdpemFyZHxjaGVja2ZvcnByZW9yZGVyc3xzaG93ZGlhbG9nZm9ycmVkZWVtfGJ1eW9uZWdldG9uZXxjaGVja2ZvcnB1cmNoYXNlc2F1dGh8YXJ0aXN0Y29ubmVjdHxyZWpvaW5hcnRpc3Rjb25uZWN0fG9wdGludG9jb25uZWN0aW9uc3xyZWpvaW5vcHRpbnRvY29ubmVjdGlvbnN8b3B0aW50b3BpbmcpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eLyhbYS16XVthLXpdLyk/KGFsYnVtfGFydGlzdHxhdWRpb2Jvb2t8YXVkaW9ib29rc3xhdXRob3J8Ym9va3xicm93c2V8Y2F0ZWdvcnl8Y2VsZWJyaXR5LXBsYXlsaXN0c3xjaGFydHN8Y29sbGFib3JhdGlvbnxjb2xsZWN0aW9ufGNvbGxlY3Rpb25zfGNvbXBvc2VyfGN1c3RvbWVyLXJldmlld3N8ZGlyZWN0b3J8ZXNzZW50aWFsfGVzc2VudGlhbHN8ZmFxfGdlbnJlfGltaXh8aW1peGVzfG1vdmllfG1vdmllLXJlbnRhbHN8bW92aWVzfG11c2ljfG11c2ljLXZpZGVvfHBsYXlsaXN0fHBvZGNhc3R8cG9kY2FzdHN8cHJlb3JkZXJ8cHJvbW90aW9ufHJldmlld3xyZXZpZXdzfHN0b3JlfHN0dWRpb3x0di1zZWFzb258dHYtc2hvd3x0di1zaG93c3x2aWRlb3xpdHVuZXMtdXxpbnN0aXR1dGlvbnxvcHRpbnRvY29ubmVjdGlvbnN8b3B0aW50b3BpbmcpKC98XD98JCk8L3N0cmluZz4KICAgICAgICA8c3RyaW5nPl4vd2Vib2JqZWN0cy9temNvbnRlbnRsaW5rLndvYS93YS9saW5rKFw/fCQpPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXpjb25uZWN0aW9ucy53b2Evd2EvPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5eL3dlYm9iamVjdHMvbXp1c2VycHVibGlzaGluZy53b2Evd2EvKG1hbmFnZWFydGlzdGFsZXJ0cyk8L3N0cmluZz4KICAgICAgICA8c3RyaW5nPl4vd2Vib2JqZWN0cy9tenBlcnNvbmFsaXplci53b2Evd2EvKG15YWxlcnRzKTwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgICA8a2V5PnNjaGVtZS1tYXBwaW5nPC9rZXk+CiAgICAgIDxkaWN0PgogICAgICAgIDxrZXk+aHR0cDwva2V5PjxzdHJpbmc+aXRtczwvc3RyaW5nPgogICAgICAgIDxrZXk+aHR0cHM8L2tleT48c3RyaW5nPml0bXNzPC9zdHJpbmc+CiAgICAgIDwvZGljdD4KICAgIDwvZGljdD4KICA8L2FycmF5PgogIDxrZXk+cDItbXVzaWMtc3RvcmUtYXZhaWxhYmxlPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICA8a2V5PnAyLXNvZnR3YXJlLXN0b3JlLWF2YWlsYWJsZTwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgPGtleT5wMi1wYW5kYS1zdG9yZWZyb250PC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3BhbmRhU3RvcmVGcm9udDwvc3RyaW5nPgogIDxrZXk+cDItcGFuZGEtZ2VucmVzPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdGZWF0dXJlZFNvZnR3YXJlQ2F0ZWdvcmllczwvc3RyaW5nPgogIDxrZXk+cDItcGFuZGEtdG9wLWNoYXJ0czwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3VG9wP2dlbnJlSWQ9MzY8L3N0cmluZz4KICA8a2V5PnAyLXBhbmRhLXRvcC1maWZ0eTwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3VG9wRmlmdHk/Z2VucmVJZD0zNjwvc3RyaW5nPgogIDxrZXk+cDItcGFuZGEtdXBkYXRlczwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3UGFuZGFVcGRhdGVzPC9zdHJpbmc+CiAgPGtleT5wMi1wYW5kYS1zZWFyY2g8L2tleT48c3RyaW5nPmh0dHA6Ly9heC5zZWFyY2guaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU2VhcmNoLndvYS93YS9zZWFyY2g/bWVkaWE9c29mdHdhcmU8L3N0cmluZz4KICA8a2V5PnAyLXBhbmRhLXNlYXJjaEhpbnRzPC9rZXk+PHN0cmluZz5odHRwOi8vYXguc2VhcmNoLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlNlYXJjaEhpbnRzLndvYS93YS9oaW50cz9tZWRpYT1zb2Z0d2FyZTwvc3RyaW5nPgogIDxrZXk+YXZhaWxhYmxlLXNvZnR3YXJlLXVwZGF0ZXM8L2tleT48c3RyaW5nPmh0dHA6Ly9heC5zdS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTb2Z0d2FyZVVwZGF0ZS53b2Evd2EvYXZhaWxhYmxlU29mdHdhcmVVcGRhdGVzPC9zdHJpbmc+CiAgPGtleT5hdmFpbGFibGUtc29mdHdhcmUtdXBkYXRlcy1odG1sPC9rZXk+PHN0cmluZz5odHRwOi8vYXguc3UuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU29mdHdhcmVVcGRhdGUud29hL3dhL3ZpZXdTb2Z0d2FyZVVwZGF0ZXM8L3N0cmluZz4KICA8a2V5PmF2YWlsYWJsZS1zb2Z0d2FyZS1jaGVjay1vbi1sYXVuY2g8L2tleT48c3RyaW5nPllFUzwvc3RyaW5nPgogIDxrZXk+YXZhaWxhYmxlLXNvZnR3YXJlLXVwZGF0ZXMtcmVsb2FkLWZyZXF1ZW5jeTwva2V5PjxpbnRlZ2VyPjg0PC9pbnRlZ2VyPgogIDxrZXk+YXZhaWxhYmxlLXNvZnR3YXJlLXVwZGF0ZXMtY29tcHJlc3MtcmVxdWVzdDwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgPGtleT5wMi1hcHBsaWNhdGlvbi11c2VyLXJldmlldy1pbmZvPC9rZXk+PHN0cmluZz5odHRwczovL3VzZXJwdWIuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aVXNlclB1Ymxpc2hpbmcud29hL3dhL3VzZXJSZXZpZXdJbmZvP3R5cGU9UHVycGxlK1NvZnR3YXJlJmFtcDthbXA7ZGlzcGxheWFibGUta2luZD0xMTwvc3RyaW5nPgogIDxrZXk+cDItY2FwYWJpbGl0aWVzLWRpYWxvZzwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9jYXBhYmlsaXRpZXNEaWFsb2c8L3N0cmluZz4KICA8a2V5PnAyLWFjY2Vzc29yeS1yb29tPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdBY2Nlc3NvcnlSb29tPC9zdHJpbmc+CiAgPGtleT5wMi1wcm9kdWN0LW9mZmVyczwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9mZXRjaFNvZnR3YXJlQWRkT25zPC9zdHJpbmc+CiAgPGtleT5wMi1wcm9kdWN0LW9mZmVycy1iYXRjaC1saW1pdDwva2V5PjxpbnRlZ2VyPjEwMDwvaW50ZWdlcj4KICA8a2V5PnAyLWFwcC1nZW5pdXMtc3RhdGlzdGljczwva2V5PgogIDxkaWN0PgogICAgPGtleT5hbGxvd2VkLWNvbm5lY3Rpb24tdHlwZXM8L2tleT4KICAgIDxkaWN0PgogICAgICA8a2V5PjNHPC9rZXk+PHN0cmluZz5ZRVM8L3N0cmluZz4KICAgICAgPGtleT4yRzwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgICAgIDxrZXk+V2lGaTwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgICA8L2RpY3Q+CiAgICA8a2V5PnVybDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9nZW5pdXMuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL1VDQXBwQ2hhbm5lbC53b2Evd2EvYXBwU3RhdHM8L3N0cmluZz4KICAgIDxrZXk+cG9zdC1pbnRlcnZhbDwva2V5PjxpbnRlZ2VyPjE0NDAwPC9pbnRlZ2VyPgogICAgPGtleT5zZW5kLWRhdGEtdXNhZ2U8L2tleT48c3RyaW5nPk5PPC9zdHJpbmc+CiAgPC9kaWN0PgogIDxrZXk+Y2xpZW50LWNhY2hlLWRlZmluaXRpb25zPC9rZXk+CiAgPGRpY3Q+CiAgICA8a2V5PmNhY2hlczwva2V5PgogICAgPGFycmF5PgogICAgICA8ZGljdD4KICAgICAgICA8a2V5PnR5cGU8L2tleT48c3RyaW5nPmNsaWVudC1jYWNoZS1kZWZpbml0aW9uPC9zdHJpbmc+CiAgICAgICAgPGtleT5tZW1vcnktc2l6ZTwva2V5PjxpbnRlZ2VyPjE1NzI4NjQ8L2ludGVnZXI+CiAgICAgICAgPGtleT5kaXNrLXNpemU8L2tleT48aW50ZWdlcj4xNTcyODY0PC9pbnRlZ2VyPgogICAgICAgIDxrZXk+cGVyc2lzdGVudC1pZDwva2V5PjxzdHJpbmc+QjNDQnNjcmlwdENhY2hlPC9zdHJpbmc+CiAgICAgICAgPGtleT5jbGllbnRzPC9rZXk+CiAgICAgICAgPGFycmF5PgogICAgICAgICAgPHN0cmluZz5Tb2Z0d2FyZTwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5lQm9va3M8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+V2lGaS1NdXNpYzwvc3RyaW5nPgogICAgICAgIDwvYXJyYXk+CiAgICAgICAgPGtleT5maWxlLWV4dGVuc2lvbnM8L2tleT4KICAgICAgICA8YXJyYXk+CiAgICAgICAgICA8c3RyaW5nPmNzczwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5jc3N6PC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPmpzPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPmpzejwvc3RyaW5nPgogICAgICAgIDwvYXJyYXk+CiAgICAgIDwvZGljdD4KICAgICAgPGRpY3Q+CiAgICAgICAgPGtleT50eXBlPC9rZXk+PHN0cmluZz5jbGllbnQtY2FjaGUtZGVmaW5pdGlvbjwvc3RyaW5nPgogICAgICAgIDxrZXk+bWVtb3J5LXNpemU8L2tleT48aW50ZWdlcj4yMDk3MTUyPC9pbnRlZ2VyPgogICAgICAgIDxrZXk+ZGlzay1zaXplPC9rZXk+PGludGVnZXI+MjA5NzE1MjwvaW50ZWdlcj4KICAgICAgICA8a2V5PnBlcnNpc3RlbnQtaWQ8L2tleT48c3RyaW5nPkIzQ0JpbWFnZUNhY2hlPC9zdHJpbmc+CiAgICAgICAgPGtleT5jbGllbnRzPC9rZXk+CiAgICAgICAgPGFycmF5PgogICAgICAgICAgPHN0cmluZz5Tb2Z0d2FyZTwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5lQm9va3M8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+V2lGaS1NdXNpYzwvc3RyaW5nPgogICAgICAgIDwvYXJyYXk+CiAgICAgICAgPGtleT51cmwtcGF0dGVybnM8L2tleT4KICAgICAgICA8YXJyYXk+CiAgICAgICAgICA8c3RyaW5nPnNwcml0ZXMtazItc3RvcmVmcm9udC5wbmc8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+bWlkZGxlX2JsdWVfcHJlc3NlZC5wbmc8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+bWlkZGxlX2JsdWUucG5nPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPm1pZGRsZV9ncmF5X3ByZXNzZWQucG5nPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPm1pZGRsZV9ncmF5LnBuZzwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5taWRkbGVfZ3JlZW5fcHJlc3NlZC5wbmc8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+bWlkZGxlX2dyZWVuLnBuZzwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5taWRkbGVfZGFya2dyYXlfcHJlc3NlZC5wbmc8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+bWlkZGxlX3NpbHZlcl9wcmVzc2VkLnBuZzwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5hY3Rpb24tYnV0dG9uLWJnLnBuZzwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5hY3Rpb24tYnV0dG9uLWJnLXByZXNzZWQucG5nPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPm1pZGRsZV9kYXJrZ3JheS5wbmc8L3N0cmluZz4KICAgICAgICAgIDxzdHJpbmc+bWlkZGxlX3NpbHZlci5wbmc8L3N0cmluZz4KICAgICAgICA8L2FycmF5PgogICAgICA8L2RpY3Q+CiAgICAgIDxkaWN0PgogICAgICAgIDxrZXk+dHlwZTwva2V5PjxzdHJpbmc+Y2xpZW50LWNhY2hlLWRlZmluaXRpb248L3N0cmluZz4KICAgICAgICA8a2V5Pm1lbW9yeS1zaXplPC9rZXk+PGludGVnZXI+MjA5NzE1MjwvaW50ZWdlcj4KICAgICAgICA8a2V5PnBlcnNpc3RlbnQtaWQ8L2tleT48c3RyaW5nPkIzQ0JtaXNjQ2FjaGU8L3N0cmluZz4KICAgICAgICA8a2V5PmNsaWVudHM8L2tleT4KICAgICAgICA8YXJyYXk+CiAgICAgICAgICA8c3RyaW5nPlNvZnR3YXJlPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPmVCb29rczwvc3RyaW5nPgogICAgICAgICAgPHN0cmluZz5XaUZpLU11c2ljPC9zdHJpbmc+CiAgICAgICAgPC9hcnJheT4KICAgICAgPC9kaWN0PgogICAgPC9hcnJheT4KICA8L2RpY3Q+CiAgPGtleT5wbGF0Zm9ybS1ncmFkaWVudHM8L2tleT4KICA8ZGljdD4KICAgIDxrZXk+ZUJvb2tzPC9rZXk+CiAgICA8ZGljdD4KICAgICAgPGtleT5wYWdlPC9rZXk+CiAgICAgIDxkaWN0PgogICAgICAgIDxrZXk+dG9wLWNvbG9yPC9rZXk+PHN0cmluZz5yZ2IoMjExLDIxNSwyMTgpPC9zdHJpbmc+CiAgICAgICAgPGtleT5ib3R0b20tY29sb3I8L2tleT48c3RyaW5nPnJnYigyMTEsMjE1LDIxOCk8L3N0cmluZz4KICAgICAgPC9kaWN0PgogICAgPC9kaWN0PgogIDwvZGljdD4KICA8a2V5PnZpZXctbW9iaWxlLXNvZnR3YXJlLXVwZGF0ZXM8L2tleT48c3RyaW5nPmh0dHA6Ly9heC5zdS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTb2Z0d2FyZVVwZGF0ZS53b2Evd2Evdmlld0FsbEF2YWlsYWJsZVNvZnR3YXJlVXBkYXRlczwvc3RyaW5nPgogIDxrZXk+bm93LXBsYXlpbmctdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL25vd1BsYXlpbmc8L3N0cmluZz4KICA8a2V5Pm5vdy1wbGF5aW5nLW5ldHdvcmstZGV0ZWN0LXVybDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9ub3dQbGF5aW5nPC9zdHJpbmc+CiAgPGtleT5hZGFtaWQtbG9va3VwLXVybDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9hZGFtSWRMb29rdXA8L3N0cmluZz4KICA8a2V5PnJlbnRhbC1yZWNvbW1lbmRhdGlvbnM8L2tleT48c3RyaW5nPmh0dHA6Ly9teS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpQZXJzb25hbGl6ZXIud29hL3dhL3JlbnRhbFJlY29tbWVuZGF0aW9uczwvc3RyaW5nPgogIDxrZXk+cmVudGFsLW1haW48L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld1JlbnRhbE1haW48L3N0cmluZz4KICA8a2V5PnR2LXJlbnRhbC1tYWluPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdUdlJlbnRhbE1haW4/cz0xNDM0NDE8L3N0cmluZz4KICA8a2V5PnZpZXdUVlNlYXNvbjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3VFZTZWFzb248L3N0cmluZz4KICA8a2V5PnZpZXdUVlNob3c8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld1RWU2hvdzwvc3RyaW5nPgogIDxrZXk+dmlld01vdmllPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdNb3ZpZTwvc3RyaW5nPgogIDxrZXk+dmlld0dhbWU8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0dhbWU8L3N0cmluZz4KICA8a2V5PnZpZXdQcmVvcmRlcjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3UHJlb3JkZXI8L3N0cmluZz4KICA8a2V5Pm5pa2UtcGx1cy1sYW5kaW5nLXBhZ2U8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2Evdmlld0N1c3RvbVBhZ2U/bmFtZT1wYWdlTmlrZTwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS11cGRhdGUtYWNjZXB0aW5nLXJlcXVlc3RzPC9rZXk+PHN0cmluZz5odHRwczovL2dlbml1cy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvVUNHb3Zlcm5vci53b2Evd2EvbGlicmFyeVVwZGF0ZUFjY2VwdGluZ1JlcXVlc3RzPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1yZXF1ZXN0PC9rZXk+PHN0cmluZz5odHRwczovL2dlbml1cy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvVUNHb3Zlcm5vci53b2Evd2EvcmVxdWVzdExpYnJhcnlVcGRhdGU8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLWNoZWNrPC9rZXk+PHN0cmluZz5odHRwczovL2dlbml1cy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvVUNHb3Zlcm5vci53b2Evd2EvY2hlY2tVcGRhdGVQcm9jZXNzaW5nU3RhdHVzPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1tZWRpYS10eXBlczwva2V5PjxzdHJpbmc+Ym9vayxmZWF0dXJlLW1vdmllLG11c2ljLXZpZGVvLHBvZGNhc3QtZmVlZCxwb2RjYXN0LWVwaXNvZGUsc29uZyx0di1lcGlzb2RlPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1maWVsZHM8L2tleT48c3RyaW5nPmFkZGVkLWRhdGUsYWxidW0tcmF0aW5nLGFsYnVtLXJhdGluZy1jb21wdXRlZCxhcnRpc3QtaWQsYXJ0aXN0LW5hbWUsY2RkYi1maW5nZXJwcmludCxjZGRiLWZpbmdlcnByaW50LW5vdC1hdmFpbCxjZGRiLW1lZGlhLWlkLGNkZGItbXVpZCxjZGRiLXRvYyxjZGRiLXR1aWQsY2RkYi10dWlkLXRhZyxjb21wb3Nlci1uYW1lLGR1cmF0aW9uLGVpZCxlcGlzb2RlLWlkLGVwaXNvZGUtbnVtYmVyLGV4Y2x1ZGUtZnJvbS1zaHVmZmxlLGZlZWQtdXJsLGZpbGVuYW1lLGdlbml1cy1wbGF5LWNvdW50LGdlbnJlLW5hbWUsZ3JhbmRwYXJlbnQtZGlyLGl0ZW0tY2hlY2tlZCxpdGVtLWlkLGl0ZW0tbmFtZSxraW5kLGxhY2tzLWNvdmVyLWFydCxsYXN0LXBsYXllZC1kYXRlLGxhc3Qtc2tpcHBlZC1kYXRlLGxvbmctZGVzY3JpcHRpb24sbWF0Y2gtaWQscGFyZW50LWRpcixwZXJzaXN0ZW50LWlkLHBsYXktY291bnQscGxheWxpc3QtaWQscGxheWxpc3QtbmFtZSxwb2RjYXN0LWNhdGVnb3J5LHBvZGNhc3QtZ3VpZCxwb2RjYXN0LWlkLHByb3RlY3RlZCxyZW50YWwsc2Vhc29uLW51bWJlcixzaG93LHNraXAtY291bnQsdHJhY2stbnVtYmVyLHRyYWNrLWNvdW50LHVzZXItcmF0aW5nLHVzZXItcmF0aW5nLWNvbXB1dGVkLHZhbGlkLWZpZWxkcyx5ZWFyPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1jb3JyZWxhdGlvbi1maWVsZHM8L2tleT48c3RyaW5nPmFkZGVkLWRhdGUsYWxidW0tcmF0aW5nLGFsYnVtLXJhdGluZy1jb21wdXRlZCxsYXN0LXBsYXllZC1kYXRlLGxhc3Qtc2tpcHBlZC1kYXRlLHBsYXktY291bnQsc2tpcC1jb3VudCx1c2VyLXJhdGluZyx1c2VyLXJhdGluZy1jb21wdXRlZDwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS11cGRhdGUtbWF0Y2hpbmctZmllbGRzPC9rZXk+PHN0cmluZz5hcnRpc3QtbmFtZSxjZGRiLWZpbmdlcnByaW50LGNkZGItZmluZ2VycHJpbnQtbm90LWF2YWlsLCBjZGRiLW1lZGlhLWlkLGNkZGItbXVpZCxjZGRiLXRvYyxjZGRiLXR1aWQsY2RkYi10dWlkLXRhZyxjb21wb3Nlci1uYW1lLGR1cmF0aW9uLGVpZCxmaWxlbmFtZSxnZW5yZS1uYW1lLGdyYW5kcGFyZW50LWRpcixpdGVtLWNoZWNrZWQsaXRlbS1pZCxpdGVtLW5hbWUsa2luZCxtYXRjaC1pZCxwYXJlbnQtZGlyLHBlcnNpc3RlbnQtaWQscGxheWxpc3QtbmFtZSxwcm90ZWN0ZWQsdHJhY2stbnVtYmVyLHRyYWNrLWNvdW50LHllYXI8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLW1pbmltdW0tZmllbGRzPC9rZXk+PHN0cmluZz5hcnRpc3QtbmFtZSxjZGRiLWZpbmdlcnByaW50LGNkZGItZmluZ2VycHJpbnQtbm90LWF2YWlsLCBjZGRiLW1lZGlhLWlkLGNkZGItbXVpZCxjZGRiLXRvYyxjZGRiLXR1aWQsY2RkYi10dWlkLXRhZyxjb21wb3Nlci1uYW1lLGR1cmF0aW9uLGVpZCxmaWxlbmFtZSxnZW5yZS1uYW1lLGdyYW5kcGFyZW50LWRpcixpdGVtLWNoZWNrZWQsaXRlbS1pZCxpdGVtLW5hbWUsa2luZCxtYXRjaC1pZCxwYXJlbnQtZGlyLHBlcnNpc3RlbnQtaWQscGxheWxpc3QtbmFtZSxwcm90ZWN0ZWQsdHJhY2stbnVtYmVyLHRyYWNrLWNvdW50LHllYXI8L3N0cmluZz4KICA8a2V5PnVjLXNlcnZlci1kaXNhYmxlZDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNFcnJvcj9lcnJvcj1zZXJ2ZXJEaXNhYmxlZDwvc3RyaW5nPgogIDxrZXk+dWMtc2VydmVyLW5vdC1hY2NlcHRpbmctc2lnbnVwczwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNFcnJvcj9lcnJvcj1zZXJ2ZXJOb3RBY2NlcHRpbmdTaWdudXBzPC9zdHJpbmc+CiAgPGtleT51Yy1nb3Zlcm5vci1lcnJvcjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNQcm9ncmVzcz9zdGF0ZT1lcnJvciZhbXA7c3RlcD0yPC9zdHJpbmc+CiAgPGtleT51Yy1wcm9ncmVzcy1zdG9wcGVkPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3VzZXJDb2xsZWN0aW9uc1Byb2dyZXNzP3N0YXRlPXN0b3BwZWQ8L3N0cmluZz4KICA8a2V5PnVjLXN0ZXAtb25lPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3VzZXJDb2xsZWN0aW9uc1Byb2dyZXNzP3N0ZXA9MTwvc3RyaW5nPgogIDxrZXk+dWMtc3RlcC10d28tc2VydmVyLXByb2Nlc3Npbmc8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zUHJvZ3Jlc3M/c3RhdGU9c2VydmVycHJvY2Vzc2luZyZhbXA7c3RlcD0yPC9zdHJpbmc+CiAgPGtleT51Yy1zdGVwLXR3by11cGxvYWQ8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zUHJvZ3Jlc3M/c3RhdGU9dXBsb2FkJmFtcDtzdGVwPTI8L3N0cmluZz4KICA8a2V5PnVjLXN0ZXAtdGhyZWU8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zUHJvZ3Jlc3M/c3RlcD0zPC9zdHJpbmc+CiAgPGtleT51Yy1zdWNjZXNzLXBhZ2U8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zSG93VG8/c3RhdGU9c3VjY2Vzczwvc3RyaW5nPgogIDxrZXk+dWMtaG93LXRvLXBhZ2U8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zSG93VG88L3N0cmluZz4KICA8a2V5Pmdlbml1cy1vcHQtb3V0PC9rZXk+PHN0cmluZz5odHRwczovL2dlbml1cy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvVUNHb3Zlcm5vci53b2Evd2Evb3B0T3V0TGlicmFyeTwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS11cGRhdGUtc2VydmVyLWRpc2FibGVkPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3VzZXJDb2xsZWN0aW9uc0Vycm9yP2Vycm9yPXNlcnZlckRpc2FibGVkPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1zZXJ2ZXItbm90LWFjY2VwdGluZy1zaWdudXBzPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3VzZXJDb2xsZWN0aW9uc0Vycm9yP2Vycm9yPXNlcnZlck5vdEFjY2VwdGluZ1NpZ251cHM8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLWdvdmVybm9yLWVycm9yPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3VzZXJDb2xsZWN0aW9uc1Byb2dyZXNzP3N0YXRlPWVycm9yJmFtcDtzdGVwPTI8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLXN0b3BwZWQ8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zUHJvZ3Jlc3M/c3RhdGU9c3RvcHBlZDwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS11cGRhdGUtc3RlcC1vbmU8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvdXNlckNvbGxlY3Rpb25zUHJvZ3Jlc3M/c3RlcD0xPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1zdGVwLXR3by1zZXJ2ZXItcHJvY2Vzc2luZzwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNQcm9ncmVzcz9zdGF0ZT1zZXJ2ZXJwcm9jZXNzaW5nJmFtcDtzdGVwPTI8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLXN0ZXAtdHdvLXVwbG9hZDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNQcm9ncmVzcz9zdGF0ZT11cGxvYWQmYW1wO3N0ZXA9Mjwvc3RyaW5nPgogIDxrZXk+bGlicmFyeS11cGRhdGUtc3RlcC10aHJlZTwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNQcm9ncmVzcz9zdGVwPTM8L3N0cmluZz4KICA8a2V5PmxpYnJhcnktdXBkYXRlLXN1Y2Nlc3MtcGFnZTwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNIb3dUbz9zdGF0ZT1zdWNjZXNzPC9zdHJpbmc+CiAgPGtleT5saWJyYXJ5LXVwZGF0ZS1ob3ctdG8tcGFnZTwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS91c2VyQ29sbGVjdGlvbnNIb3dUbzwvc3RyaW5nPgogIDxrZXk+c2lkZWJhci1mYWxsYmFjazwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9zaWRlYmFyRGVmYXVsdDwvc3RyaW5nPgogIDxrZXk+c2lkZWJhci10aW1lb3V0PC9rZXk+PGludGVnZXI+NTwvaW50ZWdlcj4KICA8a2V5PnNpZGViYXItd2VsY29tZTwva2V5PjxzdHJpbmc+aHR0cDovL2F4LnNpZGViYXIuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU2lkZWJhci53b2Evd2Evc2lkZWJhcldlbGNvbWU8L3N0cmluZz4KICA8a2V5PnNpZGViYXItbWF0Y2gtcnVsZXM8L2tleT4KICA8YXJyYXk+CiAgICA8ZGljdD4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9zaWRlYmFyTWF0Y2g8L3N0cmluZz4KICAgICAgPGtleT5vcHRpb25hbC1maWVsZHM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+cDwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+YTwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+a2luZDwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgICA8a2V5PnJlcXVpcmVkLWZpZWxkczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz5pZDwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgPC9kaWN0PgogICAgPGRpY3Q+CiAgICAgIDxrZXk+dXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmVTZXJ2aWNlcy53b2Evd2Evc2lkZWJhck1hdGNoPC9zdHJpbmc+CiAgICAgIDxrZXk+b3B0aW9uYWwtZmllbGRzPC9rZXk+CiAgICAgIDxhcnJheT4KICAgICAgICA8c3RyaW5nPmtpbmQ8L3N0cmluZz4KICAgICAgPC9hcnJheT4KICAgICAgPGtleT5yZXF1aXJlZC1maWVsZHM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+Y2RkYi10dWlkPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICA8L2RpY3Q+CiAgICA8ZGljdD4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9zaWRlYmFyTWF0Y2g8L3N0cmluZz4KICAgICAgPGtleT5vcHRpb25hbC1maWVsZHM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+dG51bTwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+a2luZDwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgICA8a2V5PnJlcXVpcmVkLWZpZWxkczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz5jZGRiPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICA8L2RpY3Q+CiAgICA8ZGljdD4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZVNlcnZpY2VzLndvYS93YS9zaWRlYmFyTWF0Y2g8L3N0cmluZz4KICAgICAgPGtleT5vcHRpb25hbC1maWVsZHM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+YW48L3N0cmluZz4KICAgICAgICA8c3RyaW5nPmduPC9zdHJpbmc+CiAgICAgICAgPHN0cmluZz5wbjwvc3RyaW5nPgogICAgICAgIDxzdHJpbmc+a2luZDwvc3RyaW5nPgogICAgICA8L2FycmF5PgogICAgICA8a2V5PnJlcXVpcmVkLWZpZWxkczwva2V5PgogICAgICA8YXJyYXk+CiAgICAgICAgPHN0cmluZz5uPC9zdHJpbmc+CiAgICAgIDwvYXJyYXk+CiAgICA8L2RpY3Q+CiAgICA8ZGljdD4KICAgICAgPGtleT5vcHRpb25hbC1maWVsZHM8L2tleT4KICAgICAgPGFycmF5PgogICAgICAgIDxzdHJpbmc+ZHA8L3N0cmluZz4KICAgICAgICA8c3RyaW5nPmtpbmQ8L3N0cmluZz4KICAgICAgPC9hcnJheT4KICAgICAgPGtleT51cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9heC5zaWRlYmFyLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlNpZGViYXIud29hL3dhL3NpZGViYXI8L3N0cmluZz4KICAgIDwvZGljdD4KICA8L2FycmF5PgogIDxrZXk+c2lkZWJhci1kaXN0aW5ndWlzaGVkLXBsYXlsaXN0czwva2V5PgogIDxkaWN0PgogICAgPGtleT4yPC9rZXk+CiAgICA8ZGljdD4KICAgIDwvZGljdD4KICAgIDxrZXk+Mzwva2V5PgogICAgPGRpY3Q+CiAgICA8L2RpY3Q+CiAgICA8a2V5PjQ8L2tleT4KICAgIDxkaWN0PgogICAgPC9kaWN0PgogICAgPGtleT4yNjwva2V5PgogICAgPGRpY3Q+CiAgICA8L2RpY3Q+CiAgICA8a2V5Pjc8L2tleT4KICAgIDxkaWN0PgogICAgPC9kaWN0PgogICAgPGtleT4xOTwva2V5PgogICAgPGRpY3Q+CiAgICA8L2RpY3Q+CiAgICA8a2V5PjIwPC9rZXk+CiAgICA8ZGljdD4KICAgIDwvZGljdD4KICA8L2RpY3Q+CiAgPGtleT5zaWRlYmFyLWZhbGxiYWNrMjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9zaWRlYmFyRGVmYXVsdDwvc3RyaW5nPgogIDxrZXk+c2lkZWJhci10aW1lb3V0Mjwva2V5PjxpbnRlZ2VyPjA8L2ludGVnZXI+CiAgPGtleT5zaWRlYmFyLWRpc3Rpbmd1aXNoZWQtcGxheWxpc3RzMjwva2V5PgogIDxkaWN0PgogICAgPGtleT4xOTwva2V5PgogICAgPGRpY3Q+CiAgICA8L2RpY3Q+CiAgICA8a2V5PjQ8L2tleT4KICAgIDxkaWN0PgogICAgPC9kaWN0PgogICAgPGtleT4yNjwva2V5PgogICAgPGRpY3Q+CiAgICA8L2RpY3Q+CiAgICA8a2V5PjIwPC9rZXk+CiAgICA8ZGljdD4KICAgIDwvZGljdD4KICA8L2RpY3Q+CiAgPGtleT5wb2RjYXN0LWdldC1lcGlzb2RlPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9tZXRyaWNzL3BvZGNhc3QvZ2V0RXBpc29kZTwvc3RyaW5nPgogIDxrZXk+cG9kY2FzdC1wbGF5LWVwaXNvZGU8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL21ldHJpY3MvcG9kY2FzdC9wbGF5RXBpc29kZTwvc3RyaW5nPgogIDxrZXk+ZG93bmxvYWQtc3BlZWR0ZXN0LXBvc3QtcmVzdWx0cy11cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL3VwbG9hZC9kaWFnL2F0di88L3N0cmluZz4KICA8a2V5PmRvd25sb2FkLXNwZWVkdGVzdC11cmxzPC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5odHRwOi8vYTU2OC5waG9ib3MuYXBwbGUuY29tL3VzL3IxMDAwLzAwMC9EaWFnL3Rlc3RfOE1CLm00dj9uby1zdG9yZT10cnVlPC9zdHJpbmc+CiAgICA8c3RyaW5nPmh0dHA6Ly9hNTY4LnBob2Jvcy5hcHBsZS5jb20vdXMvcjEwMDAvMDAwL0RpYWcvdGVzdF84TUIubTR2PC9zdHJpbmc+CiAgICA8c3RyaW5nPmh0dHA6Ly9hNTY4LnBob2Jvcy5hcHBsZS5jb20vdXMvcjEwMDAvMDAwL0RpYWcvdGVzdF84TUIubTR2PC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PmRvd25sb2FkLW1vdmllLXNwZWVkdGVzdC11cmxzPC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5odHRwOi8vYTEudi5waG9ib3MuYXBwbGUuY29tL3VzL3IxMDAwLzAwMC9EaWFnL1NURU1faGQubTR2P25vLXN0b3JlPXRydWU8L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cDovL2ExLnYucGhvYm9zLmFwcGxlLmNvbS91cy9yMTAwMC8wMDAvRGlhZy9TVEVNX2hkLm00djwvc3RyaW5nPgogICAgPHN0cmluZz5odHRwOi8vYTEudi5waG9ib3MuYXBwbGUuY29tL3VzL3IxMDAwLzAwMC9EaWFnL1NURU1faGQubTR2PC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PnRndDwva2V5PjxzdHJpbmc+MTwvc3RyaW5nPgogIDxrZXk+ZW5kLW9mLWJvb2stdXBzZWxsLWVuYWJsZWQ8L2tleT48c3RyaW5nPllFUzwvc3RyaW5nPgogIDxrZXk+ZW5kLW9mLXBpY3R1cmUtYm9vay11cHNlbGwtZW5hYmxlZDwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgPGtleT5ib29rLXVwc2VsbDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9ib29rVXBzZWxsPC9zdHJpbmc+CiAgPGtleT5ib29rLWxpYnJhcnktdGl0bGU8L2tleT48c3RyaW5nPkxpYnJhcnk8L3N0cmluZz4KICA8a2V5Pmlib29rczwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS92aWV3U29mdHdhcmU/aWQ9MzY0NzA5MTkzPC9zdHJpbmc+CiAgPGtleT5maW4tcG9zdHM8L2tleT48c3RyaW5nPjE8L3N0cmluZz4KICA8a2V5PnRpbWVCZXR3ZWVuSG9tZVNoYXJpbmdDb3B5QXBwcm92YWxzPC9rZXk+PGludGVnZXI+ODY0MDA8L2ludGVnZXI+CiAgPGtleT5wMi1wYW5kYS1hcHBSZWNvbW1lbmRhdGlvbnM8L2tleT48c3RyaW5nPmh0dHA6Ly9teWFwcC5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpBcHBQZXJzb25hbGl6ZXIud29hL3dhL2FwcFJlY29tbWVuZGF0aW9ucz9tdD04PC9zdHJpbmc+CiAgPGtleT5hZGtpdC1wcm9kdWN0LXVybDwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlLndvYS93YS9hZGtpdFByb2R1Y3Q8L3N0cmluZz4KICA8a2V5PmNyb3NzLW1lcmNoYW5kaXNpbmctdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmUud29hL3dhL3ZpZXdDcm9zc01lcmNoYW5kaXNpbmc8L3N0cmluZz4KICA8a2V5Pmdob3N0LXJpZGluZy10aGUtd2hpcDwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgPGtleT5uZXRmbGl4LXRvcC1zaGVsZjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vbmV0ZmxpeC1nZW5lcmljLXNoZWxmLnhtbDwvc3RyaW5nPgogIDxrZXk+Z2hvc3QtcmlkaW5nLXRoZS13aGlwMjwva2V5PjxzdHJpbmc+WUVTPC9zdHJpbmc+CiAgPGtleT5jb25uZWN0aW9ucy11cmwtcHJlZml4ZXM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPmh0dHA6Ly9jLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cHM6Ly9jLml0dW5lcy5hcHBsZS5jb208L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cDovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpVc2VyUHJvZmlsZS53b2E8L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aVXNlclByb2ZpbGUud29hPC9zdHJpbmc+CiAgICA8c3RyaW5nPmh0dHA6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2Evb3B0SW50b0Nvbm5lY3Rpb25zPC9zdHJpbmc+CiAgICA8c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL29wdEludG9Db25uZWN0aW9uczwvc3RyaW5nPgogICAgPHN0cmluZz5odHRwOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3Jlam9pbk9wdEludG9Db25uZWN0aW9uczwvc3RyaW5nPgogICAgPHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9yZWpvaW5PcHRJbnRvQ29ubmVjdGlvbnM8L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cDovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9zb2NpYWxPcHRPdXQ8L3N0cmluZz4KICAgIDxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2Evc29jaWFsT3B0T3V0PC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PmNvbm5lY3Rpb25zLW1haW48L2tleT48c3RyaW5nPmh0dHA6Ly9pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZS53b2Evd2EvY29ubmVjdGlvbnNIb21lP3M9MTQzNDQxPC9zdHJpbmc+CiAgPGtleT5wMi1zb2NpYWwtbGluazwva2V5PgogIDxkaWN0PgogICAgPGtleT5saWtlLXVybDwva2V5PjxzdHJpbmc+aHR0cHM6Ly91c2VycHViLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlVzZXJQdWJsaXNoaW5nLndvYS93YS9yYXRlP2NkPXQmYW1wO3I9LTImYW1wO3BsaXN0PXQ8L3N0cmluZz4KICAgIDxrZXk+cG9zdC11cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9jLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkNvbm5lY3Rpb25zLndvYS93YS92aWV3RHZQb3N0U2hlZXQ/cz0xNDM0NDE8L3N0cmluZz4KICAgIDxrZXk+aGlzdG9yeS11cmw8L2tleT48c3RyaW5nPmh0dHA6Ly9teS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpQZXJzb25hbGl6ZXIud29hL3dhL3NvY2lhbEhpc3Rvcnk/cz0xNDM0NDE8L3N0cmluZz4KICA8L2RpY3Q+CiAgPGtleT5waW5nLW1hdGNoPC9rZXk+PHN0cmluZz5odHRwOi8vYy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpDb25uZWN0aW9ucy53b2Evd2EvcGluZ01hdGNoP3M9MTQzNDQxPC9zdHJpbmc+CiAgPGtleT5waW5nLW1hdGNoLWZpZWxkcy1saXN0PC9rZXk+CiAgPGFycmF5PgogICAgPHN0cmluZz5pZCxhLHAsZyxjZGRiLXR1aWQsYW4sY24sZ24sa2luZCxuLHBuPC9zdHJpbmc+CiAgPC9hcnJheT4KICA8a2V5PnBpbmctYWN0aW9uPC9rZXk+PHN0cmluZz5odHRwOi8vYy5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpDb25uZWN0aW9ucy53b2Evd2EvcGluZ0FjdGlvbj9zPTE0MzQ0MTwvc3RyaW5nPgogIDxrZXk+ZGEtc29vbjwva2V5PjxzdHJpbmc+aHR0cDovL2l0dW5lcy5hcHBsZS5jb20vc3RhdGljL3BhZ2VzL2FwcF9zdG9yZV9jb21pbmdfc29vbi5odG1sPC9zdHJpbmc+CiAgPGtleT51c2VyeHAtdXJsPC9rZXk+PHN0cmluZz5odHRwczovL21ldHJpY3MubXpzdGF0aWMuY29tLzwvc3RyaW5nPgogIDxrZXk+dXNlcnhwLXB1bnQtcmF0aW88L2tleT48aW50ZWdlcj4xMDAwPC9pbnRlZ2VyPgogIDxrZXk+bW9iaWxlLXVybC1oYW5kbGVyczwva2V5PgogIDxhcnJheT4KICAgIDxzdHJpbmc+aHR0cDwvc3RyaW5nPgogICAgPHN0cmluZz5odHRwczwvc3RyaW5nPgogICAgPHN0cmluZz5pdG1zPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0bXNzPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0bXMtYXBwczwvc3RyaW5nPgogICAgPHN0cmluZz5pdG1zLWFwcHNzPC9zdHJpbmc+CiAgICA8c3RyaW5nPml0bXMtYm9va3M8L3N0cmluZz4KICAgIDxzdHJpbmc+aXRtcy1ib29rc3M8L3N0cmluZz4KICAgIDxzdHJpbmc+bWFpbHRvPC9zdHJpbmc+CiAgICA8c3RyaW5nPmxpdmVuYXRpb248L3N0cmluZz4KICAgIDxzdHJpbmc+cHJlZnM8L3N0cmluZz4KICA8L2FycmF5PgogIDxrZXk+ZHQtcHVyY2hhc2VzLXBhZ2U8L2tleT48c3RyaW5nPmh0dHBzOi8vc2UuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aU3RvcmVFbGVtZW50cy53b2Evd2EvcHVyY2hhc2VzP3M9MTQzNDQxPC9zdHJpbmc+CiAgPGtleT5taW50LW9mZmVyczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcHJlc2VudE9mZmVyczwvc3RyaW5nPgogIDxrZXk+cGVyc29uYWxpemVkLWJ1eS1idXR0b25zPC9rZXk+CiAgPGRpY3Q+CiAgICA8a2V5PmVCb29rPC9rZXk+PHN0cmluZz5odHRwczovL3NlLml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWlN0b3JlRWxlbWVudHMud29hL3dhL2J1eUJ1dHRvbk1ldGFEYXRhP3BsaXN0UGFnZT10cnVlJmFtcDtzPTE0MzQ0MTwvc3RyaW5nPgogICAgPGtleT5zb2Z0d2FyZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9zZS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpTdG9yZUVsZW1lbnRzLndvYS93YS9idXlCdXR0b25NZXRhRGF0YT9wbGlzdFBhZ2U9dHJ1ZSZhbXA7cz0xNDM0NDE8L3N0cmluZz4KICA8L2RpY3Q+CiAgPGtleT5hdXRoZW50aWNhdGVBY2NvdW50PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9hdXRoZW50aWNhdGU8L3N0cmluZz4KICA8a2V5PmlQaG9uZUFjdGl2YXRpb248L2tleT48c3RyaW5nPmh0dHBzOi8vYWxiZXJ0LmFwcGxlLmNvbS9XZWJPYmplY3RzL0FMVW5icmljay53b2Evd2EvZGV2aWNlQWN0aXZhdGlvbjwvc3RyaW5nPgogIDxrZXk+ZGV2aWNlLWFjdGl2YXRpb248L2tleT48c3RyaW5nPmh0dHBzOi8vYWxiZXJ0LmFwcGxlLmNvbS9XZWJPYmplY3RzL0FMVW5icmljay53b2Evd2EvZGV2aWNlQWN0aXZhdGlvbjwvc3RyaW5nPgogIDxrZXk+Y2hlY2tVbmJyaWNrSGVhbHRoPC9rZXk+PHN0cmluZz5odHRwczovL2FsYmVydC5hcHBsZS5jb20vV2ViT2JqZWN0cy9BTFVuYnJpY2sud29hL3dhL0FMQWN0aXZhdGlvbk1vbml0b3IvY2hlY2tVbmJyaWNrSGVhbHRoPC9zdHJpbmc+CiAgPGtleT5hdXRob3JpemVNYWNoaW5lPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9hdXRob3JpemVNYWNoaW5lPC9zdHJpbmc+CiAgPGtleT5idXlQcm9kdWN0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpCdXkud29hL3dhL2J1eVByb2R1Y3Q8L3N0cmluZz4KICA8a2V5PmJ1eUNhcnQ8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2J1eUNhcnQ8L3N0cmluZz4KICA8a2V5PmRlYXV0aG9yaXplTWFjaGluZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvZGVhdXRob3JpemVNYWNoaW5lPC9zdHJpbmc+CiAgPGtleT5tYWNoaW5lQXV0aG9yaXphdGlvbkluZm88L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL21hY2hpbmVBdXRob3JpemF0aW9uSW5mbzwvc3RyaW5nPgogIDxrZXk+bW9kaWZ5QWNjb3VudDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvYWNjb3VudFN1bW1hcnk8L3N0cmluZz4KICA8a2V5PnBlbmRpbmdTb25nczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcGVuZGluZ1NvbmdzPC9zdHJpbmc+CiAgPGtleT5zaWdudXA8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3NpZ251cFdpemFyZDwvc3RyaW5nPgogIDxrZXk+c29uZ0Rvd25sb2FkRG9uZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmFzdEZpbmFuY2Uud29hL3dhL3NvbmdEb3dubG9hZERvbmU8L3N0cmluZz4KICA8a2V5PmZvcmdvdHRlblBhc3N3b3JkPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9pRm9yZ290PC9zdHJpbmc+CiAgPGtleT5teUluZm88L2tleT48c3RyaW5nPmh0dHA6Ly9teWluZm8uY29ycC5hcHBsZS5jb20vPC9zdHJpbmc+CiAgPGtleT5ub0FPTEFjY291bnRzPC9rZXk+PGZhbHNlLz4KICA8a2V5Pm1pbnQtYWNjb3VudDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvYWNjb3VudFN1bW1hcnk8L3N0cmluZz4KICA8a2V5Pm1pbnQtYWNjb3VudC1mcmFnbWVudDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvYWNjb3VudFN1bW1hcnlGcmFnbWVudDwvc3RyaW5nPgogIDxrZXk+bG9nb3V0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9sb2dvdXQ8L3N0cmluZz4KICA8a2V5PmFkZFRvQ2FydDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvYWRkVG9DYXJ0PC9zdHJpbmc+CiAgPGtleT5yZW1vdmVGcm9tQ2FydDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcmVtb3ZlRnJvbUNhcnQ8L3N0cmluZz4KICA8a2V5PnNob3BwaW5nQ2FydDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2Evc2hvcHBpbmdDYXJ0PC9zdHJpbmc+CiAgPGtleT5iY1VSTHM8L2tleT4KICA8YXJyYXk+CiAgICA8c3RyaW5nPmh0dHA6Ly8uaXR1bmVzLmFwcGxlLmNvbTwvc3RyaW5nPgogICAgPHN0cmluZz5odHRwOi8vd3d3LmF0ZG10LmNvbTwvc3RyaW5nPgogIDwvYXJyYXk+CiAgPGtleT5yZXBvcnRQb2RjYXN0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9yZXBvcnRQb2RjYXN0PC9zdHJpbmc+CiAgPGtleT5jaGVjay1kb3dubG9hZC1xdWV1ZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvY2hlY2tEb3dubG9hZFF1ZXVlPC9zdHJpbmc+CiAgPGtleT5zZXQtYXV0by1kb3dubG9hZDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2Evc2V0QXV0b0Rvd25sb2FkPC9zdHJpbmc+CiAgPGtleT5uZXctaXBvZC11c2VyPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9pUG9kUmVnaXN0cmF0aW9uPC9zdHJpbmc+CiAgPGtleT5uZXctaXBvZC11c2VyLTI8L2tleT48c3RyaW5nPmh0dHBzOi8vc2VjdXJlLm1lLmNvbS9zaWdudXAvaXR1bmVzPC9zdHJpbmc+CiAgPGtleT5uZXctdHYtdXNlcjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvaVRWUmVnaXN0cmF0aW9uPC9zdHJpbmc+CiAgPGtleT5tZDUtbWlzbWF0Y2g8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL21kNU1pc21hdGNoPC9zdHJpbmc+CiAgPGtleT5yZXBvcnQtZXJyb3I8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3JlcG9ydEVycm9yRnJvbUNsaWVudDwvc3RyaW5nPgogIDxrZXk+dXBkYXRlQXNzZXQ8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3VwZGF0ZUFzc2V0PC9zdHJpbmc+CiAgPGtleT5jcmVhdGUtdG9rZW48L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NyZWF0ZVRva2VuPC9zdHJpbmc+CiAgPGtleT5jcmVhdGUtc2Vzc2lvbjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvY3JlYXRlU2Vzc2lvbjwvc3RyaW5nPgogIDxrZXk+ZGlnaXRhbC1jb3B5PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9kaWdpdGFsQ29weVdpemFyZDwvc3RyaW5nPgogIDxrZXk+cDItcmVkZW1wdGlvbjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcDJSZWRlZW1Db2RlPC9zdHJpbmc+CiAgPGtleT5wMi1oZWFkbGVzcy1yZWRlbXB0aW9uPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9wMkhlYWRsZXNzUmVkZWVtQ29kZTwvc3RyaW5nPgogIDxrZXk+cDItcmVkZWVtLXNlcnZpY2UtdGVybXMtdXJsPC9rZXk+PHN0cmluZz5odHRwOi8vd3d3LmFwcGxlLmNvbS9sZWdhbC9pdHVuZXMvd3cvPC9zdHJpbmc+CiAgPGtleT5wZW5kaW5nQXBwczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcGVuZGluZ0FwcHM8L3N0cmluZz4KICA8a2V5PmNoZWNrQXBwUXVldWU8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NoZWNrQXBwRG93bmxvYWRRdWV1ZTwvc3RyaW5nPgogIDxrZXk+bWFya2V0aW5nLWFjdGlvbjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2Evdmlld01hcmtldGluZ1BhZ2U8L3N0cmluZz4KICA8a2V5Pm1hcmtldGluZy1hY3Rpb24tMjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9zZWN1cmUubWUuY29tL2l0dW5lc3NpZ251cDwvc3RyaW5nPgogIDxrZXk+Z2lmdFBsYXlsaXN0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9naWZ0U29uZ3NXaXphcmQ8L3N0cmluZz4KICA8a2V5PmdpdmUtcGxheWxpc3Q8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2dpZnRTb25nc1dpemFyZDwvc3RyaW5nPgogIDxrZXk+bmV3VG91Y2hVc2VyPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS90b3VjaExhbmRpbmdQYWdlP2lzRGV2aWNlU2VsZWN0ZWQ9dHJ1ZTwvc3RyaW5nPgogIDxrZXk+cmVudGFsLWNoZWNraW48L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NoZWNraW5SZW50YWw8L3N0cmluZz4KICA8a2V5PnJlbnRhbC1hY2stY2hlY2tpbjwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvY2hlY2tpbkFja1JlbnRhbDwvc3RyaW5nPgogIDxrZXk+cmVudGFsLWNoZWNrb3V0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9jaGVja291dFJlbnRhbDwvc3RyaW5nPgogIDxrZXk+Z2V0LW5pa2l0YS1kcGluZm88L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2lQb2RUcmFuc2Zlcjwvc3RyaW5nPgogIDxrZXk+YXBwLXJlY2VpcHQtY3JlYXRlPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9jcmVhdGVBcHBSZWNlaXB0PC9zdHJpbmc+CiAgPGtleT5jcmVhdGUtcmluZ3RvbmU8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NyZWF0ZVJpbmd0b25lPC9zdHJpbmc+CiAgPGtleT5yaW5ndG9uZS1pbmZvPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9pc1Jpbmd0b25lYWJsZTwvc3RyaW5nPgogIDxrZXk+cDItY29uY2Vybi1saXN0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9wMkdldFJlcG9ydEFDb25jZXJuTGlzdDwvc3RyaW5nPgogIDxrZXk+cDItcmVwb3J0LWNvbmNlcm48L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3AyUmVwb3J0QVByb2JsZW08L3N0cmluZz4KICA8a2V5Pmdlbml1cy13ZWxjb21lPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS91c2VyQ29sbGVjdGlvbnNXZWxjb21lPC9zdHJpbmc+CiAgPGtleT5wMi1jaGVjay1wcmUtb3JkZXItcXVldWU8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2dldFByZW9yZGVyUXVldWVDb3VudDwvc3RyaW5nPgogIDxrZXk+cDItcHJlLW9yZGVyLXF1ZXVlPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9nZXRQcmVvcmRlclF1ZXVlPC9zdHJpbmc+CiAgPGtleT5wMi1vcmRlci1wcmUtb3JkZXI8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL29yZGVyUHJlb3JkZXI8L3N0cmluZz4KICA8a2V5PnAyLWNhbmNlbC1wcmUtb3JkZXI8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NhbmNlbFByZW9yZGVyPC9zdHJpbmc+CiAgPGtleT5wMi1wcm9kdWN0LW9mZmVyPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9vZmZlckF2YWlsYWJpbGl0eUFuZEluZm9EaWFsb2c8L3N0cmluZz4KICA8a2V5PnAyLWluLWFwcC1idXk8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkJ1eS53b2Evd2EvaW5BcHBCdXk8L3N0cmluZz4KICA8a2V5PnAyLWluLWFwcC1jaGVjay1kb3dubG9hZC1xdWV1ZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvaW5BcHBDaGVja0Rvd25sb2FkUXVldWU8L3N0cmluZz4KICA8a2V5PnAyLWluLWFwcC1wZW5kaW5nLXRyYW5zYWN0aW9uczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvaW5BcHBQZW5kaW5nVHJhbnNhY3Rpb25zPC9zdHJpbmc+CiAgPGtleT5wMi1pbi1hcHAtY2hlY2stcmVjdXJyaW5nLWRvd25sb2FkLXF1ZXVlPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9pbkFwcENoZWNrUmVjdXJyaW5nRG93bmxvYWRRdWV1ZTwvc3RyaW5nPgogIDxrZXk+cDItaW4tYXBwLXJlY3VycmluZy10cmFuc2FjdGlvbnM8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2luQXBwUmVjdXJyaW5nVHJhbnNhY3Rpb25zPC9zdHJpbmc+CiAgPGtleT5wMi1pbi1hcHAtdHJhbnNhY3Rpb24tZG9uZTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvaW5BcHBUcmFuc2FjdGlvbkRvbmU8L3N0cmluZz4KICA8a2V5PnAyLWluLWFwcC1yZWdyYW50LXB1cmNoYXNlLWhpc3Rvcnk8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2luQXBwUmVncmFudFB1cmNoYXNlSGlzdG9yeTwvc3RyaW5nPgogIDxrZXk+Z2V0U2hhcmVJZGVudGlmaWVyczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aSG9tZVNoYXJpbmcud29hL3dhL2dldFNoYXJlSWRlbnRpZmllcnM8L3N0cmluZz4KICA8a2V5PmFwcHJvdmVDb250ZW50VHJhbnNmZXI8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkhvbWVTaGFyaW5nLndvYS93YS9hcHByb3ZlQ29udGVudFRyYW5zZmVyPC9zdHJpbmc+CiAgPGtleT5wZW5kaW5nQm9va3M8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3BlbmRpbmdCb29rczwvc3RyaW5nPgogIDxrZXk+Y2hlY2tCb29rUXVldWU8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2NoZWNrRUJvb2tEb3dubG9hZFF1ZXVlPC9zdHJpbmc+CiAgPGtleT5rdnMtZ2V0PC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpCb29ra2VlcGVyLndvYS93YS9nZXQ8L3N0cmluZz4KICA8a2V5Pmt2cy1nZXRhbGw8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkJvb2trZWVwZXIud29hL3dhL2dldEFsbDwvc3RyaW5nPgogIDxrZXk+a3ZzLXB1dDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aQm9va2tlZXBlci53b2Evd2EvcHV0PC9zdHJpbmc+CiAgPGtleT5rdnMtcHV0YWxsPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpCb29ra2VlcGVyLndvYS93YS9wdXRBbGw8L3N0cmluZz4KICA8a2V5PmdldC1wbGF5LWluZm88L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2dldFBsYXlJbmZvPC9zdHJpbmc+CiAgPGtleT5wdXNoLW5vdGlmaWNhdGlvbnM8L2tleT4KICA8ZGljdD4KICAgIDxrZXk+cmVnaXN0ZXItc3VjY2Vzczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcmVnaXN0ZXJTdWNjZXNzPC9zdHJpbmc+CiAgICA8a2V5PmVudmlyb25tZW50PC9rZXk+PHN0cmluZz5wcm9kdWN0aW9uPC9zdHJpbmc+CiAgPC9kaWN0PgogIDxrZXk+YXV0b21hdGljLWRvd25sb2FkczI8L2tleT4KICA8ZGljdD4KICAgIDxrZXk+ZG93bmxvYWRzLXVybDwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvZ2V0QXV0b0Rvd25sb2FkUXVldWU8L3N0cmluZz4KICAgIDxrZXk+cmVnaXN0ZXItbWVkaWEtdHlwZXM8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL3JlZ2lzdGVyTWVkaWFUeXBlczwvc3RyaW5nPgogICAgPGtleT5jb25maWd1cmF0aW9uczwva2V5PgogICAgPGFycmF5PgogICAgICA8ZGljdD4KICAgICAgICA8a2V5Pm1lZGlhLXR5cGVzPC9rZXk+CiAgICAgICAgPGFycmF5PgogICAgICAgICAgPHN0cmluZz5zb25nPC9zdHJpbmc+CiAgICAgICAgICA8c3RyaW5nPm11c2ljLXZpZGVvPC9zdHJpbmc+CiAgICAgICAgPC9hcnJheT4KICAgICAgICA8a2V5PmNhbm9uaWNhbC1uYW1lPC9rZXk+PHN0cmluZz5BVVRPX0RPV05MT0FEX01VU0lDPC9zdHJpbmc+CiAgICAgIDwvZGljdD4KICAgICAgPGRpY3Q+CiAgICAgICAgPGtleT5tZWRpYS10eXBlczwva2V5PgogICAgICAgIDxhcnJheT4KICAgICAgICAgIDxzdHJpbmc+c29mdHdhcmU8L3N0cmluZz4KICAgICAgICA8L2FycmF5PgogICAgICAgIDxrZXk+Y2Fub25pY2FsLW5hbWU8L2tleT48c3RyaW5nPkFVVE9fRE9XTkxPQURfQVBQUzwvc3RyaW5nPgogICAgICA8L2RpY3Q+CiAgICAgIDxkaWN0PgogICAgICAgIDxrZXk+bWVkaWEtdHlwZXM8L2tleT4KICAgICAgICA8YXJyYXk+CiAgICAgICAgICA8c3RyaW5nPmVib29rPC9zdHJpbmc+CiAgICAgICAgPC9hcnJheT4KICAgICAgICA8a2V5PmNhbm9uaWNhbC1uYW1lPC9rZXk+PHN0cmluZz5BVVRPX0RPV05MT0FEX0JPT0tTPC9zdHJpbmc+CiAgICAgIDwvZGljdD4KICAgIDwvYXJyYXk+CiAgPC9kaWN0PgogIDxrZXk+ZW5hYmxlZC1tZWRpYS10eXBlczwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvZW5hYmxlZE1lZGlhVHlwZXM8L3N0cmluZz4KICA8a2V5PnAyLWNvbnRlbnQtcmVzdG9yZTwva2V5PgogIDxkaWN0PgogICAgPGtleT5nemlwPC9rZXk+PGZhbHNlLz4KICAgIDxrZXk+bWF4LWl0ZW0tY291bnQ8L2tleT48aW50ZWdlcj41MDwvaW50ZWdlcj4KICAgIDxrZXk+dXJsPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9jb250ZW50UmVzdG9yZTwvc3RyaW5nPgogICAgPGtleT5hbGxvd2VkLWtpbmRzPC9rZXk+CiAgICA8YXJyYXk+CiAgICAgIDxzdHJpbmc+c29uZzwvc3RyaW5nPgogICAgICA8c3RyaW5nPm11c2ljLXZpZGVvPC9zdHJpbmc+CiAgICAgIDxzdHJpbmc+c29mdHdhcmU8L3N0cmluZz4KICAgICAgPHN0cmluZz5lYm9vazwvc3RyaW5nPgogICAgPC9hcnJheT4KICA8L2RpY3Q+CiAgPGtleT5wcmVmbGlnaHQtbG9va3VwPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9nZXRQcmVmbGlnaHQ8L3N0cmluZz4KICA8a2V5PmJ1bmRsZS1vd25zLWNoZWNrPC9rZXk+PHN0cmluZz5odHRwczovL2J1eS5pdHVuZXMuYXBwbGUuY29tL1dlYk9iamVjdHMvTVpGaW5hbmNlLndvYS93YS9vd25zQ2hlY2s8L3N0cmluZz4KICA8a2V5PnJlY292ZXJ5LWJ1eTwva2V5PjxzdHJpbmc+aHR0cHM6Ly9idXkuaXR1bmVzLmFwcGxlLmNvbS9XZWJPYmplY3RzL01aRmluYW5jZS53b2Evd2EvcmVjb3ZlcnlCdXk8L3N0cmluZz4KICA8a2V5PmFkb3B0LXByb2R1Y3Q8L2tleT48c3RyaW5nPmh0dHBzOi8vYnV5Lml0dW5lcy5hcHBsZS5jb20vV2ViT2JqZWN0cy9NWkZpbmFuY2Uud29hL3dhL2Fkb3B0UHJvZHVjdDwvc3RyaW5nPgo8L2RpY3Q+CjwvcGxpc3Q+Cg==</data>"
106"</dict>"
107"</plist>"
108;
109
110/* Test basic add delete update copy matching stuff. */
111static void tests(void)
112{
113    SecTrustRef trust;
114    SecCertificateRef leaf, root;
115    SecPolicyRef policy;
116    CFDataRef urlBagData;
117	CFDictionaryRef urlBagDict;
118
119    isnt(urlBagData = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, url_bag, sizeof(url_bag), kCFAllocatorNull), NULL,
120		"load url bag");
121    isnt(urlBagDict = CFPropertyListCreateWithData(kCFAllocatorDefault, urlBagData, kCFPropertyListImmutable, NULL, NULL), NULL,
122		"parse url bag");
123	CFReleaseSafe(urlBagData);
124    CFArrayRef certs_data = CFDictionaryGetValue(urlBagDict, CFSTR("certs"));
125    CFDataRef cert_data = CFArrayGetValueAtIndex(certs_data, 0);
126    isnt(leaf = SecCertificateCreateWithData(kCFAllocatorDefault, cert_data), NULL, "create leaf");
127    isnt(root = SecCertificateCreateWithBytes(kCFAllocatorDefault, sITunesStoreRootCertificate, sizeof(sITunesStoreRootCertificate)), NULL, "create root");
128
129    CFArrayRef certs = CFArrayCreate(kCFAllocatorDefault, (const void **)&leaf, 1, NULL);
130    CFArrayRef anchors = CFArrayCreate(kCFAllocatorDefault, (const void **)&root, 1, NULL);
131    CFDataRef signature = CFDictionaryGetValue(urlBagDict, CFSTR("signature"));
132	CFDataRef bag = CFDictionaryGetValue(urlBagDict, CFSTR("bag"));
133    unsigned char sha1_hash[CC_SHA1_DIGEST_LENGTH];
134    CCDigest(kCCDigestSHA1, CFDataGetBytePtr(bag), CFDataGetLength(bag), sha1_hash);
135
136    isnt(policy = SecPolicyCreateiTunesStoreURLBag(), NULL, "create policy instance");
137
138    ok_status(SecTrustCreateWithCertificates(certs, policy, &trust), "create trust for leaf");
139    ok_status(SecTrustSetAnchorCertificates(trust, anchors), "set iTMS anchor for evaluation");
140
141    /* it'll have just expired */
142    CFTimeZoneRef tz = CFTimeZoneCreateWithName(NULL, CFSTR("GMT"), true);
143    CFGregorianDate date_check = { 2008, 11, 7, 22, 0, 0 };
144    CFAbsoluteTime atime = CFGregorianDateGetAbsoluteTime(date_check, tz);
145    CFRelease(tz);
146    CFDateRef date = CFDateCreate(NULL, atime);
147    ok_status(SecTrustSetVerifyDate(trust, date), "set date");
148    CFReleaseSafe(date);
149
150    SecTrustResultType trustResult;
151    ok_status(SecTrustEvaluate(trust, &trustResult), "evaluate trust");
152    is_status(trustResult, kSecTrustResultUnspecified,
153		"trust is kSecTrustResultUnspecified");
154    is(SecTrustGetCertificateCount(trust), 2, "cert count is 2");
155	SecKeyRef pub_key_leaf;
156	isnt(pub_key_leaf = SecTrustCopyPublicKey(trust), NULL, "get leaf pub key");
157	ok_status(SecKeyRawVerify(pub_key_leaf, kSecPaddingPKCS1SHA1, sha1_hash, sizeof(sha1_hash), CFDataGetBytePtr(signature), CFDataGetLength(signature)),
158		"verify signature on bag");
159
160    CFReleaseSafe(pub_key_leaf);
161	CFReleaseSafe(urlBagDict);
162    CFReleaseSafe(certs);
163    CFReleaseSafe(anchors);
164    CFReleaseSafe(trust);
165    CFReleaseSafe(policy);
166    CFReleaseSafe(leaf);
167    CFReleaseSafe(root);
168}
169
170int si_24_sectrust_itms(int argc, char *const *argv)
171{
172    plan_tests(13);
173
174
175    tests();
176#ifdef NO_SERVER
177# if NDEBUG
178# else
179# endif
180#else
181#endif
182
183    return 0;
184}
185