fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ck1PVE9ST0xBIE1JQ1JPUFJPQ0VTU09SICYgTUVNT1JZIFRFQ0hOT0xPR1kgR1JPVVAKTTY4MDAwIEhpLVBlcmZvcm1hbmNlIE1pY3JvcHJvY2Vzc29yIERpdmlzaW9uCk02ODA2MCBTb2Z0d2FyZSBQYWNrYWdlClByb2R1Y3Rpb24gUmVsZWFzZSBQMS4wMCAtLSBPY3RvYmVyIDEwLCAxOTk0CgpNNjgwNjAgU29mdHdhcmUgUGFja2FnZSBDb3B5cmlnaHQgqSAxOTkzLCAxOTk0IE1vdG9yb2xhIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgpUSEUgU09GVFdBUkUgaXMgcHJvdmlkZWQgb24gYW4gIkFTIElTIiBiYXNpcyBhbmQgd2l0aG91dCB3YXJyYW50eS4KVG8gdGhlIG1heGltdW0gZXh0ZW50IHBlcm1pdHRlZCBieSBhcHBsaWNhYmxlIGxhdywKTU9UT1JPTEEgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdIRVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELApJTkNMVURJTkcgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQphbmQgYW55IHdhcnJhbnR5IGFnYWluc3QgaW5mcmluZ2VtZW50IHdpdGggcmVnYXJkIHRvIHRoZSBTT0ZUV0FSRQooSU5DTFVESU5HIEFOWSBNT0RJRklFRCBWRVJTSU9OUyBUSEVSRU9GKSBhbmQgYW55IGFjY29tcGFueWluZyB3cml0dGVuIG1hdGVyaWFscy4KClRvIHRoZSBtYXhpbXVtIGV4dGVudCBwZXJtaXR0ZWQgYnkgYXBwbGljYWJsZSBsYXcsCklOIE5PIEVWRU5UIFNIQUxMIE1PVE9ST0xBIEJFIExJQUJMRSBGT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUgooSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TUyBPRiBCVVNJTkVTUyBQUk9GSVRTLApCVVNJTkVTUyBJTlRFUlJVUFRJT04sIExPU1MgT0YgQlVTSU5FU1MgSU5GT1JNQVRJT04sIE9SIE9USEVSIFBFQ1VOSUFSWSBMT1NTKQpBUklTSU5HIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgU09GVFdBUkUuCk1vdG9yb2xhIGFzc3VtZXMgbm8gcmVzcG9uc2liaWxpdHkgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQgc3VwcG9ydCBvZiB0aGUgU09GVFdBUkUuCgpZb3UgYXJlIGhlcmVieSBncmFudGVkIGEgY29weXJpZ2h0IGxpY2Vuc2UgdG8gdXNlLCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoZSBTT0ZUV0FSRQpzbyBsb25nIGFzIHRoaXMgZW50aXJlIG5vdGljZSBpcyByZXRhaW5lZCB3aXRob3V0IGFsdGVyYXRpb24gaW4gYW55IG1vZGlmaWVkIGFuZC9vcgpyZWRpc3RyaWJ1dGVkIHZlcnNpb25zLCBhbmQgdGhhdCBzdWNoIG1vZGlmaWVkIHZlcnNpb25zIGFyZSBjbGVhcmx5IGlkZW50aWZpZWQgYXMgc3VjaC4KTm8gbGljZW5zZXMgYXJlIGdyYW50ZWQgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZSB1bmRlciBhbnkgcGF0ZW50cwpvciB0cmFkZW1hcmtzIG9mIE1vdG9yb2xhLCBJbmMuCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKQ0hBTkdFUyBTSU5DRSBMQVNUIFJFTEVBU0U6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKMSkgIm1vdmVwIiBlbXVsYXRpb24gd2hlcmUgZGF0YSB3YXMgYmVpbmcgcmVhZCBmcm9tIG1lbW9yeQp3YXMgcmVhZGluZyB0aGUgaW50ZXJtZWRpYXRlIGJ5dGVzLiBFbXVsYXRpb24gbm93IG9ubHkKcmVhZHMgdGhlIHJlcXVpcmVkIGJ5dGVzLgoKMikgImZsb2duIiwgImZsb2cyIiwgYW5kICJmbG9nMTAiIG9mICIxIiB3YXMgc2V0dGluZyB0aGUKSW5leGFjdCBGUFNSIGJpdC4gRW11bGF0aW9uIG5vdyBkb2VzIG5vdCBzZXQgSW5leGFjdCBmb3IKdGhpcyBjYXNlLgoKMykgRm9yIGFuIG9wY2xhc3MgdGhyZWUgRlAgaW5zdHJ1Y3Rpb24gd2hlcmUgdGhlIGVmZmVjdGl2ZSBhZGRyZXNzaW5nCm1vZGUgd2FzIHByZS1kZWNyZW1lbnQgb3IgcG9zdC1pbmNyZW1lbnQgYW5kIHRoZSBhZGRyZXNzIHJlZ2lzdGVyCndhcyBBMCBvciBBMSwgdGhlIGFkZHJlc3MgcmVnaXN0ZXIgd2FzIG5vdCBiZWluZyB1cGRhdGVkIGFzIGEgcmVzdWx0Cm9mIHRoZSBvcGVyYXRpb24uIFRoaXMgaGFzIGJlZW4gY29ycmVjdGVkLgoKNCkgQmV0YSBCLjIgdmVyc2lvbiBoYWQgdGhlIGZvbGxvd2luZyBlcnJhdHVtOgoKCVNjZW5hcmlvOgoJLS0tLS0tLS0tCglJZiB7aSxkfW1lbV97cmVhZCx3cml0ZX1fe2J5dGUsd29yZCxsb25nfSgpIHJldHVybnMKCWEgZmFpbGluZyB2YWx1ZSB0byB0aGUgNjgwNjBTUCwgdGhlIHBhY2thZ2UgaWdub3JlcwoJdGhpcyByZXR1cm4gdmFsdWUgYW5kIGNvbnRpbnVlcyB3aXRoIHByb2dyYW0gZXhlY3V0aW9uCglhcyBpZiBpdCBuZXZlciByZWNlaXZlZCBhIGZhaWxpbmcgdmFsdWUuCgoJRWZmZWN0OgoJLS0tLS0tLQoJRm9yIGV4YW1wbGUsIGlmIGEgdXNlciBleGVjdXRlZCAiZnNpbi54IEFERFIsZnAwIiB3aGVyZQoJQUREUiBzaG91bGQgY2F1c2UgYSAic2VnbWVudGF0aW9uIHZpb2xhdGlvbiIsIHRoZSBtZW1vcnkgcmVhZAoJcmVxdWVzdGVkIGJ5IHRoZSBwYWNrYWdlIHNob3VsZCByZXR1cm4gYSBmYWlsaW5nIHZhbHVlCgl0byB0aGUgcGFja2FnZS4gU2luY2UgdGhlIHBhY2thZ2UgY3VycmVudGx5IGlnbm9yZXMgdGhpcwoJcmV0dXJuIHZhbHVlLCB0aGUgdXNlciBwcm9ncmFtIHdpbGwgY29udGludWUgdG8gdGhlCgluZXh0IGluc3RydWN0aW9uLCBhbmQgdGhlIHJlc3VsdCBjcmVhdGVkIGluIGZwMCB3aWxsIGJlCgl1bmRlZmluZWQuCgoJRml4OgoJLS0tLQoJVGhpcyBoYXMgYmVlbiBmaXhlZCBpbiB0aGUgY3VycmVudCByZWxlYXNlLgoKCU5vdGVzOgoJLS0tLS0tCglVcG9uIHJlY2VpdmluZyBhIG5vbi16ZXJvIChmYWlsaW5nKSByZXR1cm4gdmFsdWUgZnJvbQoJYSB7aSxkfW1lbV97cmVhZCx3cml0ZX1fe2J5dGUsd29yZCxsb25nfSgpICJjYWxsLW91dCIsCgl0aGUgcGFja2FnZSBjcmVhdGVzIGEgMTYtYnl0ZSBhY2Nlc3MgZXJyb3Igc3RhY2sgZnJhbWUKCWZyb20gdGhlIGN1cnJlbnQgZXhjZXB0aW9uIHN0YWNrIGZyYW1lIGFuZCBleGl0cwoJdGhyb3VnaCB0aGUgImNhbGwtb3V0IiBfcmVhbF9hY2Nlc3MoKS4gVGhpcyBpcyB0aGUgcHJvY2VzcwoJYXMgZGVzY3JpYmVkIGluIHRoZSBNQzY4MDYwIFVzZXIncyBNYW51YWwuCgoJRm9yIGluc3RydWN0aW9uIHJlYWQgYWNjZXNzIGVycm9ycywgdGhlIGluZm8gc3RhY2tlZCBpczoKCQlTUgk9IFNSIGF0IHRpbWUgb2YgZXhjZXB0aW9uCgkJUEMJPSBQQyBvZiBpbnN0cnVjdGlvbiBiZWluZyBlbXVsYXRlZAoJCVZPRkYJPSAkNDAwOCAoc3RhY2sgZnJhbWUgZm9ybWF0IHR5cGUpCgkJQUREUkVTUwk9IFBDIG9mIGluc3RydWN0aW9uIGJlaW5nIGVtdWxhdGVkCgkJRlNMVwk9IEZBVUxUIFNUQVRVUyBMT05HV09SRAoKCVRoZSB2YWxpZCBGU0xXIGJpdHMgYXJlOgoJCWJpdCAyNwkJPSAxCShtaXNhbGlnbmVkIGJpdCkKCQliaXQgMjQJCT0gMQkocmVhZCkKCQliaXQgMjMJCT0gMAkod3JpdGUpCgkJYml0IDIyOjIxCT0gMTAJKFNJWkUgPSB3b3JkKQoJCWJpdCAyMDoxOQk9IDAwCShUVCkKCQliaXQgMTg6MTYJPSB4MTAJKFRNOyB4ID0gMSBmb3Igc3VwZXJ2aXNvciBtb2RlKQoJCWJpdCAxNQkJPSAxCShJTykKCQliaXQgMAkJPSAxCShTb2Z0d2FyZSBFbXVsYXRpb24gRXJyb3IpCgoJYWxsIG90aGVyIGJpdHMgYXJlIEVRVUFMIFRPIFpFUk8gYW5kIGNhbiBiZSBzZXQgYnkgdGhlIF9yZWFsX2FjY2VzcygpCgkiY2FsbC1vdXQiIHN0dWIgYnkgdGhlIHVzZXIgYXMgYXBwcm9wcmlhdGUuIFRoZSBNQzY4MDYwIFVzZXIncyBNYW51YWwKCXN0YXRlZCB0aGF0IE9OTFkgImJpdCAwIiB3b3VsZCBiZSBzZXQuIFRoZSAwNjBTUCBhdHRlbXB0cyB0byBzZXQgYSBmZXcKCW90aGVyIGJpdHMuCgoJRm9yIGRhdGEgcmVhZC93cml0ZSBhY2Nlc3MgZXJyb3JzLCB0aGUgaW5mbyBzdGFja2VkIGlzOgoJCVNSCT0gU1IgYXQgdGltZSBvZiBleGNlcHRpb24KCQlQQwk9IFBDIG9mIGluc3RydWN0aW9uIGJlaW5nIGVtdWxhdGVkCgkJVk9GRgk9ICQ0MDA4IChzdGFjayBmcmFtZSBmb3JtYXQgdHlwZSkKCQlBRERSRVNTCT0gQWRkcmVzcyBvZiBzb3VyY2Ugb3IgZGVzdGluYXRpb24gb3BlcmFuZAoJCUZTTFcJPSBGQVVMVCBTVEFUVVMgTE9OR1dPUkQKCglUaGUgdmFsaWQgRlNMVyBiaXRzIGFyZToKCQliaXQgMjcJCT0gMAkobWlzYWxpZ25lZCBiaXQpCgkJYml0IDI0CQk9IHgJKHJlYWQ7IDEgaWYgcmVhZCwgMCBpZiB3cml0ZSkKCQliaXQgMjMJCT0geAkod3JpdGU7IDEgaWYgd3JpdGUsIDAgaWYgcmVhZCkKCQliaXQgMjI6MjEJPSB4eAkoU0laRTsgc2VlIE1DNjgwNjAgVXNlcidzIE1hbnVhbCkKCQliaXQgMjA6MTkJPSAwMAkoVFQpCgkJYml0IDE4OjE2CT0geDAxCShUTTsgeCA9IDEgZm9yIHN1cGVydmlzb3IgbW9kZSkKCQliaXQgMTUJCT0gMAkoSU8pCgkJYml0IDAJCT0gMQkoU29mdHdhcmUgRW11bGF0aW9uIEVycm9yKQoKCWFsbCBvdGhlciBiaXRzIGFyZSBFUVVBTCBUTyBaRVJPIGFuZCBjYW4gYmUgc2V0IGJ5IHRoZSBfcmVhbF9hY2Nlc3MoKQoJImNhbGwtb3V0IiBzdHViIGJ5IHRoZSB1c2VyIGFzIGFwcHJvcHJpYXRlLiBUaGUgTUM2ODA2MCBVc2VyJ3MgTWFudWFsCglzdGF0ZWQgdGhhdCBPTkxZICJiaXQgMCIgd291bGQgYmUgc2V0LiBUaGUgMDYwU1AgYXR0ZW1wdHMgdG8gc2V0IGEgZmV3CglvdGhlciBiaXRzLgo=