SW50ZWwoUikgUGxhdGZvcm0gSW5ub3ZhdGlvbiBGcmFtZXdvcmsgZm9yIEVGSQ0KRUZJIERldmVsb3BtZW50IEtpdCBJSSAoRURLIElJKSANClJvb3QgUGFja2FnZSAxLjAwDQoyMDA2LTA3LTE4DQoNCkludGVsIGlzIGEgdHJhZGVtYXJrIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIEludGVsIENvcnBvcmF0aW9uIG9yIGl0cyANCnN1YnNpZGlhcmllcyBpbiB0aGUgVW5pdGVkIFN0YXRlcyBhbmQgb3RoZXIgY291bnRyaWVzLg0KKiBPdGhlciBuYW1lcyBhbmQgYnJhbmRzIG1heSBiZSBjbGFpbWVkIGFzIHRoZSBwcm9wZXJ0eSBvZiBvdGhlcnMuDQpDb3B5cmlnaHQgKGMpIDIwMDYsIEludGVsIENvcnBvcmF0aW9uDQoNClRoaXMgZG9jdW1lbnQgcHJvdmlkZXMgdXBkYXRlcyB0byBkb2N1bWVudGF0aW9uLCBhbG9uZyB3aXRoIGEgZGVzY3JpcHRpb24gb24gDQpob3cgdG8gaW5zdGFsbCBhbmQgYnVpbGQgdGhlIEVESyBJSS4NCg0KUGFja2FnZSBDb250ZW50cw0KLS0tLS0tLS0tLS0tLS0tLQ0KICBSZWxlYXNlTm90ZS50eHQtIFRoZXNlIHJlbGVhc2Ugbm90ZXMgZm9yIHRoZSBwYWNrYWdlLg0KICBNZGVQa2cgICAgICAgICAtIEluZHVzdHJ5LXN0YW5kYXJkIGhlYWRlcnMgYW5kIGxpYnJhcmllcw0KICBUb29scyAgICAgICAgICAtIEJ1aWxkIC1zcGVjaWZpYyB0b29scyB0aGF0IGFyZSBkZXNpZ25lZCB0byBoZWxwIHRoZSANCiAgICAgICAgICAgICAgICAgICBkZXZlbG9wZXIgY3JlYXRlIGFuZCBtb2RpZnkgZHJpdmVycyBhbmQgbGlicmFyaWVzDQogIEVka01vZHVsZVBrZyAgIC0gUmVmZXJlbmNlIGRyaXZlcnMNCiAgRWRrRmF0QmluUGtnICAgLSBCaW5hcnkgRFhFIGRyaXZlcnMgZm9yIHRoZSBGYXQgMzIgZmlsZSBzeXN0ZW0NCiAgRWRrU2hlbGxCaW5Qa2cgLSBCaW5hcnkgU2hlbGwgYXBwbGljYXRpb25zIGFuZCBjb21tYW5kcw0KICBFZGtOdDMyUGtnICAgICAtIE5UMzIgRW11bGF0aW9uIHBsYXRmb3JtIHJlZmVyZW5jZQ0KDQpOb3RlOiBNREUgYW5kIE1ESyB0aGF0IGFwcGVhciBpbiBvdGhlciBkb2N1bWVudGF0aW9uIHJlZmVyIHRvIHRoZSBNZGVQa2cgYW5kDQpUb29scyBwYWNrYWdlcywgcmVzcGVjdGl2ZWx5LiAgV2hpbGUsIHRoZXNlIHR3byBwYWNrYWdlcyBhcmUgdGhlIG1pbmltdW0gDQpyZXF1aXJlbWVudCBmb3IgZGV2ZWxvcGluZyBFREsgSUkgUGFja2FnZXN3ZSByZWNvbW1lbmQgdGhhdCB5b3UgZG93bmxvYWQgYWxsIA0Kb2YgdGhlIHRvcC1sZXZlbCBmaWxlcyBsaXN0ZWQgYWJvdmUuDQoNClRoZSBmb2xsb3dpbmcgcGFja2FnZSBpcyBhdmFpbGFibGUgYXMgYSBzZXBhcmF0ZSBwcm9qZWN0LCB1bmRlciBhIHNlcGFyYXRlIA0KbGljZW5zZSwgb24gdGhlIFRpYW5vQ29yZS5vcmcgd2Vic2l0ZTogaHR0cHM6Ly9mYXQtZHJpdmVyMi50aWFub2NvcmUub3JnDQoNCiAgRWRrRmF0UGtnICAgICAgLSBBIHBhY2thZ2UgY29udGFpbmluZyBzb3VyY2UgRFhFIGRyaXZlcnMgZm9yIHRoZSBGYXQgMzIgZmlsZQ0KICAgICAgICAgICAgICAgICAgIHN5c3RlbQ0KDQpEb2N1bWVudHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZpbGVuYW1lcyAodG8gZG93bmxvYWQgdGhlc2UgZG9jdW1lbnRzLCBzZWUgk05vdGVzIA0Kb24gRG9jdW1lbnRhdGlvbpQgbGF0ZXIgaW4gdGhlc2UgUmVsZWFzZSBOb3Rlcyk6DQogIEVESyBJSSBNb2R1bGUgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgTGlicmFyeSBTcGVjaWZpY2F0aW9uLCB2MC41OCANCiAgICAgIChNREVfTGlicmFyeV9TcGVjXzBfNTgucnRmKQ0KICBFREsgSUkgQnVpbGQgYW5kIFBhY2thZ2luZyBBcmNoaXRlY3R1cmUgU3BlY2lmaWNhdGlvbiwgdjAuNTMNCiAgICAgIChCdWlsZF9QYWNrYWdpbmdfU3BlY18wXzUzLnJ0ZikNCiAgRURLIElJIFBsYXRmb3JtIENvbmZpZ3VyYXRpb24gRGF0YWJhc2UgSW5mcmFzdHJ1Y3R1cmUgRGVzY3JpcHRpb24sIHYwLjU0DQogICAgICAoUENEX0luZnJhc3RydWN0dXJlXzBfNTQucnRmKQ0KICBFREsgSUkgTW9kdWxlIFN1cmZhY2UgQXJlYSBTcGVjaWZpY2F0aW9uLCB2MC41MQ0KICAgICAgKE1vZHVsZV9TdXJmYWNlX0FyZWFfMF81MC5ydGYpDQogIEVESyBJSSBNb2R1bGUgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgUGFja2FnZSBTcGVjaWZpY2F0aW9uLCB2MC41MQ0KICAgICAgKE1ERV9QYWNrYWdlX1NwZWNfMF81MS5ydGYpDQogIEVESyBJSSBDIENvZGluZyBTdGFuZGFyZHMgU3BlY2lmaWNhdGlvbiB2MC41MQ0KICAgICAgKENfQ29kaW5nX1N0YW5kYXJkc19TcGVjaWZpY2F0aW9uXyAwXzUxLnJ0ZikNCiAgRURLIElJIFN1YnZlcnNpb24gU2V0dXAgR3VpZGUNCiAgICAgIChlZGsyLXN1YnZlcnNpb24tc2V0dXAucnRmKQ0KDQpQcmUtUmVxdWlzaXRlcw0KLS0tLS0tLS0tLS0tLS0NClRoZSBmb2xsb3dpbmcgbGlzdCBvZiB0b29scyBtdXN0IGJlIGluc3RhbGxlZCBvbiB0aGUgZGV2ZWxvcG1lbnQgd29ya3N0YXRpb24NCnByaW9yIHRvIHVzaW5nIHRoZSBFREsgSUkuDQoNCkNvbXBpbGVyIFRvb2wgQ2hhaW4NCiAgICAgIE1pY3Jvc29mdCogVmlzdWFsIFN0dWRpbyAuTkVUIDIwMDMqICAoaHR0cDovL3d3dy5taWNyb3NvZnQuY29tKQ0KICAgIG9yDQogICAgICBBIHNwZWNpYWwgR0NDIHZlcnNpb24gNC54IG9yIGxhdGVyIChodHRwOi8vZ2NjLmdudS5vcmcpLiBTZWUgYmVsb3cuDQoNCkFzc2VtYmxlciBUb29sIENoYWluDQogICAgICBNaWNyb3NvZnQgTWFjcm8gQXNzZW1ibGVyLCB2ZXJzaW9uIDYuMTUgb3IgbGF0ZXINCiAgICBvcg0KICAgICAgR05VIGJpbnV0aWxzIDIuMTYuMSBvciBsYXRlcg0KDQpKYXZhIERldmVsb3BtZW50IEtpdCAoIEphdmEgNS4wIG9yIGxhdGVyKQ0KICAgICAgU3VuKiBqZGstMS41LjBfMDYgb3IgbGF0ZXIgKGh0dHA6Ly9qYXZhLnN1bi5jb20pDQogICAgb3INCiAgICAgIEJlYSBTeXN0ZW1zKiBqcm9ja2l0LTI1LjIuMC1qZGsxLjUuMF8wMyBvciBsYXRlciAoaHR0cDovL3d3dy5iZWEuY29tKQ0KDQpKYXZhIFRvb2xzDQogICAgQXBhY2hlLUFOVCwgdmVyc2lvbiAxLjYuNSBvciBsYXRlciAoaHR0cDovL2FudC5hcGFjaGUub3JnKQ0KICAgIEFudC1jb250cmliLCB2ZXJzaW9uIDEuMGIyIG9yIGxhdGVyDQogICAgICAoaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9hbnQtY29udHJpYi9hbnQtY29udHJpYi0xLjBiMi1iaW4uemlwP2Rvd25sb2FkKQ0KICAgIFNheG9uOCwgdmVyc2lvbiA4LjEuMQ0KICAgICAgKGh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvc2F4b24vc2F4b25iOC0xLTEuemlwP2Rvd25sb2FkKQ0KICAgIFhNTEJlYW5zLCB2ZXJzaW9uIDIuMS4wIChodHRwOi8veG1sYmVhbnMuYXBhY2hlLm9yZykNCiAgICAgIERPIE5PVCBkb3dubG9hZCB0aGUgbGF0ZXN0IFhNTEJlYW5zLCB2ZXJzaW9uIDIuMi4wLiBJdCBpcyBub3QgY29tcGF0aWJsZSANCiAgICAgIHdpdGggU2F4b244LCB2ZXJzaW9uIDguMS4xLg0KDQpPdGhlciBUb29scw0KICAgIFRvcnRvaXNlU1ZOIHZlcnNpb24gMS4zLjMuIChodHRwOi8vdG9ydG9pc2Vzdm4udGlncmlzLm9yZy8pDQoNCk9wdGlvbmFsIFRvb2xzDQotLS0tLS0tLS0tLS0tLQ0KQ29tcGlsZXIgVG9vbCBDaGFpbnM6DQogICAgSW50ZWwoUikgQysrIENvbXBpbGVyIGZvciBXaW5kb3dzKiwgdmVyLiA5LjAgb3IgbGF0ZXIgKGh0dHA6Ly93d3cuaW50ZWwuY29tKQ0KICAgIEludGVsKFIpIEMgQ29tcGlsZXIgZm9yIEVGSSBCeXRlIENvZGUsIHZlci4gMS4yIG9yIGxhdGVyIA0KICAgICAgKGh0dHA6Ly93d3cuaW50ZWwuY29tL2NkL3NvZnR3YXJlL3Byb2R1Y3RzL2FzbW8tbmEvZW5nL2NvbXBpbGVycy9lZmliYy9pbmRleC5odG0pDQogICAgTWljcm9zb2Z0IERyaXZlciBEZXZlbG9wbWVudCBLaXQsIHZlcnNpb24gMzc5MC4xODMwIG9yIGxhdGVyDQogICAgICAoaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3doZGMvZGV2dG9vbHMvZGRrL29yZGVyZGRrY2QubXNweCkNCiAgICBNaWNyb3NvZnQgQUNQSSBTb3VyY2UgTGFuZ3VhZ2UgQXNzZW1ibGVyLCBWZXJzaW9uIDEuMC4xM05UIG9yIGxhdGVyDQogICAgSW50ZWwgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlLCB2ZXJzaW9uIDIwMDYwMTEzDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpOb3RlcyBvbiBSZXF1aXJlZCBUb29scyAoU291cmNlIENvbnRyb2wgU3lzdGVtKQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRoZSBFREsgSUkgaXMgYmVpbmcgbWFuYWdlZCBieSB0aGUgU3VidmVyc2lvbiBTb3VyY2UgQ29udHJvbCBvbiBUaWFub2NvcmUub3JnLg0KU3VidmVyc2lvbiBwcm92aWRlcyBzcGVlZCwgc2VjdXJpdHksIGFuZCBhZGRpdGlvbmFsIGZlYXR1cmVzLiBUaGUNCnJlY29tbWVuZGVkIGNsaWVudCBpcyBUb3J0b2lzZVNWTiB2ZXJzaW9uIDEuMy4zLiANCiAoQXZhaWxhYmxlIGF0IGh0dHA6Ly90b3J0b2lzZXN2bi50aWdyaXMub3JnLykNCg0KVGhlIGNoZWNrb3V0IHByb2NlZHVyZXMgb24gdGhlIFRpYW5vY29yZS5vcmcgV2ViIHNpdGUgaW5jbHVkZQ0KaW5zdHJ1Y3Rpb25zIGZvciB0aGUgdXNlIG9mIFN1YnZlcnNpb24gU291cmNlIENvbnRyb2wuDQoNClRoZSBVUkwgb2YgdGhlIEVESyBJSSByZXBvc2l0b3J5IGlzOg0KICBodHRwczovL2VkazIudGlhbm9jb3JlLm9yZy9zdm4vZWRrMi90cnVuay9lZGsyDQoNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5vdGVzIE9uIFJlcXVpcmVkIFRvb2xzIChXaXRoIGV4YW1wbGVzIGZvciBXaW5kb3dzLCBPUyBYLCBhbmQgTGludXgqKSANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpTb2Z0d2FyZSBJbnN0YWxsYXRpb24gT3JkZXI6DQogIEFmdGVyIGluc3RhbGxpbmcgdGhlIGNvbXBpbGVyIHRvb2xzIGFuZCB5b3VyIFN1YnZlcnNpb24gY2xpZW50LCBpbnN0YWxsIHRoZSANCiAgZm9sbG93aW5nIHJlcXVpcmVkIHRvb2xzIGluIHRoaXMgb3JkZXI6IA0KICAgIDEuIEphdmEgSkRLDQogICAgMi4gQXBhY2hlLUFudA0KICAgIDMuIGFudC1jb250cmliDQogICAgNC4geG1sYmVhbnMNCiAgICA1LiBzYXhvbjgNCg0KSmF2YSBEZXZlbG9wbWVudCBLaXQ6DQogDQogICBUaGUgSmF2YSBFbnZpcm9ubWVudCBWYXJpYWJsZSBtdXN0IGJlIHNldCBiZWZvcmUgYXR0ZW1wdGluZyB0byBidWlsZC4NCiAgICAgICBGb3IgU3VuIEpESyAoc2VlIG5vdGUgYmVsb3eGKToNCiAgICAgICAgICAgICAgc2V0IEpBVkFfSE9NRT1jOlxKYXZhXGpkazEuNS4wXzA2ICAoV2luZG93cyBleGFtcGxlKQ0KICAgICAgICAgICAgICBleHBvcnQgSkFWQV9IT01FPS9MaWJyYXJ5L0phdmEvSG9tZS8gKE9TIFggZXhhbXBsZSkNCiAgICAgICAgICAgICAgZXhwb3J0IEpBVkFfSE9NRT0vdXNyL2xpYi9qMnNkazEuNS1zdW4vIChMaW51eCBleGFtcGxlKQ0KICAgICAgIEZvciBCZWEgU3lzdGVtczoNCiAgICAgICAgICAgICAgc2V0IEpBVkFfSE9NRT1jOlxKYXZhXGpyb2NraXQtUjI2LjAuMC1qZGsxLjUuMF8wNA0KIA0KICCGIFdoZW4gdXNpbmcgdGhlIFN1biBKREs1LjA6DQogICAgRHVyaW5nIGluc3RhbGxhdGlvbiwgeW91IHNob3VsZCBzcGVjaWZ5IHRoZSBpbnN0YWxsIGRpcmVjdG9yeSBhcyBDOlxKYXZhDQogICAgaW5zdGVhZCBvZiBDOlxQcm9ncmFtIEZpbGVzXChvciBzb21lIG90aGVyIGRyaXZlIGxldHRlci4pICBXaGlsZSBpbnN0YWxsaW5nDQogICAgdG8gdGhpcyBub24tc3RhbmRhcmQgbG9jYXRpb24gaXMgbm90IHJlcXVpcmVkLCBpbiBwcmFjdGljZSwgaXQgc2VlbXMgdG8gd29yayANCiAgICBtb3JlIHJlbGlhYmx5LiANCiAgICBGb3IgdGhlIEpESywgdGhlIGluc3RhbGwgcGF0aCBpcyBDOlxKYXZhXGpkazEuNS4wXzA2DQogICAgRm9yIHRoZSBKUkUsIHRoZSBpbnN0YWxsIHBhdGggaXMgQzpcSmF2YVxqcmUxLjUuMF8wNg0KICAgIEFsdGVybmF0aXZlbHksIHlvdSBjYW4gc3BlY2lmeSBDOlxzdW5qYXZhamRrIGFuZCBDOlxzdW5qYXZhanJlLg0KDQogICAgTk9URTogWW91IGNhbm5vdCBjb21iaW5lIHRoZSBsb2NhdGlvbiBmb3IgdGhlIEpESyBhbmQgdGhlIEpSRSwgYmVjYXVzZSB0aGUgDQogICAgSlJFIGluc3RhbGwgcmVtb3ZlcyBtb3N0IG9mIHRoZSBiaW5hcmllcyBhbmQgbGlicmFyaWVzIGluc3RhbGxlZCBieSB0aGUgSkRLDQogICAgaW5zdGFsbC4NCg0KSmF2YSBUb29sczoNCiAgICBUaGUgQXBhY2hlLUFOVCByZXF1aXJlcyB0aGUgQU5UX0hPTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYmUgc2V0IGJlZm9yZQ0KICAgIGF0dGVtcHRpbmcgdG8gYnVpbGQ6DQogICAgICAgICBzZXQgQU5UX0hPTUU9YzpcPGZ1bGwgcGF0aCB0byB3aGVyZSBhbnQgd2FzIGluc3RhbGxlZD4NCiAgICAgICAgICBleHBvcnQgQU5UX0hPTUU9fi9FeHRlcm5hbFRvb2xzL2FwYWNoZS1hbnQgKE9TIFggYW5kIExpbnV4IGV4YW1wbGUpDQoNCiAgICBUaGUgYW50LWNvbnRyaWIuamFyIGZpbGUgc2hvdWxkIGJlIGluc3RhbGxlZCBpbiB0aGUgJUFOVF9IT01FJVxsaWIgDQogICAgZGlyZWN0b3J5Lg0KDQogICAgWE1MQmVhbnMsIHJlcXVpcmVzIHRoZSBYTUxCRUFOU19IT01FIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGJlIHNldA0KICAgIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGJ1aWxkOg0KICAgICAgICAgc2V0IFhNTEJFQU5TX0hPTUU9QzpcPGZ1bGwgcGF0aCB0byB3aGVyZSB4bWxiZWFucyB3YXMgaW5zdGFsbGVkPg0KICAgICAgICAgIGV4cG9ydCBYTUxCRUFOU19IT01FPX4vRXh0ZXJuYWxUb29scy94bWxiZWFucyAoT1MgWCBhbmQgTGludXggZXhhbXBsZSkNCg0KICAgIENvcHkgdGhlIHNheG9uOC5qYXIgZmlsZSB0byB0aGUgJVhNTEJFQU5TX0hPTUUlXGxpYiBkaXJlY3RvcnkuDQoNCiAgIFRoZSBBbnQgYW5kIFhNTEJlYW4gdG9vbHMgbXVzdCBiZSBpbiB0aGUgcGF0aC4NCiAgICAgTVMgc3lzdGVtIGV4YW1wbGU6DQogICAgICAgIHNldCBQQVRIPSVQQVRIJTslQU5UX0hPTUUlXGJpbjslWE1MQkVBTlNfSE9NRSVcYmluDQogICAgIExpbnV4L09TIFggYmFzaCBzaGVsbCBleGFtcGxlOg0KICAgICAgICBleHBvcnQgUEFUSD0kUEFUSDoke0FOVF9IT01FfS9iaW46JHtYTUxCRUFOU19IT01FfS9iaW4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkEgV29yZCBvbiBBcGFjaGUtQU5UDQotLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGhlIEFwYWNoZS1BTlQgcHJvZ3JhbSBpcyBhIGJ1aWxkIHRvb2wgdGhhdCB1c2VzIFhNTC1iYXNlZCBwcm9qZWN0IGZpbGVzLg0KU2ltaWxhciB0byBNYWtlZmlsZXMsIHRoZXNlIHByb2plY3QgZmlsZXMgbWF5IGNvbnRhaW4gbXVsdGlwbGUgdGFyZ2V0cy4gIE1vc3QNCmJ1aWxkLnhtbCBmaWxlcyBpbiBFREsgSUkgYXJlIGF1dG8tZ2VuZXJhdGVkOyBhbnkgZWRpdHMgcGVyZm9ybWVkIG9uIHRoZQ0KYnVpbGQueG1sIGZpbGVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgdGhlIG5leHQgYnVpbGQuDQoNClByZS1kZWZpbmVkIHRhcmdldHMgaW4gdGhlIGJ1aWxkLnhtbCBmaWxlIGluY2x1ZGU6DQogICAgYWxsICAgICAgLSBUaGlzIHRhcmdldCBidWlsZHMgYmluYXJpZXMgZm9yIGRlZmluZWQgYXJjaGl0ZWN0dXJlcy4NCiAgICBjbGVhbiAgICAtIFRoaXMgdGFyZ2V0IHJlbW92ZXMgb2JqZWN0IGZpbGVzIGdlbmVyYXRlZCBieSBjb21tYW5kcy4NCiAgICBjbGVhbmFsbCAtIFRoaXMgdGFyZ2V0IHJlbW92ZXMgYWxsIGdlbmVyYXRlZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkEgV29yZCBvbiB0aGUgR0NDIFRvb2wgQ2hhaW4NCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkVESyBJSSB3aWxsIG5vdCBjb21waWxlIHdpdGggYSBzdGFuZGFyZCBMaW51eCBnY2MgdG9vbCBjaGFpbi4gV2hpbGUgTGludXgNCmRpc3RyaWJ1dGlvbnMgYXJlIHVzdWFsbHkgYmFzZWQgb24gRUxGLCBFREsgSUkgcmVxdWlyZXMgYSB2ZXJzaW9uIG9mIGdjYyANCnRoYXQgaXMgY29uZmlndXJlZCB0byBwcm9kdWNlIFBFLUNPRkYgaW1hZ2VzLiBZb3Ugd2lsbCBmaW5kIGEgc2NyaXB0IGluIA0KZWRrMi9Ub29scy9nY2MgdGhhdCB3aWxsIGRvd25sb2FkLCBjb25maWd1cmUsIGNvbXBpbGUsIGFuZCBpbnN0YWxsIGEgZ2NjIA0KNC5YIGNyb3NzLWNvbXBpbGUgdG9vbCBjaGFpbiBmb3IgRURLIElJIGRldmVsb3BtZW50LiBUaGlzIGN1c3RvbSB0b29sIGNoYWluIA0Kc3VwcG9ydHMgdGhlIElBLTMyIGFyY2hpdGVjdHVyZS4gSXQgY2FuIGJlIGJ1aWx0IGFuZCBydW4gb24gQ3lnd2luLCBMaW51eCwgYW5kIA0KbWFueSBvdGhlciBQT1NJWC1jb21wbGlhbnQgaG9zdCBvcGVyYXRpbmcgZW52aXJvbm1lbnRzLiBUbyBjb21waWxlIHRoZSBjdXN0b20gDQpnY2MgdG9vbCBjaGFpbiwgeW91IG5lZWQgdGhlIGZvbGxvd2luZyB0b29scyBvbiB5b3VyIGhvc3QgY29tcHV0ZXI6IGJhc2gsIGdjYywgDQpnbWFrZSwgY3VybCAob3Igd2dldCkuDQoNCk9ubHkgdGhlIE1kZVBrZyBhbmQgRWRrTW9kdWxlUGtnIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IGdjYyBidWlsZHMuIE90aGVyDQpidWlsZHMsIHN1Y2ggYXMgdGhlIEVka050MzJQa2csIHdpbGwgbm90IGNvbXBpbGUgd2l0aCBnY2MuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkEgV29yZCBvbiBjb21waWxpbmcgb24gTGludXgNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KSW4gb3JkZXIgdG8gY29tcGlsZSBvbiBMaW51eCwgeW91IHdpbGwgbmVlZCB0byBoYXZlIHRoZSBlMmZzcHJvZ3MtZGV2IHBhY2thZ2UNCmluc3RhbGxlZC4gIENoZWNrIHlvdXIgZGlzdHJpYnV0aW9uIGZvciB0aGUgcnBtLCBkZWIgb3Igb3RoZXIgcGFja2FnZSBmb3JtYXQuDQpUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIHV1aWQgbGlicmFyeSBhbmQgaGVhZGVyIHRoYXQgYXJlIHVzZWQgYnkgc29tZSBvZiB0aGUNCmhvc3QgdG9vbHMuDQoNCklmIHlvdSBhcmUgcnVubmluZyBvbiB4ODZfNjQgTGludXgsIHRoZW4geW91IHNob3VsZCBpbnN0YWxsIGEgNjQgYml0IHZlcnNpb24gb2YNCnRoZSBKYXZhIEpESy4gVGhlIHZlcnNpb24gdGhhdCB3YXMgdXNlZCB3YXMgamRrLTFfNV8wXzA3LWxpbnV4LWFtZDY0LXJwbS5iaW4uDQpJdCBtYXkgYmUgZG93bmxvYWRlZCBmcm9tIHN1bi5jb20uDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpOb3RlcyBvbiBEb2N1bWVudGF0aW9uDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVGhlIGRvY3VtZW50cyBhcmUgYmVpbmcgbWFuYWdlZCBieSB0aGUgU3VidmVyc2lvbiBTb3VyY2UgQ29udHJvbCBvbg0KVGlhbm9jb3JlLm9yZy4gIFRoZSBkb2N1bWVudCByZXBvc2l0b3J5IGlzICJkb2NzIiBhbmQgbXVzdCBiZSBjaGVja2VkIG91dA0Kc2VwYXJhdGVseSBmcm9tIHRoZSBFREsgSUkgc291cmNlIHRyZWUuIFJlZmVyIHRvIHRoZSBjaGVja291dCBwcm9jZWR1cmVzIG9uDQp0aGUgVGlhbm9jb3JlLm9yZyBXZWIgc2l0ZSBmb3IgRURLIElJLg0KDQpUaGUgVVJMIG9mIHRoZSBkb2N1bWVudCByZXBvc2l0b3J5IGlzOg0KICBodHRwczovL2VkazIudGlhbm9jb3JlLm9yZy9zdm4vZWRrMi90cnVuay9kb2NzDQoNCiANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClF1aWNrIFN0YXJ0DQotLS0tLS0tLS0tLQ0KKGFzc3VtZXMgTWljcm9zb2Z0IFRvb2xzIGFuZCBPUyBlbnZpcm9ubWVudCwgZm9yIEdDQyBUb29scyBvciBMaW51eCwgc2VlIA0KIkRldGFpbGVkIFN0YXJ0aW5nIEluc3RydWN0aW9ucyIgYmVsb3cpDQoNCkZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGF0IGh0dHBzOi8vZWRrMi50aWFub2NvcmUub3JnL3NlcnZsZXRzL1Byb2plY3RTb3VyY2UgdG8NCmNoZWNrIG91dCB0aGUgZW50aXJlIEVESyBJSSBzb3VyY2UgdHJlZS4NCg0KSW4gYSBjb21tYW5kIHdpbmRvdywgY2hhbmdlIHRvIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSBFREsgSUkgc291cmNlLg0KDQpUbyB0ZXN0IHlvdXIgdG9vbCBjaGFpbiBzZXR1cCBhbmQgdG8gYnVpbGQgdGhlIHN1cHBsaWVkIHRvb2xzLCBleGVjdXRlOg0KICAgIGM6XE15V29ya1xlZGtpaVw+IGVka3NldHVwIEZvcmNlQnVpbGQNCg0KKFRoZSBlZGtzZXR1cCBzY3JpcHQgaXMgcmVmZXJyZWQgdG8gYXMgdGhlIHNldHVwIGNvbW1hbmQgdGhyb3VnaG91dCB0aGUgDQpyZXN0IG9mIHRoaXMgZG9jdW1lbnQuKQ0KICAgICAgTk9URTogWW91IHNob3VsZCBydW4gdGhlIHNldHVwIGNvbW1hbmQgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5IHNlc3Npb24uDQogICAgICAgICAgICBUaGlzIGNvbmZpZ3VyZXMgdGhlIGVudmlyb25tZW50IHRvIGluY2x1ZGUgdGhlIFRpYW5vVG9vbHMgYW5kIHRoZQ0KICAgICAgICAgICAgSmF2YSBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy4NCg0KWW91IHdpbGwgbmVlZCB0byBzZXQgdGhlIFdPUktTUEFDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgcnVuIHRoZSBlZGtzZXR1cA0Kc2NyaXB0ICh3aXRob3V0IGFueSBhcmd1bWVudHMpLCBhbnkgdGltZSB5b3Ugd2FudCB0byBidWlsZC4NCg0KICBTZXQgdGhlIFdPUktTUEFDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgZS5nLjoNCg0KICAgIGM6XD4gc2V0IFdPUktTUEFDRT1DOlxNeVdvcmtcZWRraWkNCg0KWW91IG1heSBuZWVkIHRvIGVkaXQgdGhlIHRleHQgZmlsZXMgVG9vbHMvQ29uZi90YXJnZXQudHh0IGFuZA0KVG9vbHMvQ29uZi90b29sc19kZWYudHh0IChjcmVhdGVkIGJ5IGVka3NldHVwKSB1c2luZyB5b3VyIGZhdm9yaXRlIA0KdGV4dCBlZGl0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIHBhdGhzIHRvIHRoZSB0b29scyB5b3Ugd2FudCB0byB1c2UgDQp0byBidWlsZCBFREsgSUkgYmluYXJpZXMgYXJlIGNvcnJlY3QuICBUaGVzZSBmaWxlcyBjb250YWluIHRoZSBkZWZhdWx0IA0KcGF0aHMgKGFzIHBlciB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gb2YgdGhlIHRvb2xzKSwgc28gYSBjdXN0b21pemVkIA0KaW5zdGFsbCBtYXkgcmVxdWlyZSB0aGlzIG1hbnVhbCBwcm9jZXNzLg0KDQpPbmNlIHRoaXMgaXMgY29tcGxldGVkLCB5b3UgYXJlIHJlYWR5IHRvIHRlc3QgdGhlIGJ1aWxkLCBieSBleGVjdXRpbmc6DQogICAgYzpcTXlXb3JrXGVka2lpXD4gYnVpbGQNCg0KVGhpcyBjb21tYW5kIGJ1aWxkcyB0aGUgYWN0aXZlIHBsYXRmb3JtIHNwZWNpZmllZCBpbiB0ZXh0IGZpbGUgdGFyZ2V0LnR4dC4gSWYgDQp0aGUgYWN0aXZlIHBsYXRmb3JtIGlzIG5vdCBzcGVjaWZpZWQgdGFyZ2V0LnR4dCwgeW91IG11c3QgZXhlY3V0ZSB0aGUgYnVpbGQgDQpjb21tYW5kIGZyb20gdGhlIHN1Yi1kaXJlY3RvcnkgdGhhdCBjb250YWlucyBGUEQgZmlsZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uIA0KYWJvdXQgdGhlIGFjdGl2ZSBwbGF0Zm9ybSBwb2xpY3ksIHNlZSB0aGUgk0VESyBJSSBCdWlsZCBhbmQgUGFja2FnaW5nIA0KQXJjaGl0ZWN0dXJlIFNwZWNpZmljYXRpb24ulA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpEZXRhaWxlZCBTdGFydGluZyBJbnN0cnVjdGlvbnMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpGb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCBodHRwczovL2VkazIudGlhbm9jb3JlLm9yZy9zZXJ2bGV0cy9Qcm9qZWN0U291cmNlIHRvDQpjaGVjayBvdXQgdGhlIGVudGlyZSBFREsgSUkgc291cmNlIHRyZWUuDQoNCkluIGEgY29tbWFuZCB3aW5kb3csIGNoYW5nZSB0byB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSBvZiB0aGUgRURLIElJIHNvdXJjZS4NCg0KSWYgdGhlIGFjdGl2ZSBjb21waWxlciB0b29sIGNoYWluIGlzIEdDQywgeW91IG11c3Qgc2V0IHRoZQ0KZW52aXJvbm1lbnQgdmFyaWFibGUsIFRPT0xfQ0hBSU4gdG8gImdjYyIgYmVmb3JlIHJ1bm5pbmcgdGhlDQplZGtzZXR1cCBzY3JpcHQuICBFeGFtcGxlOiBleHBvcnQgVE9PTF9DSEFJTj1nY2MNCg0KVG8gdGVzdCB5b3VyIHRvb2wgY2hhaW4gc2V0dXAgYW5kIHRvIGJ1aWxkIHRoZSBzdXBwbGllZCB0b29scywgZXhlY3V0ZToNCiAgICBjOlxNeVdvcmtcZWRraWlcPiBlZGtzZXR1cCBGb3JjZUJ1aWxkDQoNCk9uIExpbnV4IHN5c3RlbXMsIHlvdSBtdXN0IHNvdXJjZSB0aGUgZWRrc2V0dXAuc2ggZmlsZSB0byBsb2FkIHRoZSBjb3JyZWN0DQpzZXR0aW5ncyBpbnRvIHlvdXIgc2hlbGwuDQoNCiAgICAuIGVka3NldHVwLnNoICMgTm90ZSB0aGUgZG90Lg0KDQpUaGUgZWRrc2V0dXAgc2NyaXB0IGlzIHJlZmVycmVkIHRvIGFzIHRoZSBzZXR1cCBjb21tYW5kIHRocm91Z2hvdXQgdGhlIA0KcmVzdCBvZiB0aGlzIGRvY3VtZW50Lg0KICAgICAgTk9URTogWW91IHNob3VsZCBydW4gdGhlIHNldHVwIGNvbW1hbmQgYXQgdGhlIHN0YXJ0IG9mIGV2ZXJ5IHNlc3Npb24uDQogICAgICAgICAgICBUaGlzIGNvbmZpZ3VyZXMgdGhlIGVudmlyb25tZW50IHRvIGluY2x1ZGUgdGhlIFRpYW5vVG9vbHMgYW5kIHRoZQ0KICAgICAgICAgICAgSmF2YSBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcy4NCg0KQW55IGNoYW5nZXMgdG8gdGhlIHRvb2wgc291cmNlIGNvZGUgb3IgWE1MIFNjaGVtYSBkb2N1bWVudHMgcmVxdWlyZSB0aGF0DQp5b3UgZXhlY3V0ZSB0aGUgZm9sbG93aW5nOg0KICAgYzpcTXlXb3JrXGVka2lpXD4gZWRrc2V0dXAgRm9yY2VCdWlsZA0KDQpZb3UgbXVzdCBzZXQgdGhlIFdPUktTUEFDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgb3IgcnVuIHRoZSBlZGtzZXR1cA0Kc2NyaXB0ICh3aXRob3V0IGFueSBhcmd1bWVudHMpLCBhbnkgdGltZSB5b3Ugd2FudCB0byBidWlsZC4NCg0KICBTZXQgdGhlIFdPUktTUEFDRSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgZS5nLjoNCg0KICAgIGM6XD4gc2V0IFdPUktTUEFDRT1DOlxNeVdvcmtcZWRraWkNCg0KWW91IG1heSBuZWVkIHRvIGVkaXQgdGhlIHRleHQgZmlsZXMgVG9vbHMvQ29uZi90YXJnZXQudHh0IGFuZA0KVG9vbHMvQ29uZi90b29sc19kZWYudHh0IChjcmVhdGVkIGJ5IGVka3NldHVwKSB1c2luZyB5b3VyIGZhdm9yaXRlIA0KdGV4dCBlZGl0b3IgdG8gZW5zdXJlIHRoYXQgdGhlIHBhdGhzIHRvIHRoZSB0b29scyB5b3Ugd2FudCB0byB1c2UgDQp0byBidWlsZCBFREsgSUkgYmluYXJpZXMgYXJlIGNvcnJlY3QuICBUaGVzZSBmaWxlcyBjb250YWluIHRoZSBkZWZhdWx0IA0KcGF0aHMgKGFzIHBlciB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gb2YgdGhlIHRvb2xzKSwgc28gYSBjdXN0b21pemVkIA0KdG9vbCBpbnN0YWxsYXRpb24gbWF5IHJlcXVpcmUgdGhpcyBtYW51YWwgcHJvY2Vzcy4NCg0KT25jZSB0aGlzIGlzIGNvbXBsZXRlZCwgeW91IGFyZSByZWFkeSB0byB0ZXN0IHRoZSBidWlsZCwgYnkgZXhlY3V0aW5nOg0KICAgIGM6XE15V29ya1xlZGtpaVw+IGJ1aWxkDQoNClRoaXMgY29tbWFuZCBidWlsZHMgdGhlIGFjdGl2ZSBwbGF0Zm9ybSBzcGVjaWZpZWQgaW4gdGV4dCBmaWxlIHRhcmdldC50eHQuIElmIA0KdGhlIGFjdGl2ZSBwbGF0Zm9ybSBpcyBub3Qgc3BlY2lmaWVkLCBnbyB0byB0aGUgc3ViLWRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIEZQRCANCmZpbGVzIGFuZCBleGVjdXRlIHRoZSBidWlsZCBjb21tYW5kLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0aXZlIA0KcGxhdGZvcm0gcG9saWN5LCBzZWUgdGhlIJNFREsgSUkgQnVpbGQgYW5kIFBhY2thZ2luZyBBcmNoaXRlY3R1cmUgDQpTcGVjaWZpY2F0aW9uLpQNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkluZGl2aWR1YWwgUGxhdGZvcm0gQnVpbGRzDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQWZ0ZXIgcnVubmluZyB0aGUgc2V0dXAgY29tbWFuZCwgeW91IGNhbiBidWlsZCBpbmRpdmlkdWFsIHBsYXRmb3Jtcy4NCkluIHRoZSBjb21tYW5kIHdpbmRvdzoNCiAgU2V0IHRoZSBhY3RpdmUgcGxhdGZvcm0gaW4gdGFyZ2V0LnR4dCwgYW5kIGV4ZWN1dGUgdGhpcyBjb21tYW5kOg0KICAgIGM6XDxkaXJlY3Rvcnk+XD4gYnVpbGQNCm9yDQogIGNkIHRvIHRoZSBwbGF0Zm9ybSAoRlBEIGZpbGUpIHRoYXQgeW91IHdhbnQgdG8gYnVpbGQgYW5kIGV4ZWN1dGUgdGhpcyBjb21tYW5kOg0KICAgIGM6XE15V29ya1xlZGtpaVxFZGtOdDMyUGtnXD4gYnVpbGQNCg0KICBOb3RlIHRoYXQgdGhlIGFjdGl2ZSBwbGF0Zm9ybSBzcGVjaWZpZWQgaW4gdGFyZ2V0LnR4dCBvdmVycmlkZXMgdGhlIHBsYXRmb3JtIA0KICBzcGVjaWZpZWQgYnkgYW55IEZQRCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gRm9yIG1vcmUgICBpbmZvcm1hdGlvbiANCiAgYWJvdXQgYWN0aXZlIHBsYXRmb3JtIHBvbGljeSwgc2VlIHRoZSCTRURLIElJIEJ1aWxkIGFuZCBQYWNrYWdpbmcgQXJjaGl0ZWN0dXJlDQogIFNwZWNpZmljYXRpb24ulCANCg0KVG8gcnVuIHRoZSBOdDMyIGVtdWxhdGlvbiBwbGF0Zm9ybSB1bmRlciBNaWNyb3NvZnQgV2luZG93cywgZ28gdG8gDQo8ZnVsbCBidWlsZCBwYXRoPlxERUJVR1xNU0ZUXElBMzIgYW5kIGV4ZWN1dGUgU2VjTWFpbi5leGUNCg0KVG8gZXhpdCB0aGUgTnQzMiBlbXVsYXRpb24gcGxhdGZvcm0sIHR5cGUgk3Jlc2V0lCBhdCB0aGUgRUZJIFNoZWxsPg0KY29tbWFuZCBwcm9tcHQuICBBbHRlcm5hdGl2ZWx5LCBmcm9tIHRoZSBncmFwaGljYWwgaW50ZXJmYWNlLCBzZWxlY3QgdGhlIEJvb3QNCk1haW50ZW5hbmNlIE1hbmFnZXIncyCTUmVzZXQgU3lzdGVtlCBjb21tYW5kLg0KDQogICAgICBOT1RFOiBXaGVuIGNyZWF0aW5nIGEgbmV3IHBsYXRmb3JtLCB0aGUgUGxhdGZvcm0gTmFtZSBpcyByZXN0cmljdGVkDQogICAgICB0byBhIHNpbmdsZSB3b3JkIGNvbnRhaW5pbmcgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmUsIGRhc2gsIA0KICAgICAgYW5kIHBlcmlvZC4gIFRoZSBzcGFjZSBjaGFyYWN0ZXIgYW5kIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgDQogICAgICBub3QgYWxsb3dlZC4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCk5vdGVzIG9uIFN5bWJvbGljIERlYnVnDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KVG8gZW5hYmxlIEVGSSBTeW1ib2xpYyBEZWJ1Z2dpbmcsIG1ha2Ugc3VyZSB0aGUgdGFyZ2V0IG91dHB1dCBpcyBzZXQgdG8gREVCVUcNCmluIHRoZSB0ZXh0IGZpbGUgVG9vbHMvQ29uZi90YXJnZXQudHh0IGFuZCB0aGVuIG1vZGlmeSB0aGUgRlBEIDxCdWlsZE9wdGlvbnM+DQo8T3B0aW9ucz48T3B0aW9uIEJ1aWxkVGFyZ2V0cz0iREVCVUciIFRvb2xDb2RlPSJDQyI+IGFuZCBhcHBlbmQgdGhlIGZvbGxvd2luZw0KY29tcGlsZXIgb3B0aW9ucyB0byB0aGUgc3RyaW5nOg0KIi9EIEVGSV9HRU5FUkFURV9TWU1fRklMRSIsICIvRCBFRklfU1lNQk9MSUNfREVCVUciDQoNCihJZiB0aGUgT3B0aW9uIGxpbmUgZG9lcyBub3QgY29udGFpbiAiL0QgRUZJX0RFQlVHIiwgeW91IG11c3QgYWRkIHRoYXQNCm9wdGlvbiBhcyB3ZWxsLikNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpJbmRpdmlkdWFsIE1vZHVsZSBCdWlsZHMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQWZ0ZXIgcnVubmluZyB0aGUgc2V0dXAgY29tbWFuZCwgeW91IGNhbiBidWlsZCBpbmRpdmlkdWFsIG1vZHVsZXMuDQogIEluIHRoZSBjb21tYW5kIHdpbmRvdywgY2QgdG8gdGhlIG1vZHVsZSB0aGF0IHlvdSB3YW50IHRvIGJ1aWxkLCBhbmQNCiAgZXhlY3V0ZSB0aGUgYnVpbGQgY29tbWFuZDoNCiAgICBjOlxNeVdvcmtcZWRraWlcTWRlUGtnXExpYnJhcnlcQmFzZUxpYlw+IGJ1aWxkDQoNCiAgWW91IG11c3Qgc2V0IHRoZSBhY3RpdmUgcGxhdGZvcm0gaW4gdGFyZ2V0LnR4dCBmb3IgaW5kaXZpZHVhbCBtb2R1bGUgYnVpbGRzLiANCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpHZW5lcmFsIEluZm9ybWF0aW9uOg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgIA0KTWVjaGFuaXNtcw0KLS0tLS0tLS0tLQ0KQSBicmllZiBvdmVydmlldzoNCg0KQSkgVGhlIFN1cmZhY2UgQXJlYSBQYWNrYWdlIERlc2NyaXB0aW9uIChTUEQpIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgDQp0aGUgbW9kdWxlcyB0aGF0IHRoZSBwYWNrYWdlIGNvbnRhaW5zLCBpbmNsdWRpbmcgdGhlIGxvY2F0aW9uIG9mIGFsbCBNU0EgZmlsZXMsIA0KYW5kIHB1YmxpYyBsaWJyYXJ5IG5hbWVzIGFuZCBoZWFkZXJzIHRoYXQgbWlnaHQgYmUgcHJvdmlkZWQgYnkgYSBtb2R1bGUgaW4gdGhlDQpwYWNrYWdlLiAgUGFja2FnZXMgYXJlIGRlZmluZWQgYnkgU1BEIGZpbGVzLiAgKEZvdW5kIGluIHRoZSByb290IG9mIHRoZSBQYWNrYWdlDQpzdWJkaXJlY3RvcnkgKGkuZS4gRWRrTnQzMlBrZykuKSBUaGUgU1BEIGZpbGUgaXMgZnVydGhlciBleHBsYWluZWQgaW4gk0VESyBJSSANCkJ1aWxkIGFuZCBQYWNrYWdpbmcgQXJjaGl0ZWN0dXJlIFNwZWNpZmljYXRpb24ulA0KIA0KQikgTW9kdWxlIFN1cmZhY2UgQXJlYSBEZWZpbml0aW9uIChNU0EpIGZpbGVzLiAgQSBkZXNjcmlwdGlvbiBvZiBhIG1vZHVsZSdzIA0Kc3VyZmFjZSBhcmVhLCB3aXRoIGFsbCBtb2R1bGUgc3BlY2lmaWMgZGVmYXVsdCBmbGFncyBhbmQgZmVhdHVyZXMgc3BlY2lmaWVkLg0KRm9yIGFkZGl0aW9uYWwgZGV0YWlscywgc2VlIHRoZSAiRURLIElJIE1vZHVsZSBTdXJmYWNlIEFyZWEgU3BlY2lmaWNhdGlvbiIgYW5kIA0KdGhlICJFREsgSUkgQnVpbGQgYW5kIFBhY2thZ2luZyBBcmNoaXRlY3R1cmUgU3BlY2lmaWNhdGlvbi4iDQoNCkMpIEZyYW1ld29yayBQbGF0Zm9ybSBEZXNjcmlwdGlvbiAoRlBEKSBmaWxlcy4gIEEgZGVzY3JpcHRpb24gb2YgYSBwbGF0Zm9ybSdzDQpzdXJmYWNlIGFyZSwgaW5jbHVkaW5nIGEgbGlzdCBvZiBtb2R1bGVzIHRoYXQgYXJlIG5lZWRlZCBieSB0aGUgcGxhdGZvcm0uICBUbw0Kc3VwcG9ydCBpbmRpdmlkdWFsIG1vZHVsZSBidWlsZHMsIGRldmVsb3BlcnMgYXJlIG5vdCByZXF1aXJlZCB0byBwcm92aWRlDQppbmZvcm1hdGlvbiBhYm91dCBzcGVjaWZpYyBmbGFzaCBkZXZpY2VzLCBub3IgZmxhc2ggZGV2aWNlIGxheW91dC4gIA0KU3BlY2lmaWMgc2VjdGlvbnMgaW4gdGhlIEZQRCBmaWxlIGNvbnRyb2wgYXNwZWN0cyBvZiB0aGUgYnVpbGQsIHN1Y2ggDQphcyB0aGUgU3VwcG9ydGVkIEFyY2hpdGVjdHVyZXMgYW5kIEJ1aWxkIFRhcmdldHMsIGFzIHdlbGwgYXMgdGhlIHRvb2wgZmxhZ3MgDQp0aGF0IGFyZSB1c2VkIHRvIGNyZWF0ZSB0aGUgYmluYXJ5IGZpbGVzLiAgQSB2YWxpZCBwbGF0Zm9ybSBmaWxlIGNhbiBzcGVjaWZ5IA0KemVybyBvciBtb3JlIG1vZHVsZXMsIHNvIGluZGl2aWR1YWwgbW9kdWxlcyBjYW4gYmUgY29tcGlsZWQgd2l0aGluIHRoZSBjb250ZXh0DQpvZiBhIHBsYXRmb3JtIChGUEQpIGRlZmluaXRpb24uDQoNCkQpIFBsYXRmb3JtIENvbmZpZ3VyYXRpb24gRGF0YWJhc2UgKFBDRCkuICBBIHBsYXRmb3JtIGRhdGFiYXNlIHRoYXQgY29udGFpbnMgYQ0KdmFyaWV0eSBvZiBjdXJyZW50IHBsYXRmb3JtIHNldHRpbmdzIG9yIGRpcmVjdGl2ZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgYnkgYSANCmRyaXZlciBvciBhcHBsaWNhdGlvbi4gIFRoZSBQQ0QgaXMgZGVmaW5lZCBieSB0aGUgUENEX1Byb3RvY29sIChUaGlzIGlzDQpmdXJ0aGVyIGV4cGxhaW5lZCBpbiB0aGUgIkVESyBJSSBQbGF0Zm9ybSBDb25maWd1cmF0aW9uIERhdGFiYXNlIEluZnJhc3RydWN0dXJlIA0KRGVzY3JpcHRpb24uIg0KDQpFKSBMaWJyYXJ5IENsYXNzLiAgQSBsaWJyYXJ5IGNsYXNzIGlzIGEgbG9naWNhbCBncm91cGluZyBvZiBzaW1pbGFyIGZ1bmN0aW9ucy4NCldoZW4gZGV2ZWxvcGluZyBjb21wb25lbnRzLCB0aGUgbW9kdWxlIHN1cmZhY2UgYXJlYSBkZWNsYXJlcyB0aGUgY2xhc3Mgb2YNCmxpYnJhcmllcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IHRoZSBjb21wb25lbnQuIFRoZSBNU0EgYW5kIFNQRCBmaWxlcyBjYW4gc3BlY2lmeQ0KYSByZWNvbW1lbmRlZCBpbnN0YW5jZSBvZiB0aGUgbGlicmFyeSB0aGF0IGEgcGxhdGZvcm0gaW50ZWdyYXRvciAoUEkpIG1heSANCnNlbGVjdCwgaG93ZXZlciB0aGlzIGlzIG9ubHkgYSByZWNvbW1lbmRhdGlvbi4gIFRoZSBQSSBtYXkgY2hvb3NlIHRvIHNlbGVjdCBhIA0KZGlmZmVyZW50IGxpYnJhcnkgaW5zdGFuY2UgdG8gYmUgdXNlZCBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGxpbmtpbmcuIEFsbCANCmxpYnJhcnkgdHlwZSBtb2R1bGVzIG11c3QgaW5jbHVkZSBoZWFkZXIgZmlsZXMgaW4gdGhlaXIgZGlzdHJpYnV0aW9uIHBhY2thZ2UsIA0KYXMgd2VsbCBhcyB0aGVpciBNU0EgZmlsZXMuIENvbXBvbmVudHMsIG9uIHRoZSBvdGhlciBoYW5kLCBuZWVkIHByb3ZpZGUgb25seSBhbiANCk1TQSBmaWxlIGFuZCBlaXRoZXIgc291cmNlIG9yIGJpbmFyeSBmaWxlcyB3aGVuIGRpc3RyaWJ1dGluZyBwYWNrYWdlcy4gIFRoZSANCkxpYnJhcnkgQ2xhc3NlcyBhcmUgZnVydGhlciBleHBsYWluZWQgaW4gdGhlICJFREsgSUkgQnVpbGQgYW5kIFBhY2thZ2luZyANCkFyY2hpdGVjdHVyZSBTcGVjaWZpY2F0aW9uLiINCg0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KVGhlIGNvbW1vbiBvcGVyYXRpb25zIGJ5IGRldmVsb3BlcnMgb2YgbmV3IG1vZHVsZXMgYXJlOg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjEpIE1hbnVhbGx5IGNyZWF0aW5nIGEgbmV3IG1vZHVsZSBpbiBhIHBhY2thZ2U6DQogIC0gVGhlIG1vZHVsZSBzb3VyY2UgY29kZSBtdXN0IGZpcnN0IGJlIGNyZWF0ZWQgaW4gYW4gYXBwcm9wcmlhdGUgZGlyZWN0b3J5DQogICAgKHVuZGVyIHRoZSBwYWNrYWdlIHRoZSBtb2R1bGUgaXMgdG8gYmUgYSBwYXJ0IG9mLikgIA0KICAtIEFuIE1TQSBmaWxlIG11c3QgYmUgY3JlYXRlZCwgc3BlbGxpbmcgb3V0IGFsbCBhc3BlY3RzIG9mIHRoZSBtb2R1bGUuDQogIC0gVGhlIE1TQSBtdXN0IGJlIGFkZGVkIHRvIHRoZSBTUEQgZm9yIHRoZSBwYWNrYWdlIHRvIGluY2x1ZGUgdGhlIG1vZHVsZS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjIpIEFkZGluZyBhbmQgUmVtb3ZpbmcgbW9kdWxlcyB0byBhbmQgZnJvbSBhIHBhY2thZ2U6DQoNCiAgLSBTZXQgdXAgZW52aXJvbm1lbnQgYXMgQnVpbGQNCiAgLSBBZGRpbmcgYSBtb2R1bGUgdG8gYSBwYWNrYWdlOg0KICAgICAtIEdlbmVyYXRlIHRoZSBNU0EgZmlsZQ0KICAgICAtIEFkZCBhIG5ldyA8RmlsZW5hbWU+IGVsZW1lbnQgdW5kZXIgPE1zYUZpbGVzPiBpbnRvDQogICAgICAgPFBhY2thZ2VEaXI+XDxQYWNrYWdlTmFtZT4uc3BkLCB1c2luZyBhcmVsYXRpdmUgcGF0aCB0byB0aGUgcGFja2FnZQ0KICAgICAtIEFkZCBhIG5ldyA8TW9kdWxlU0E+IGVudHJ5IHVuZGVyIGVhY2ggPEZyYW1ld29ya01vZHVsZXM+IGludG8gdGhlDQogICAgICAgPFBhY2thZ2VEaXI+XDxQYWNrYWdlTmFtZT4uZnBkIGZpbGUgaWYgbmVjZXNzYXJ5LiANCg0KICAgLSBSZW1vdmluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZToNCiAgICAgLSBDb21tZW50IG91dCBvciByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgPEZpbGVuYW1lPiBlbGVtZW50IHVuZGVyIA0KICAgICAgIDxNc2FGaWxlcz4gZnJvbSA8UGFja2FnZURpcj5cPFBhY2thZ2VOYW1lPi5zcGQNCiAgICAgLSBDb21tZW50IG91dCBvciByZW1vdmUgdGhlIGNvcnJlc3BvbmRpbmcgPE1vZHVsZVNBPiBlbnRyeSB1bmRlciBlYWNoDQogICAgICAgPEZyYW1ld29ya01vZHVsZXM+IGZyb20gPFBhY2thZ2VEaXI+XDxQYWNrYWdlTmFtZT4uZnBkIGlmIG5lY2Vzc2FyeS4gDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjMpIE1hbnVhbGx5IGNyZWF0aW5nIGEgcGFja2FnZToNCiAgLSBJZGVudGlmeSB0aGUgbW9kdWxlcyB0aGF0IGFyZSB0byBiZSBtZW1iZXJzIG9mIHRoZSBwcm9qZWN0Lg0KICAtIElkZW50aWZ5IHRoZSBWYXJpYWJsZXMgYW5kIEd1aWRzIHJlcXVpcmVkIGluIGFuZCBvZiB0aGUgUGFja2FnZSAoaW5jbHVkaW5nDQogICAgY29uc3VtcHRpb24gYW5kIHByb2R1Y3Rpb24gaW5mb3JtYXRpb24pLg0KICAtIENyZWF0ZSBhbiBTUEQgZmlsZSBkZWZpbmluZyB0aGVzZSBtb2R1bGVzIGFuZCBjYWxsaW5nIG91dCB0aGVpciBNU0EgZmlsZXMuDQogIC0gQWRkIGEgbmV3IDxGaWxlbmFtZT4gZWxlbWVudCB1bmRlciA8UGFja2FnZUxpc3Q+IGludG8gDQogICAgVG9vbHNcQ29uZlxGcmFtZXdvcmtEYXRhYmFzZS5kYiwgdXNpbmcgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHdvcmtzcGFjZS4gDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo0KSBEZWNsYXJpbmcgYSBuZXcgUHJvdG9jb2wgaW4gYSBwYWNrYWdlOiANCiAgLSBUaGlzIHJlbGVhc2UgcmVxdWlyZXMgbWFudWFsIGVkaXRpbmcgb2YgdGhlIFNQRCBmaWxlLCBhZGRpbmcgdGhlIHByb3RvY29sDQogICAgdG8gdGhlIFByb3RvY29sRGVjbGFyYXRpb25zIHNlY3Rpb24gb2YgdGhlIGZpbGUuIA0KICAtIEFkZCB0aGUgUHJvdG9jb2wgLmggZmlsZSB0byB0aGUgSW5jbHVkZVxQcm90b2NvbCBkaXJlY3RvcnkuDQogIC0gQWRkIGFuIDxFbnRyeT4gdG8gdGhlIDxQcm90b2NvbERlY2xhcmF0aW9ucz4gZWxlbWVudCBpbiB0aGUgDQogICAgPFBhY2thZ2VOYW1lPi5zcGQgZmlsZQ0KICAgICAtIEVhY2ggbGluZSBjb250YWlucyBQcm90b2NvbCBiYXNlIG5hbWUsIGZvbGxvd2VkIGJ5IHRoZSBnbG9iYWwgdmFyaWFibGUgDQogICAgICAgbmFtZSwgYW5kICAgICAgICB0aGUgaGV4IHZhbHVlIG9mIHRoZSBQcm90b2NvbCBHVUlELg0KDQpFeGFtcGxlIFByb3RvY29sIEVudHJpZXMgKE5PVEU6IFRoZSBHdWlkIGVudHJ5IGlzIGEgc2luZ2xlIGxpbmUgaW4gdGhlIFNQRCANCmZpbGUpOg0KPFByb3RvY29sRGVjbGFyYXRpb25zPg0KICA8RW50cnkgTmFtZT0iQmRzIj4NCiAgICA8Q19OYW1lPmdFZmlCZHNBcmNoUHJvdG9jb2xHdWlkPC9DX05hbWU+DQogICAgPEd1aWRWYWx1ZT42NjVFM0ZGNi00NkNDLTExRDQtOUEzOC0wMDkwMjczRkMxNEQ8L0d1aWRWYWx1ZT4NCiAgICA8SGVscFRleHQvPg0KICA8L0VudHJ5Pg0KICA8RW50cnkgTmFtZT0iQ3B1Ij4NCiAgICA8Q19OYW1lPmdFZmlDcHVBcmNoUHJvdG9jb2xHdWlkPC9DX05hbWU+DQogICAgPEd1aWRWYWx1ZT4yNkJBQ0NCMS02RjQyLTExRDQtQkNFNy0wMDgwQzczQzg4ODE8L0d1aWRWYWx1ZT4NCiAgICA8SGVscFRleHQvPg0KICA8L0VudHJ5Pg0KPC9Qcm90b2NvbERlY2xhcmF0aW9ucz4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo1KSBEZWNsYXJpbmcgYSBuZXcgUFBJIGluIGEgcGFja2FnZToNCiAgLSBUaGlzIHJlbGVhc2UgcmVxdWlyZXMgbWFudWFsIGVkaXRpbmcgb2YgdGhlIFNQRCBmaWxlDQogIC0gQWRkIHRoZSBQUEkgLmggZmlsZSB0byB0aGUgSW5jbHVkZVxQcGkgZGlyZWN0b3J5Lg0KICAtIEFkZCBhbiA8RW50cnk+IHRvIHRoZSBwYWNrYWdlIDxQcGlEZWNsYXJhdGlvbnM+IGVsZW1lbnQgaW4gdGhlIA0KICAgIDxQYWNrYWdlTmFtZT4uc3BkIGZpbGUNCiAgICAgLSBFYWNoIGxpbmUgY29udGFpbnMgdGhlIFBQSSBiYXNlIG5hbWUsIGZvbGxvd2VkIGJ5IHRoZSBnbG9iYWwgdmFyaWFibGUgDQogICAgICAgbmFtZSBhbmQgICAgICAgIHRoZSBoZXggdmFsdWUgb2YgdGhlIFBQSSBHVUlELg0KDQpFeGFtcGxlIFBwaSBFbnRyaWVzIChOT1RFOiBUaGUgR3VpZCBlbnRyeSBpcyBhIHNpbmdsZSBsaW5lIGluIHRoZSBTUEQgZmlsZSk6DQo8UHBpRGVjbGFyYXRpb25zPg0KICA8RW50cnkgTmFtZT0iQm9vdEluUmVjb3ZlcnlNb2RlIj4NCiAgICA8Q19OYW1lPmdFZmlQZWlCb290SW5SZWNvdmVyeU1vZGVQcGlHdWlkPC9DX05hbWU+DQogICAgPEd1aWRWYWx1ZT4xN0VFNDk2QS1EOEU0LTRCOUEtOTREMS1DRTgyNzIzMDA4NTA8L0d1aWRWYWx1ZT4NCiAgICA8SGVscFRleHQvPg0KICA8L0VudHJ5Pg0KICA8RW50cnkgTmFtZT0iQ3B1SW8iPg0KICAgIDxDX05hbWU+Z0VmaVBlaUNwdUlvUHBpSW5TZXJ2aWNlVGFibGVHdWlkPC9DX05hbWU+DQogICAgPEd1aWRWYWx1ZT5FNkFGMUY3Qi1GQzNGLTQ2REEtQTgyOC1BM0I0NTdBNDQyODI8L0d1aWRWYWx1ZT4NCiAgICA8SGVscFRleHQvPg0KICA8L0VudHJ5Pg0KPC9QcGlEZWNsYXJhdGlvbnM+DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjYpIERlY2xhcmluZyBhIG5ldyBHVUlEIGluIGEgcGFja2FnZToNCiAgLSBUaGlzIHJlbGVhc2UgcmVxdWlyZXMgbWFudWFsIGVkaXRpbmcgb2YgdGhlIFNQRCBmaWxlIHRvIGluY2x1ZGUgdGhlIG5ldw0KICAgIEd1aWQuICBUaGlzIGlzIGlkZW50aWNhbCB0byBhZGRpbmcgYSBQcm90b2NvbERlY2xhcmF0aW9uIG9yIFBwaURlY2xhcmF0aW9uDQogICAgZWxlbWVudCwgYXMgZGVzY3JpYmVkIGFib3ZlLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjcpIERlY2xhcmluZyBhIG5ldyBQQ0QgZW50cnkgaW4gYSBwYWNrYWdlOg0KICAtIFRoaXMgcmVsZWFzZSByZXF1aXJlcyBtYW51YWwgZWRpdGluZyBvZiB0aGUgU1BEIGZpbGUgdG8gaW5jbHVkZSB0aGUgbmV3DQogICAgUENELiAgTmV3IFBjZCBlbnRyaWVzIGFyZSBhZGRlZCB0byB0aGUgUGNkRGVmaW5pdGlvbnMgc2VjdGlvbiBvZiB0aGUNCiAgICA8UGFja2FnZU5hbWU+LnNwZCBmaWxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBmb3IgdGhlIGZvcm1hdA0KICAgIChOT1RFOiBUaGUgaGV4IDxUb2tlbj4gdmFsdWUgbXVzdCBiZSB1bmlxdWUpOg0KDQo8UGNkRGVjbGFyYXRpb25zPg0KICA8UGNkRW50cnkgSXRlbVR5cGU9IkZJWEVEX0FUX0JVSUxEIj4NCiAgICA8Q19OYW1lPlBjZE1heGltdW1Vbmljb2RlU3RyaW5nTGVuZ3RoPC9DX05hbWU+DQogICAgPFRva2VuPjB4MDAwMDAwMDE8L1Rva2VuPg0KICAgIDxUb2tlblNwYWNlR3VpZENOYW1lPmdFZmlNZGVQa2dUb2tlblNwYWNlR3VpZDwvVG9rZW5TcGFjZUd1aWRDTmFtZT4NCiAgICA8RGF0dW1UeXBlPlVJTlQzMjwvRGF0dW1UeXBlPg0KICAgIDxWYWxpZFVzYWdlPkZJWEVEX0FUX0JVSUxEPC9WYWxpZFVzYWdlPg0KICAgIDxEZWZhdWx0VmFsdWU+MTAwMDAwMDwvRGVmYXVsdFZhbHVlPg0KICAgIDxIZWxwVGV4dD5UaGUgbWF4aW11bSBsZW5naCBmb3IgdW5pY29kZSBzdHJpbmcuPC9IZWxwVGV4dD4NCiAgPC9QY2RFbnRyeT4NCjwvUGNkRGVjbGFyYXRpb25zPg0KICANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KOCkgRGVjbGFyaW5nIGEgbmV3IExpYnJhcnkgQ2xhc3M6DQogIC0gVGhpcyByZWxlYXNlIHJlcXVpcmVzIG1hbnVhbCBlZGl0aW5nIG9mIHRoZSBTUEQgZmlsZSB0byBpbmNsdWRlIHRoZSBuZXcNCiAgICBMaWJyYXJ5IENsYXNzLiAgTmV3IExpYnJhcnkgQ2xhc3MgZW50cmllcyBhcmUgYWRkZWQgdG8gdGhlIA0KICAgIExpYnJhcnlDbGFzc0RlY2xhcmF0aW9ucyBzZWN0aW9uIG9mIHRoZSA8UGFja2FnZU5hbWU+LnNwZCBmaWxlIHVzaW5nDQogICAgdGhlIGZvbGxvd2luZyBleGFtcGxlIGZvciB0aGUgZm9ybWF0Og0KDQo8TGlicmFyeUNsYXNzRGVjbGFyYXRpb25zPg0KICA8TGlicmFyeUNsYXNzIE5hbWU9IkJhc2VMaWIiPg0KICAgIDxJbmNsdWRlSGVhZGVyPkluY2x1ZGUvTGlicmFyeS9CYXNlTGliLmg8L0luY2x1ZGVIZWFkZXI+DQogICAgPEhlbHBUZXh0Lz4NCiAgPC9MaWJyYXJ5Q2xhc3M+DQogIDxMaWJyYXJ5Q2xhc3MgTmFtZT0iQmFzZU1lbW9yeUxpYiI+DQogICAgPEluY2x1ZGVIZWFkZXI+SW5jbHVkZS9MaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaDwvSW5jbHVkZUhlYWRlcj4NCiAgICA8SGVscFRleHQvPg0KICA8L0xpYnJhcnlDbGFzcz4NCjwvTGlicmFyeUNsYXNzRGVjbGFyYXRpb25zPg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpFREsgSUkgQ2hhbmdlcyBSZWxhdGl2ZSB0byB0aGUgb3JpZ2luYWwgRURLOg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClRoZSBFREsgSUkgcmVwcmVzZW50cyBzaWduaWZpY2FudCBjaGFuZ2VzIGluIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEVESy4NClRoZXJlZm9yZSwgaXQgaXMgdmVyeSBkaWZmaWN1bHQgdG8gaXNvbGF0ZSBhbGwgb2YgdGhlIGNoYW5nZXMgb2YgdGhpcyB2ZXJzaW9uIG9mDQp0aGUgRURLIHdpdGggdGhlIG9yaWdpbmFsIEVESy4NCg0KT2YgcGFydGljdWxhciBub3RlOg0KDQoxKSBFREsgSUkgY29udGFpbnMgbmV3IGhhcmR3YXJlIGZlYXR1cmUgc3VwcG9ydCBmb3IgdGhlIElDSCBTTUJVUyBMaWJyYXJpZXMuDQogICBUaGVzZSBsaWJyYXJpZXMgYXJlIHByb3ZpZGVkIHRvIG1ha2UgTWVtb3J5IFJlZmVyZW5jZSBDb2RlIChNUkMpIGRldmVsb3BtZW50DQogICBlYXNpZXIuDQoyKSBUaGUgTURFIGxpYnJhcmllcyByZXByZXNlbnQgc2lnbmlmaWNhbnQgY2hhbmdlcyBpbiBzb3VyY2UNCiAgICh3aXRoIG9ubHkgbGltaXRlZCBjaGFuZ2VzIGluIGZ1bmN0aW9uYWxpdHkuKSAgVGhlc2UgbmV3IGxpYnJhcmllcyBjb25mb3JtDQogICB0byB0aGUgIkVESyBJSSBNb2R1bGUgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgTGlicmFyeSBTcGVjaWZpY2F0aW9uLpQgDQozKSBUaGUgRmF0IEJpbmFyeSBhbmQgdGhlIEVESyBTaGVsbCBCaW5hcnkgUGFja2FnZXMgYXJlIGZ1bmN0aW9uYWxseSBpZGVudGljYWwNCiAgIHRvIHRoZSBvcmlnaW5hbCBFREsuDQo0KSBUaGUgRURLIHRvb2xzIGRpcmVjdG9yeSBoYXMgYmVlbiBleHBhbmRlZCB0byBpbmNsdWRlIG1vcmUgdG9vbHMgYW5kIG1vcmUNCiAgIHRvb2wgZnVuY3Rpb25hbGl0eS4NCjUpIFRoZSBFREsgTlQzMiBzZWN0aW9uIGhhcyBiZWVuIHBvcnRlZCB0byB0aGUgbmV3IGJ1aWxkIHByb2Nlc3MsIGJ1dA0KICAgZnVuY3Rpb25hbGx5IHJlbWFpbnMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIEVESy4NCjYpIFRoZSBBcHBsaWNhdGlvbiAiSGVsbG9Xb3JsZCIgaGFzIGJlZW4gcG9ydGVkIHRvIEVESyBJSSBhcyB3ZWxsLg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpWaXJ1cyBzY2FubmVkIGJ5IE1jQWZlZSBWaXJ1c1NjYW4gRW50ZXJwcmlzZSA4LjAuMCwgVmlydXMgRGVmaW5pdGlvbnMgNDcxOCwgbm8NCnZpcnVzIGRldGVjdGVkLg0KDQo=