Is It Possible To Have Two Endpoints To The Same IP Address Where One Uses IP Based Authentication And The Other Requires Asterisk To Register To That System?

Home » Asterisk Users » Is It Possible To Have Two Endpoints To The Same IP Address Where One Uses IP Based Authentication And The Other Requires Asterisk To Register To That System?
Asterisk Users 8 Comments

Currently using PJSIP. First, they want me to get this working with the existing PJSIP configuration, but then setup a second box using chan_sip performing similar work.

For PJSIP… I currently have an endpoint configured to a system using IP based authentication. It is configured with a match setting in the endpoint section. All channels coming from that IP address go to this endpoint.

They want me to keep this endpoint, but add a new endpoint where we register with them.

Existing…
[transport1]
type = transport bind = 0.0.0.0
protocol = udp

[1002]
type = aor remove_existing = yes contact = sip:1002@xxx.xxx.xxx.xxx

[1002]
type = endpoint context = mycontext transport = transport1
accountcode = 6
dtmf_mode = inband device_state_busy_at = 48
force_rport = no identify_by = username from_user = 1002
disallow = all allow = ulaw acl = acl1

[identify112]
type = identify endpoint = 1002
match = 1002@xxx.xxx.xxx.xxx

I setup the registration and the endpoint.

[286]
type = aor remove_existing = yes contact = sip:286@xxx.xxx.xxx.xxx qualify_frequency = 60

[auth8]
type = auth username = 286
password = yyyyyyyyyyyyyyy

[286]
type = endpoint context = mycontext transport = transport1
outbound_auth = auth8
aors = 286
accountcode = 22
dtmf_mode = inband device_state_busy_at = 48
force_rport = no disallow = all allow = ulaw acl = acl1

[registration3]
type = registration transport = transport1
client_uri = sip:286@zzz.zzz.zzz.zzz server_uri = sip:xxx.xxx.xxx.xxx contact_user = 286
outbound_auth = auth8
expiration = 3600

The registration for the second endpoint works fine. However, when I call through the other system for 286, it is failing. For the INVITE from the other switch, the from_user varies depending on who is calling. Asterisk logs report “No matching endpoint found” when it processes the INVITE for 286.

I believe the reason INVITEs work for the other channel is because they are programmed to support the match for this IP address.

Can anyone offer some suggestions?

8 thoughts on - Is It Possible To Have Two Endpoints To The Same IP Address Where One Uses IP Based Authentication And The Other Requires Asterisk To Register To That System?

  • Check this first… identify112 probably failed to load because the match parameter can only take an ip address plus an optional netmask, or a hostname. The ‘1002@’ is invalid.

    You may be able to use the ‘line and ‘endpoint’ registration parameters…
    [registration3]
    type = registration
    … line = yes endpoint = 286

    This causes asterisk to put the encoded endpoint name in the outgoing Contact header. If the provider properly echos back Contact parameters when sending responses or new requests, asterisk will use the line parameter to match an endpoint. I’ll have to double check but I believe we do that BEFORE checking any identify object for a match.

  • VGhhbmtzIEdlb3JnZQ0KDQpJIG9yaWdpbmFsbHkgZGlkbuKAmXQgaGF2ZSB0aGUgMTAwMkAgZm9y IHRoZSBpZGVudGlmeS4gIENoYW5nZWQgdGhhdCB3aGVuIHRoaW5ncyB3ZXJlIG5vdCB3b3JraW5n LiAgSSBjaGFuZ2VkIGl0IGJhY2suDQoNClVuZm9ydHVuYXRlbHksIHRoZSBzeXN0ZW0gSSBhbSBj b25uZWN0aW5nIHdpdGggZG9lc27igJl0IHNlZW0gdG8gc3VwcG9ydCB0aGUgbGluZSBzdXBwb3J0
    LiAgTG9va2luZyBhdCB0aGUgU0lQIHBhY2tldHMsIEkgc2VlIEFzdGVyaXNrIHNlbmQgaXQuICBV
    bmZvcnR1bmF0ZWx5LCB0aGV5IGRvIG5vdCBzZW5kIHRoZSBsaW5lIGluZm9ybWF0aW9uIGFzIHBh cnQgb2YgdGhlIElOVklURS4gIEkgY2hlY2tlZCB3aXRoIHNvbWUgZGV2ZWxvcGVycyBvZiB0aGF0
    IHN5c3RlbSBhbmQgdGhleSBkbyBub3Qga25vdyBhbnl0aGluZyBhYm91dCB0aGUgbGluZSBzZXR0
    aW5nLg0KSXMgdGhlcmUgYW55IHJmY3MgSSBjb3VsZCByZWZlciB0aGVtIHRvPw0KDQoNCkZyb206
    IGFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbSBbbWFpbHRvOmFzdGVyaXNr LXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbV0gT24gQmVoYWxmIE9mIEdlb3JnZSBKb3Nl cGgNClNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAxNCwgMjAxNyAxMDo1OSBBTQ0KVG86IEFzdGVy aXNrIFVzZXJzIE1haWxpbmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Npb24NClN1Ympl Y3Q6IFJlOiBbYXN0ZXJpc2stdXNlcnNdIElzIGl0IHBvc3NpYmxlIHRvIGhhdmUgdHdvIGVuZHBv aW50cyB0byB0aGUgc2FtZSBJUCBhZGRyZXNzIHdoZXJlIG9uZSB1c2VzIElQIGJhc2VkIGF1dGhl bnRpY2F0aW9uIGFuZCB0aGUgb3RoZXIgcmVxdWlyZXMgYXN0ZXJpc2sgdG8gcmVnaXN0ZXIgdG8g dGhhdCBzeXN0ZW0/DQoNCg0KDQpPbiBXZWQsIERlYyAxMywgMjAxNyBhdCAxMDo1MSBBTSwgRGFu IENyb3BwIDxkYW5AYW10ZWxjby5jb208bWFpbHRvOmRhbkBhbXRlbGNvLmNvbT4+IHdyb3RlOg0K
    Q3VycmVudGx5IHVzaW5nIFBKU0lQLiAgRmlyc3QsIHRoZXkgd2FudCBtZSB0byBnZXQgdGhpcyB3
    b3JraW5nIHdpdGggdGhlIGV4aXN0aW5nIFBKU0lQIGNvbmZpZ3VyYXRpb24sIGJ1dCB0aGVuIHNl dHVwIGEgc2Vjb25kIGJveCB1c2luZyBjaGFuX3NpcCBwZXJmb3JtaW5nIHNpbWlsYXIgd29yay4N
    Cg0KRm9yIFBKU0lQ4oCmDQpJIGN1cnJlbnRseSBoYXZlIGFuIGVuZHBvaW50IGNvbmZpZ3VyZWQg dG8gYSBzeXN0ZW0gdXNpbmcgSVAgYmFzZWQgYXV0aGVudGljYXRpb24uICBJdCBpcyBjb25maWd1
    cmVkIHdpdGggYSBtYXRjaCBzZXR0aW5nIGluIHRoZSBlbmRwb2ludCBzZWN0aW9uLg0KQWxsIGNo YW5uZWxzIGNvbWluZyBmcm9tIHRoYXQgSVAgYWRkcmVzcyBnbyB0byB0aGlzIGVuZHBvaW50Lg0K
    DQpUaGV5IHdhbnQgbWUgdG8ga2VlcCB0aGlzIGVuZHBvaW50LCBidXQgYWRkIGEgbmV3IGVuZHBv aW50IHdoZXJlIHdlIHJlZ2lzdGVyIHdpdGggdGhlbS4NCg0KRXhpc3RpbmfigKYNClt0cmFuc3Bv cnQxXQ0KdHlwZSA9IHRyYW5zcG9ydA0KYmluZCA9IDAuMC4wLjANCnByb3RvY29sID0gdWRwDQoN
    ClsxMDAyXQ0KdHlwZSA9IGFvcg0KcmVtb3ZlX2V4aXN0aW5nID0geWVzDQpjb250YWN0ID0gc2lw OjEwMDJAeHh4Lnh4eC54eHgueHh4DQoNClsxMDAyXQ0KdHlwZSA9IGVuZHBvaW50DQpjb250ZXh0
    ID0gbXljb250ZXh0DQp0cmFuc3BvcnQgPSB0cmFuc3BvcnQxDQphY2NvdW50Y29kZSA9IDYNCmR0
    bWZfbW9kZSA9IGluYmFuZA0KZGV2aWNlX3N0YXRlX2J1c3lfYXQgPSA0OA0KZm9yY2VfcnBvcnQg PSBubw0KaWRlbnRpZnlfYnkgPSB1c2VybmFtZQ0KZnJvbV91c2VyID0gMTAwMg0KZGlzYWxsb3cg PSBhbGwNCmFsbG93ID0gdWxhdw0KYWNsID0gYWNsMQ0KDQpbaWRlbnRpZnkxMTJdDQp0eXBlID0g aWRlbnRpZnkNCmVuZHBvaW50ID0gMTAwMg0KbWF0Y2ggPSAxMDAyQHh4eC54eHgueHh4Lnh4eDxt YWlsdG86MTAwMkB4eHgueHh4Lnh4eC54eHg+DQoNCg0KQ2hlY2sgdGhpcyBmaXJzdC4uLiAgaWRl bnRpZnkxMTIgcHJvYmFibHkgZmFpbGVkIHRvIGxvYWQgYmVjYXVzZSB0aGUgbWF0Y2ggcGFyYW1l dGVyIGNhbiBvbmx5IHRha2UgYW4gaXAgYWRkcmVzcw0KcGx1cyBhbiBvcHRpb25hbCBuZXRtYXNr LCBvciBhIGhvc3RuYW1lLiAgVGhlICcxMDAyQCcgaXMgaW52YWxpZC4NCg0KDQoNCg0KSSBzZXR1
    cCB0aGUgcmVnaXN0cmF0aW9uIGFuZCB0aGUgZW5kcG9pbnQuDQoNClsyODZdDQp0eXBlID0gYW9y DQpyZW1vdmVfZXhpc3RpbmcgPSB5ZXMNCmNvbnRhY3QgPSBzaXA6Mjg2QHh4eC54eHgueHh4Lnh4
    eA0KcXVhbGlmeV9mcmVxdWVuY3kgPSA2MA0KDQpbYXV0aDhdDQp0eXBlID0gYXV0aA0KdXNlcm5h bWUgPSAyODYNCnBhc3N3b3JkID0geXl5eXl5eXl5eXl5eXl5DQoNClsyODZdDQp0eXBlID0gZW5k cG9pbnQNCmNvbnRleHQgPSBteWNvbnRleHQNCnRyYW5zcG9ydCA9IHRyYW5zcG9ydDENCm91dGJv dW5kX2F1dGggPSBhdXRoOA0KYW9ycyA9IDI4Ng0KYWNjb3VudGNvZGUgPSAyMg0KZHRtZl9tb2Rl ID0gaW5iYW5kDQpkZXZpY2Vfc3RhdGVfYnVzeV9hdCA9IDQ4DQpmb3JjZV9ycG9ydCA9IG5vDQpk aXNhbGxvdyA9IGFsbA0KYWxsb3cgPSB1bGF3DQphY2wgPSBhY2wxDQoNCltyZWdpc3RyYXRpb24z XQ0KdHlwZSA9IHJlZ2lzdHJhdGlvbg0KdHJhbnNwb3J0ID0gdHJhbnNwb3J0MQ0KY2xpZW50X3Vy aSA9IHNpcDoyODZAenp6Lnp6ei56enouenp6DQpzZXJ2ZXJfdXJpID0gc2lwOnh4eC54eHgueHh4
    Lnh4eA0KY29udGFjdF91c2VyID0gMjg2DQpvdXRib3VuZF9hdXRoID0gYXV0aDgNCmV4cGlyYXRp b24gPSAzNjAwDQoNClRoZSByZWdpc3RyYXRpb24gZm9yIHRoZSBzZWNvbmQgZW5kcG9pbnQgd29y a3MgZmluZS4gIEhvd2V2ZXIsIHdoZW4gSSBjYWxsIHRocm91Z2ggdGhlIG90aGVyIHN5c3RlbSBm b3IgMjg2LCBpdCBpcyBmYWlsaW5nLiAgRm9yIHRoZSBJTlZJVEUgZnJvbSB0aGUgb3RoZXIgc3dp dGNoLCB0aGUgZnJvbV91c2VyIHZhcmllcyBkZXBlbmRpbmcgb24gd2hvIGlzIGNhbGxpbmcuICBB
    c3RlcmlzayBsb2dzIHJlcG9ydCDigJxObyBtYXRjaGluZyBlbmRwb2ludCBmb3VuZOKAnSB3aGVu IGl0IHByb2Nlc3NlcyB0aGUgSU5WSVRFIGZvciAyODYuDQoNCkkgYmVsaWV2ZSB0aGUgcmVhc29u IElOVklURXMgd29yayBmb3IgdGhlIG90aGVyIGNoYW5uZWwgaXMgYmVjYXVzZSB0aGV5IGFyZSBw cm9ncmFtbWVkIHRvIHN1cHBvcnQgdGhlIG1hdGNoIGZvciB0aGlzIElQIGFkZHJlc3MuDQoNCkNh biBhbnlvbmUgb2ZmZXIgc29tZSBzdWdnZXN0aW9ucz8NCg0KWW91IG1heSBiZSBhYmxlIHRvIHVz ZSB0aGUgJ2xpbmUgYW5kICdlbmRwb2ludCcgcmVnaXN0cmF0aW9uIHBhcmFtZXRlcnMuLi4NClty ZWdpc3RyYXRpb24zXQ0KdHlwZSA9IHJlZ2lzdHJhdGlvbg0KLi4uDQpsaW5lID0geWVzDQplbmRw b2ludCA9IDI4Ng0KDQpUaGlzIGNhdXNlcyBhc3RlcmlzayB0byBwdXQgdGhlIGVuY29kZWQgZW5k cG9pbnQgbmFtZSBpbiB0aGUgb3V0Z29pbmcgQ29udGFjdCBoZWFkZXIuICBJZiB0aGUgcHJvdmlk ZXIgcHJvcGVybHkgZWNob3MgYmFjayBDb250YWN0IHBhcmFtZXRlcnMgd2hlbiBzZW5kaW5nIHJl c3BvbnNlcyBvciBuZXcgcmVxdWVzdHMsIGFzdGVyaXNrIHdpbGwgdXNlIHRoZSBsaW5lIHBhcmFt ZXRlciB0byBtYXRjaCBhbiBlbmRwb2ludC4gIEknbGwgaGF2ZSB0byBkb3VibGUgY2hlY2sgYnV0
    IEkgYmVsaWV2ZSB3ZSBkbyB0aGF0IEJFRk9SRSBjaGVja2luZyBhbnkgaWRlbnRpZnkgb2JqZWN0
    IGZvciBhIG1hdGNoLg0KDQoNCg0KDQoNCi0tDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCi0tIEJhbmR3aWR0aCBh bmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbSAtLQ0K
    DQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9ydW0gYXQ6IGh0dHBzOi8v Y29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNrPyBTdGFydCBoZXJlOg0K
    ICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3BsYXkvQVNUL0dldHRpbmcr U3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRvIFVOU1VCU0NSSUJFIG9y IHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1h bi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw0KDQoNCg0KLS0NCkdlb3JnZSBKb3NlcGgNCkRpZ2l1
    bSwgSW5jLiB8IFNvZnR3YXJlIERldmVsb3Blcg0KNDQ1IEphbiBEYXZpcyBEcml2ZSBOVyAtIEh1
    bnRzdmlsbGUsIEFMIDM1ODA2IC0gVVMNCkNoZWNrIHVzIG91dCBhdDogd3d3LmRpZ2l1bS5jb208
    aHR0cDovL3d3dy5kaWdpdW0uY29tLz4gJiB3d3cuYXN0ZXJpc2sub3JnPGh0dHA6Ly93d3cuYXN0
    ZXJpc2sub3JnLz4NCg0K

  • “line” support doesn’t have an explicit RFC. It relies on the remote side sending back the contents of the registered Contact address as they are supposed to when sending the INVITE. In practice some do, some don’t.


    Joshua Colp Digium, Inc. | Senior Software Developer
    445 Jan Davis Drive NW – Huntsville, AL 35806 – US
    Check us out at: http://www.digium.com & http://www.asterisk.org

  • Yeah, I’ve found that some providers do and some providers don’t.

    https://tools.ietf.org/html/rfc3261#section-19.1

    An implementation MUST include any provided transport, maddr, ttl, or user parameter in the Request-URI of the formed request. If the URI
    contains a method parameter, its value MUST be used as the method of the request. The method parameter MUST NOT be placed in the Request-URI.

    *​​Unknown URI parameters MUST be placed in the message’sRequest-URI*.

    The identify object also has the capability to match against a specific header and value but it looks like it only tries to match on header if it can’t find a match by ip address. Here’s some info on it anyway.

    If you’re provider puts something unique and constant in the headers, like a User-Agent string that doesn’t change, you can also try using the
    “match_header” parameter to an identify object.

    [my_provider]
    type = identify match_header = User-Agent: Something Unique 1.0.0
    endpoint = provider

    It has to be an exact match though, no wildcards or regular expressions.

    I opened an issue[1] on separating ip matching from header matching so they can be re-ordered.

    [1] https://issues.asterisk.org/jira/browse/ASTERISK-27491

  • VGhhbmsgeW91IEdlb3JnZS4NCg0KSSB3aWxsIHBhc3MgYWxvbmcgdGhlIHJmYyBpbmZvcm1hdGlv biB0byB0aG9zZSByZXNwb25zaWJsZSBmb3IgdGhlIG90aGVyIHN3aXRjaC4NCg0KSSBtaXNzZWQg dGhlIG1hdGNoX2hlYWRlciBhZGRpdGlvbiB0byBBc3Rlcmlzay4NClVuZm9ydHVuYXRlbHksIHRo ZSBvbmx5IGhlYWRlciBmaWVsZCB0aGF0IHNlZW1zIGFwcHJvcHJpYXRlIGlzIHRoZSBUbyBoZWFk ZXIuDQoNCk9uIGEgc2VwYXJhdGUgYm94IEkgYW0gbm93IHRyeWluZyB0byBjb25maWd1cmUgdGhl IGVuZHBvaW50IHJlY29nbml0aW9uLiAgUGxhbm5pbmcgb24gbXVsdGlwbGUgZW5kcG9pbnRzIHRv IHRoZSBzYW1lIHN3aXRjaCwgc28gSSBhbSB0cnlpbmcgdG8gdXNlIHRoZSBtYXRjaF9oZWFkZXIg ZmllbGQuDQoNCkkgdHJpZWQgcHJvZ3JhbW1pbmcgdGhlIG1hdGNoX2hlYWRlciB3aXRoIHRoZSBU
    bzogaGVhZGVyIGluZm9ybWF0aW9uLiAgVW5mb3J0dW5hdGVseSwgaXQgZGlkbuKAmXQgd29yay4g IEFwcGFyZW50bHkgdGhlIFRvIGhlYWRlciBkb2VzbuKAmXQgd29yayB3aXRoIHRoZSBtYXRjaF9o ZWFkZXIgZmllbGQuDQpUaGUgQXN0ZXJpc2sgZGVidWcgc2hvd3MgdGhlIGZvbGxvd2luZ+KApg0K
    DQpERUJVR1syNzc4XSByZXNfcGpzaXBfZW5kcG9pbnRfaWRlbnRpZmllcl9pcC5jOiBTSVAgbWVz c2FnZSBjb250YWlucyBoZWFkZXIgJ1RvJyBidXQgdmFsdWUgJycgZG9lcyBub3QgbWF0Y2ggdmFs dWUgJzxzaXA6Mjg2QHh4eC54eHgueHh4Lnh4eD4nIGZvciBlbmRwb2ludCAnMjg2Jw0KDQpGcm9t OiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb20gW21haWx0bzphc3Rlcmlz ay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb21dIE9uIEJlaGFsZiBPZiBHZW9yZ2UgSm9z ZXBoDQpTZW50OiBUdWVzZGF5LCBEZWNlbWJlciAxOSwgMjAxNyA3OjU3IEFNDQpUbzogQXN0ZXJp c2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbg0KU3ViamVj dDogUmU6IFthc3Rlcmlzay11c2Vyc10gSXMgaXQgcG9zc2libGUgdG8gaGF2ZSB0d28gZW5kcG9p bnRzIHRvIHRoZSBzYW1lIElQIGFkZHJlc3Mgd2hlcmUgb25lIHVzZXMgSVAgYmFzZWQgYXV0aGVu dGljYXRpb24gYW5kIHRoZSBvdGhlciByZXF1aXJlcyBhc3RlcmlzayB0byByZWdpc3RlciB0byB0
    aGF0IHN5c3RlbT8NCg0KDQoNCk9uIE1vbiwgRGVjIDE4LCAyMDE3IGF0IDk6MDQgQU0sIERhbiBD
    cm9wcCA8ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5AYW10ZWxjby5jb20+PiB3cm90ZToNCg0K
    VGhhbmtzIEdlb3JnZQ0KDQoNCg0KSSBvcmlnaW5hbGx5IGRpZG7igJl0IGhhdmUgdGhlIDEwMDJA
    IGZvciB0aGUgaWRlbnRpZnkuICBDaGFuZ2VkIHRoYXQgd2hlbiB0aGluZ3Mgd2VyZSBub3Qgd29y a2luZy4gIEkgY2hhbmdlZCBpdCBiYWNrLg0KDQoNCg0KVW5mb3J0dW5hdGVseSwgdGhlIHN5c3Rl bSBJIGFtIGNvbm5lY3Rpbmcgd2l0aCBkb2VzbuKAmXQgc2VlbSB0byBzdXBwb3J0IHRoZSBsaW5l IHN1cHBvcnQuICBMb29raW5nIGF0IHRoZSBTSVAgcGFja2V0cywgSSBzZWUgQXN0ZXJpc2sgc2Vu ZCBpdC4gIFVuZm9ydHVuYXRlbHksIHRoZXkgZG8gbm90IHNlbmQgdGhlIGxpbmUgaW5mb3JtYXRp b24gYXMgcGFydCBvZiB0aGUgSU5WSVRFLiAgSSBjaGVja2VkIHdpdGggc29tZSBkZXZlbG9wZXJz IG9mIHRoYXQgc3lzdGVtIGFuZCB0aGV5IGRvIG5vdCBrbm93IGFueXRoaW5nIGFib3V0IHRoZSBs aW5lIHNldHRpbmcuDQoNCklzIHRoZXJlIGFueSByZmNzIEkgY291bGQgcmVmZXIgdGhlbSB0bz8N
    Cg0KWWVhaCwgSSd2ZSBmb3VuZCB0aGF0IHNvbWUgcHJvdmlkZXJzIGRvIGFuZCBzb21lIHByb3Zp ZGVycyBkb24ndC4NCg0KDQpodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzI2MSNzZWN0
    aW9uLTE5LjENCg0KQW4gaW1wbGVtZW50YXRpb24gTVVTVCBpbmNsdWRlIGFueSBwcm92aWRlZCB0
    cmFuc3BvcnQsIG1hZGRyLCB0dGwsIG9yDQp1c2VyIHBhcmFtZXRlciBpbiB0aGUgUmVxdWVzdC1V
    Ukkgb2YgdGhlIGZvcm1lZCByZXF1ZXN0LiBJZiB0aGUgVVJJDQpjb250YWlucyBhIG1ldGhvZCBw YXJhbWV0ZXIsIGl0cyB2YWx1ZSBNVVNUIGJlIHVzZWQgYXMgdGhlIG1ldGhvZCBvZg0KdGhlIHJl cXVlc3QuIFRoZSBtZXRob2QgcGFyYW1ldGVyIE1VU1QgTk9UIGJlIHBsYWNlZCBpbiB0aGUNClJl cXVlc3QtVVJJLg0K4oCL4oCLDQpVbmtub3duIFVSSSBwYXJhbWV0ZXJzIE1VU1QgYmUgcGxhY2Vk IGluIHRoZSBtZXNzYWdlJ3MNClJlcXVlc3QtVVJJLg0KDQpUaGUgaWRlbnRpZnkgb2JqZWN0IGFs c28gaGFzIHRoZSBjYXBhYmlsaXR5IHRvIG1hdGNoIGFnYWluc3QgYSBzcGVjaWZpYyBoZWFkZXIg YW5kIHZhbHVlIGJ1dCBpdCBsb29rcyBsaWtlIGl0IG9ubHkgdHJpZXMgdG8gbWF0Y2ggb24gaGVh ZGVyIGlmIGl0IGNhbid0IGZpbmQgYSBtYXRjaCBieSBpcCBhZGRyZXNzLiAgSGVyZSdzIHNvbWUg aW5mbyBvbiBpdCBhbnl3YXkuDQoNCklmIHlvdSdyZSBwcm92aWRlciBwdXRzIHNvbWV0aGluZyB1
    bmlxdWUgYW5kIGNvbnN0YW50IGluIHRoZSBoZWFkZXJzLCBsaWtlIGEgVXNlci1BZ2VudCBzdHJp bmcgdGhhdCBkb2Vzbid0IGNoYW5nZSwgeW91IGNhbiBhbHNvIHRyeSB1c2luZyB0aGUgIm1hdGNo X2hlYWRlciIgcGFyYW1ldGVyIHRvIGFuIGlkZW50aWZ5IG9iamVjdC4NCg0KW215X3Byb3ZpZGVy XQ0KdHlwZSA9IGlkZW50aWZ5DQptYXRjaF9oZWFkZXIgPSBVc2VyLUFnZW50OiBTb21ldGhpbmcg VW5pcXVlIDEuMC4wDQplbmRwb2ludCA9IHByb3ZpZGVyDQoNCkl0IGhhcyB0byBiZSBhbiBleGFj dCBtYXRjaCB0aG91Z2gsIG5vIHdpbGRjYXJkcyBvciByZWd1bGFyIGV4cHJlc3Npb25zLg0KDQpJ
    IG9wZW5lZCBhbiBpc3N1ZVsxXSBvbiBzZXBhcmF0aW5nIGlwIG1hdGNoaW5nIGZyb20gaGVhZGVy IG1hdGNoaW5nIHNvIHRoZXkgY2FuIGJlIHJlLW9yZGVyZWQuDQoNCg0KDQoNClsxXSBodHRwczov L2lzc3Vlcy5hc3Rlcmlzay5vcmcvamlyYS9icm93c2UvQVNURVJJU0stMjc0OTENCg0KDQoNCg0K
    DQoNCkZyb206IGFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86
    YXN0ZXJpc2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29tPiBbbWFpbHRvOmFzdGVyaXNr LXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91
    bmNlc0BsaXN0cy5kaWdpdW0uY29tPl0gT24gQmVoYWxmIE9mIEdlb3JnZSBKb3NlcGgNClNlbnQ6
    IFRodXJzZGF5LCBEZWNlbWJlciAxNCwgMjAxNyAxMDo1OSBBTQ0KVG86IEFzdGVyaXNrIFVzZXJz IE1haWxpbmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Npb24NClN1YmplY3Q6IFJlOiBb YXN0ZXJpc2stdXNlcnNdIElzIGl0IHBvc3NpYmxlIHRvIGhhdmUgdHdvIGVuZHBvaW50cyB0byB0
    aGUgc2FtZSBJUCBhZGRyZXNzIHdoZXJlIG9uZSB1c2VzIElQIGJhc2VkIGF1dGhlbnRpY2F0aW9u IGFuZCB0aGUgb3RoZXIgcmVxdWlyZXMgYXN0ZXJpc2sgdG8gcmVnaXN0ZXIgdG8gdGhhdCBzeXN0
    ZW0/DQoNCg0KDQoNCg0KDQoNCk9uIFdlZCwgRGVjIDEzLCAyMDE3IGF0IDEwOjUxIEFNLCBEYW4g Q3JvcHAgPGRhbkBhbXRlbGNvLmNvbTxtYWlsdG86ZGFuQGFtdGVsY28uY29tPj4gd3JvdGU6DQoN
    CkN1cnJlbnRseSB1c2luZyBQSlNJUC4gIEZpcnN0LCB0aGV5IHdhbnQgbWUgdG8gZ2V0IHRoaXMg d29ya2luZyB3aXRoIHRoZSBleGlzdGluZyBQSlNJUCBjb25maWd1cmF0aW9uLCBidXQgdGhlbiBz ZXR1cCBhIHNlY29uZCBib3ggdXNpbmcgY2hhbl9zaXAgcGVyZm9ybWluZyBzaW1pbGFyIHdvcmsu DQoNCg0KDQpGb3IgUEpTSVDigKYNCg0KSSBjdXJyZW50bHkgaGF2ZSBhbiBlbmRwb2ludCBjb25m aWd1cmVkIHRvIGEgc3lzdGVtIHVzaW5nIElQIGJhc2VkIGF1dGhlbnRpY2F0aW9uLiAgSXQgaXMg Y29uZmlndXJlZCB3aXRoIGEgbWF0Y2ggc2V0dGluZyBpbiB0aGUgZW5kcG9pbnQgc2VjdGlvbi4N
    Cg0KQWxsIGNoYW5uZWxzIGNvbWluZyBmcm9tIHRoYXQgSVAgYWRkcmVzcyBnbyB0byB0aGlzIGVu ZHBvaW50Lg0KDQoNCg0KVGhleSB3YW50IG1lIHRvIGtlZXAgdGhpcyBlbmRwb2ludCwgYnV0IGFk ZCBhIG5ldyBlbmRwb2ludCB3aGVyZSB3ZSByZWdpc3RlciB3aXRoIHRoZW0uDQoNCg0KDQpFeGlz dGluZ+KApg0KDQpbdHJhbnNwb3J0MV0NCg0KdHlwZSA9IHRyYW5zcG9ydA0KDQpiaW5kID0gMC4w LjAuMA0KDQpwcm90b2NvbCA9IHVkcA0KDQoNCg0KWzEwMDJdDQoNCnR5cGUgPSBhb3INCg0KcmVt b3ZlX2V4aXN0aW5nID0geWVzDQoNCmNvbnRhY3QgPSBzaXA6MTAwMkB4eHgueHh4Lnh4eC54eHgN
    Cg0KDQoNClsxMDAyXQ0KDQp0eXBlID0gZW5kcG9pbnQNCg0KY29udGV4dCA9IG15Y29udGV4dA0K
    DQp0cmFuc3BvcnQgPSB0cmFuc3BvcnQxDQoNCmFjY291bnRjb2RlID0gNg0KDQpkdG1mX21vZGUg PSBpbmJhbmQNCg0KZGV2aWNlX3N0YXRlX2J1c3lfYXQgPSA0OA0KDQpmb3JjZV9ycG9ydCA9IG5v DQoNCmlkZW50aWZ5X2J5ID0gdXNlcm5hbWUNCg0KZnJvbV91c2VyID0gMTAwMg0KDQpkaXNhbGxv dyA9IGFsbA0KDQphbGxvdyA9IHVsYXcNCg0KYWNsID0gYWNsMQ0KDQoNCg0KW2lkZW50aWZ5MTEy XQ0KDQp0eXBlID0gaWRlbnRpZnkNCg0KZW5kcG9pbnQgPSAxMDAyDQoNCm1hdGNoID0gMTAwMkB4
    eHgueHh4Lnh4eC54eHg8bWFpbHRvOjEwMDJAeHh4Lnh4eC54eHgueHh4Pg0KDQoNCg0KDQoNCkNo ZWNrIHRoaXMgZmlyc3QuLi4gIGlkZW50aWZ5MTEyIHByb2JhYmx5IGZhaWxlZCB0byBsb2FkIGJl Y2F1c2UgdGhlIG1hdGNoIHBhcmFtZXRlciBjYW4gb25seSB0YWtlIGFuIGlwIGFkZHJlc3MNCg0K
    cGx1cyBhbiBvcHRpb25hbCBuZXRtYXNrLCBvciBhIGhvc3RuYW1lLiAgVGhlICcxMDAyQCcgaXMg aW52YWxpZC4NCg0KDQoNCg0KDQoNCg0KDQoNCkkgc2V0dXAgdGhlIHJlZ2lzdHJhdGlvbiBhbmQg dGhlIGVuZHBvaW50Lg0KDQoNCg0KWzI4Nl0NCg0KdHlwZSA9IGFvcg0KDQpyZW1vdmVfZXhpc3Rp bmcgPSB5ZXMNCg0KY29udGFjdCA9IHNpcDoyODZAeHh4Lnh4eC54eHgueHh4DQoNCnF1YWxpZnlf ZnJlcXVlbmN5ID0gNjANCg0KDQoNClthdXRoOF0NCg0KdHlwZSA9IGF1dGgNCg0KdXNlcm5hbWUg PSAyODYNCg0KcGFzc3dvcmQgPSB5eXl5eXl5eXl5eXl5eXkNCg0KDQoNClsyODZdDQoNCnR5cGUg PSBlbmRwb2ludA0KDQpjb250ZXh0ID0gbXljb250ZXh0DQoNCnRyYW5zcG9ydCA9IHRyYW5zcG9y dDENCg0Kb3V0Ym91bmRfYXV0aCA9IGF1dGg4DQoNCmFvcnMgPSAyODYNCg0KYWNjb3VudGNvZGUg PSAyMg0KDQpkdG1mX21vZGUgPSBpbmJhbmQNCg0KZGV2aWNlX3N0YXRlX2J1c3lfYXQgPSA0OA0K
    DQpmb3JjZV9ycG9ydCA9IG5vDQoNCmRpc2FsbG93ID0gYWxsDQoNCmFsbG93ID0gdWxhdw0KDQph Y2wgPSBhY2wxDQoNCg0KDQpbcmVnaXN0cmF0aW9uM10NCg0KdHlwZSA9IHJlZ2lzdHJhdGlvbg0K
    DQp0cmFuc3BvcnQgPSB0cmFuc3BvcnQxDQoNCmNsaWVudF91cmkgPSBzaXA6Mjg2QHp6ei56enou enp6Lnp6eg0KDQpzZXJ2ZXJfdXJpID0gc2lwOnh4eC54eHgueHh4Lnh4eA0KDQpjb250YWN0X3Vz ZXIgPSAyODYNCg0Kb3V0Ym91bmRfYXV0aCA9IGF1dGg4DQoNCmV4cGlyYXRpb24gPSAzNjAwDQoN
    Cg0KDQpUaGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgc2Vjb25kIGVuZHBvaW50IHdvcmtzIGZpbmUu ICBIb3dldmVyLCB3aGVuIEkgY2FsbCB0aHJvdWdoIHRoZSBvdGhlciBzeXN0ZW0gZm9yIDI4Niwg aXQgaXMgZmFpbGluZy4gIEZvciB0aGUgSU5WSVRFIGZyb20gdGhlIG90aGVyIHN3aXRjaCwgdGhl IGZyb21fdXNlciB2YXJpZXMgZGVwZW5kaW5nIG9uIHdobyBpcyBjYWxsaW5nLiAgQXN0ZXJpc2sg bG9ncyByZXBvcnQg4oCcTm8gbWF0Y2hpbmcgZW5kcG9pbnQgZm91bmTigJ0gd2hlbiBpdCBwcm9j ZXNzZXMgdGhlIElOVklURSBmb3IgMjg2Lg0KDQoNCg0KSSBiZWxpZXZlIHRoZSByZWFzb24gSU5W
    SVRFcyB3b3JrIGZvciB0aGUgb3RoZXIgY2hhbm5lbCBpcyBiZWNhdXNlIHRoZXkgYXJlIHByb2dy YW1tZWQgdG8gc3VwcG9ydCB0aGUgbWF0Y2ggZm9yIHRoaXMgSVAgYWRkcmVzcy4NCg0KDQoNCkNh biBhbnlvbmUgb2ZmZXIgc29tZSBzdWdnZXN0aW9ucz8NCg0KDQoNCllvdSBtYXkgYmUgYWJsZSB0
    byB1c2UgdGhlICdsaW5lIGFuZCAnZW5kcG9pbnQnIHJlZ2lzdHJhdGlvbiBwYXJhbWV0ZXJzLi4u DQoNCltyZWdpc3RyYXRpb24zXQ0KDQp0eXBlID0gcmVnaXN0cmF0aW9uDQoNCi4uLg0KDQpsaW5l ID0geWVzDQoNCmVuZHBvaW50ID0gMjg2DQoNCg0KDQpUaGlzIGNhdXNlcyBhc3RlcmlzayB0byBw dXQgdGhlIGVuY29kZWQgZW5kcG9pbnQgbmFtZSBpbiB0aGUgb3V0Z29pbmcgQ29udGFjdCBoZWFk ZXIuICBJZiB0aGUgcHJvdmlkZXIgcHJvcGVybHkgZWNob3MgYmFjayBDb250YWN0IHBhcmFtZXRl cnMgd2hlbiBzZW5kaW5nIHJlc3BvbnNlcyBvciBuZXcgcmVxdWVzdHMsIGFzdGVyaXNrIHdpbGwg dXNlIHRoZSBsaW5lIHBhcmFtZXRlciB0byBtYXRjaCBhbiBlbmRwb2ludC4gIEknbGwgaGF2ZSB0
    byBkb3VibGUgY2hlY2sgYnV0IEkgYmVsaWV2ZSB3ZSBkbyB0aGF0IEJFRk9SRSBjaGVja2luZyBh bnkgaWRlbnRpZnkgb2JqZWN0IGZvciBhIG1hdGNoLg0KDQoNCg0KDQoNCg0KDQoNCg0KLS0NCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KLS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVkIGJ5IGh0dHA6
    Ly93d3cuYXBpLWRpZ2l0YWwuY29tIC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFzdGVyaXNrIGNv bW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3JnLw0KDQpOZXcg dG8gQXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0ZXJpc2sub3Jn L3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVzZXJzIG1haWxp bmcgbGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6DQogICBodHRw Oi8vbGlzdHMuZGlnaXVtLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVzZXJzDQoNCg0K
    DQoNCg0KLS0NCg0KR2VvcmdlIEpvc2VwaA0KRGlnaXVtLCBJbmMuIHwgU29mdHdhcmUgRGV2ZWxv cGVyDQo0NDUgSmFuIERhdmlzIERyaXZlIE5XIC0gSHVudHN2aWxsZSwgQUwgMzU4MDYgLSBVUw0K
    Q2hlY2sgdXMgb3V0IGF0OiB3d3cuZGlnaXVtLmNvbTxodHRwOi8vd3d3LmRpZ2l1bS5jb20vPiAm IHd3dy5hc3Rlcmlzay5vcmc8aHR0cDovL3d3dy5hc3Rlcmlzay5vcmcvPg0KDQoNCg0KLS0NCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXw0KLS0gQmFuZHdpZHRoIGFuZCBDb2xvY2F0aW9uIFByb3ZpZGVkIGJ5IGh0dHA6
    Ly93d3cuYXBpLWRpZ2l0YWwuY29tIC0tDQoNCkNoZWNrIG91dCB0aGUgbmV3IEFzdGVyaXNrIGNv bW11bml0eSBmb3J1bSBhdDogaHR0cHM6Ly9jb21tdW5pdHkuYXN0ZXJpc2sub3JnLw0KDQpOZXcg dG8gQXN0ZXJpc2s/IFN0YXJ0IGhlcmU6DQogICAgICBodHRwczovL3dpa2kuYXN0ZXJpc2sub3Jn L3dpa2kvZGlzcGxheS9BU1QvR2V0dGluZytTdGFydGVkDQoNCmFzdGVyaXNrLXVzZXJzIG1haWxp bmcgbGlzdA0KVG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6DQogICBodHRw Oi8vbGlzdHMuZGlnaXVtLmNvbS9tYWlsbWFuL2xpc3RpbmZvL2FzdGVyaXNrLXVzZXJzDQoNCg0K
    DQotLQ0KR2VvcmdlIEpvc2VwaA0KRGlnaXVtLCBJbmMuIHwgU29mdHdhcmUgRGV2ZWxvcGVyDQo0
    NDUgSmFuIERhdmlzIERyaXZlIE5XIC0gSHVudHN2aWxsZSwgQUwgMzU4MDYgLSBVUw0KQ2hlY2sg dXMgb3V0IGF0OiB3d3cuZGlnaXVtLmNvbTxodHRwOi8vd3d3LmRpZ2l1bS5jb20vPiAmIHd3dy5h c3Rlcmlzay5vcmc8aHR0cDovL3d3dy5hc3Rlcmlzay5vcmcvPg0KDQo

  • VGhhbmsgeW91IEdlb3JnZQ0KDQpGcm9tOiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRp Z2l1bS5jb20gW21haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb21d IE9uIEJlaGFsZiBPZiBHZW9yZ2UgSm9zZXBoDQpTZW50OiBUaHVyc2RheSwgSmFudWFyeSAwNCwg MjAxOCA4OjA5IFBNDQpUbzogQXN0ZXJpc2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9uLUNvbW1l cmNpYWwgRGlzY3Vzc2lvbg0KU3ViamVjdDogUmU6IFthc3Rlcmlzay11c2Vyc10gSXMgaXQgcG9z c2libGUgdG8gaGF2ZSB0d28gZW5kcG9pbnRzIHRvIHRoZSBzYW1lIElQIGFkZHJlc3Mgd2hlcmUg b25lIHVzZXMgSVAgYmFzZWQgYXV0aGVudGljYXRpb24gYW5kIHRoZSBvdGhlciByZXF1aXJlcyBh c3RlcmlzayB0byByZWdpc3RlciB0byB0aGF0IHN5c3RlbT8NCg0KDQoNCk9uIFRodSwgSmFuIDQs IDIwMTggYXQgMTE6MDcgQU0sIERhbiBDcm9wcCA8ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5A
    YW10ZWxjby5jb20+PiB3cm90ZToNCg0KVGhhbmsgeW91IEdlb3JnZS4NCg0KDQoNCkkgd2lsbCBw YXNzIGFsb25nIHRoZSByZmMgaW5mb3JtYXRpb24gdG8gdGhvc2UgcmVzcG9uc2libGUgZm9yIHRo ZSBvdGhlciBzd2l0Y2guDQoNCg0KDQpJIG1pc3NlZCB0aGUgbWF0Y2hfaGVhZGVyIGFkZGl0aW9u IHRvIEFzdGVyaXNrLg0KDQpVbmZvcnR1bmF0ZWx5LCB0aGUgb25seSBoZWFkZXIgZmllbGQgdGhh dCBzZWVtcyBhcHByb3ByaWF0ZSBpcyB0aGUgVG8gaGVhZGVyLg0KDQoNCg0KT24gYSBzZXBhcmF0
    ZSBib3ggSSBhbSBub3cgdHJ5aW5nIHRvIGNvbmZpZ3VyZSB0aGUgZW5kcG9pbnQgcmVjb2duaXRp b24uICBQbGFubmluZyBvbiBtdWx0aXBsZSBlbmRwb2ludHMgdG8gdGhlIHNhbWUgc3dpdGNoLCBz byBJIGFtIHRyeWluZyB0byB1c2UgdGhlIG1hdGNoX2hlYWRlciBmaWVsZC4NCg0KDQoNCkkgdHJp ZWQgcHJvZ3JhbW1pbmcgdGhlIG1hdGNoX2hlYWRlciB3aXRoIHRoZSBUbzogaGVhZGVyIGluZm9y bWF0aW9uLiAgVW5mb3J0dW5hdGVseSwgaXQgZGlkbuKAmXQgd29yay4gIEFwcGFyZW50bHkgdGhl IFRvIGhlYWRlciBkb2VzbuKAmXQgd29yayB3aXRoIHRoZSBtYXRjaF9oZWFkZXIgZmllbGQuDQoN
    ClRoZSBBc3RlcmlzayBkZWJ1ZyBzaG93cyB0aGUgZm9sbG93aW5n4oCmDQoNCg0KDQpERUJVR1sy Nzc4XSByZXNfcGpzaXBfZW5kcG9pbnRfaWRlbnRpZmllcl9pcC5jOiBTSVAgbWVzc2FnZSBjb250
    YWlucyBoZWFkZXIgJ1RvJyBidXQgdmFsdWUgJycgZG9lcyBub3QgbWF0Y2ggdmFsdWUgJzxzaXA6
    Mjg2QHh4eC54eHgueHh4Lnh4eD4nIGZvciBlbmRwb2ludCAnMjg2Jw0KDQpSYXRzLiAgQXBwYXJl bnRseSB0aGUgY29kZSBhc3N1bWVzIHRoZSBoZWFkZXIgYmVpbmcgc2VhcmNoZWQgZm9yIGlzIGEg ImdlbmVyaWMgc3RyaW5nIiBoZWFkZXIgYnV0IHRoZSBUbyBoZWFkZXIgaXMgaXRzIG93biBub24t Z2VuZXJpYyB0eXBlLg0KDQpJIGNyZWF0ZWQgYW4gaXNzdWUgZm9yIHRoYXQuLi4NCmh0dHBzOi8v aXNzdWVzLmFzdGVyaXNrLm9yZy9qaXJhL2Jyb3dzZS9BU1RFUklTSy0yNzU0OA0KDQoNCg0K

  • VGhhbmtzIEdlb3JnZQ0KDQpGcm9tOiBhc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1
    bS5jb20gW21haWx0bzphc3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb21dIE9u IEJlaGFsZiBPZiBHZW9yZ2UgSm9zZXBoDQpTZW50OiBUaHVyc2RheSwgSmFudWFyeSAwNCwgMjAx OCA4OjA5IFBNDQpUbzogQXN0ZXJpc2sgVXNlcnMgTWFpbGluZyBMaXN0IC0gTm9uLUNvbW1lcmNp YWwgRGlzY3Vzc2lvbg0KU3ViamVjdDogUmU6IFthc3Rlcmlzay11c2Vyc10gSXMgaXQgcG9zc2li bGUgdG8gaGF2ZSB0d28gZW5kcG9pbnRzIHRvIHRoZSBzYW1lIElQIGFkZHJlc3Mgd2hlcmUgb25l IHVzZXMgSVAgYmFzZWQgYXV0aGVudGljYXRpb24gYW5kIHRoZSBvdGhlciByZXF1aXJlcyBhc3Rl cmlzayB0byByZWdpc3RlciB0byB0aGF0IHN5c3RlbT8NCg0KDQoNCk9uIFRodSwgSmFuIDQsIDIw MTggYXQgMTE6MDcgQU0sIERhbiBDcm9wcCA8ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5AYW10
    ZWxjby5jb20+PiB3cm90ZToNCg0KVGhhbmsgeW91IEdlb3JnZS4NCg0KDQoNCkkgd2lsbCBwYXNz IGFsb25nIHRoZSByZmMgaW5mb3JtYXRpb24gdG8gdGhvc2UgcmVzcG9uc2libGUgZm9yIHRoZSBv dGhlciBzd2l0Y2guDQoNCg0KDQpJIG1pc3NlZCB0aGUgbWF0Y2hfaGVhZGVyIGFkZGl0aW9uIHRv IEFzdGVyaXNrLg0KDQpVbmZvcnR1bmF0ZWx5LCB0aGUgb25seSBoZWFkZXIgZmllbGQgdGhhdCBz ZWVtcyBhcHByb3ByaWF0ZSBpcyB0aGUgVG8gaGVhZGVyLg0KDQoNCg0KT24gYSBzZXBhcmF0ZSBi b3ggSSBhbSBub3cgdHJ5aW5nIHRvIGNvbmZpZ3VyZSB0aGUgZW5kcG9pbnQgcmVjb2duaXRpb24u ICBQbGFubmluZyBvbiBtdWx0aXBsZSBlbmRwb2ludHMgdG8gdGhlIHNhbWUgc3dpdGNoLCBzbyBJ
    IGFtIHRyeWluZyB0byB1c2UgdGhlIG1hdGNoX2hlYWRlciBmaWVsZC4NCg0KDQoNCkkgdHJpZWQg cHJvZ3JhbW1pbmcgdGhlIG1hdGNoX2hlYWRlciB3aXRoIHRoZSBUbzogaGVhZGVyIGluZm9ybWF0
    aW9uLiAgVW5mb3J0dW5hdGVseSwgaXQgZGlkbuKAmXQgd29yay4gIEFwcGFyZW50bHkgdGhlIFRv IGhlYWRlciBkb2VzbuKAmXQgd29yayB3aXRoIHRoZSBtYXRjaF9oZWFkZXIgZmllbGQuDQoNClRo ZSBBc3RlcmlzayBkZWJ1ZyBzaG93cyB0aGUgZm9sbG93aW5n4oCmDQoNCg0KDQpERUJVR1syNzc4
    XSByZXNfcGpzaXBfZW5kcG9pbnRfaWRlbnRpZmllcl9pcC5jOiBTSVAgbWVzc2FnZSBjb250YWlu cyBoZWFkZXIgJ1RvJyBidXQgdmFsdWUgJycgZG9lcyBub3QgbWF0Y2ggdmFsdWUgJzxzaXA6Mjg2
    QHh4eC54eHgueHh4Lnh4eD4nIGZvciBlbmRwb2ludCAnMjg2Jw0KDQpSYXRzLiAgQXBwYXJlbnRs eSB0aGUgY29kZSBhc3N1bWVzIHRoZSBoZWFkZXIgYmVpbmcgc2VhcmNoZWQgZm9yIGlzIGEgImdl bmVyaWMgc3RyaW5nIiBoZWFkZXIgYnV0IHRoZSBUbyBoZWFkZXIgaXMgaXRzIG93biBub24tZ2Vu ZXJpYyB0eXBlLg0KDQpJIGNyZWF0ZWQgYW4gaXNzdWUgZm9yIHRoYXQuLi4NCmh0dHBzOi8vaXNz dWVzLmFzdGVyaXNrLm9yZy9qaXJhL2Jyb3dzZS9BU1RFUklTSy0yNzU0OA0KDQoNCg0KDQoNCkZy b206IGFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJp c2stdXNlcnMtYm91bmNlc0BsaXN0cy5kaWdpdW0uY29tPiBbbWFpbHRvOmFzdGVyaXNrLXVzZXJz LWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbTxtYWlsdG86YXN0ZXJpc2stdXNlcnMtYm91bmNlc0Bs aXN0cy5kaWdpdW0uY29tPl0gT24gQmVoYWxmIE9mIEdlb3JnZSBKb3NlcGgNClNlbnQ6IFR1ZXNk YXksIERlY2VtYmVyIDE5LCAyMDE3IDc6NTcgQU0NCg0KVG86IEFzdGVyaXNrIFVzZXJzIE1haWxp bmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Npb24NClN1YmplY3Q6IFJlOiBbYXN0ZXJp c2stdXNlcnNdIElzIGl0IHBvc3NpYmxlIHRvIGhhdmUgdHdvIGVuZHBvaW50cyB0byB0aGUgc2Ft ZSBJUCBhZGRyZXNzIHdoZXJlIG9uZSB1c2VzIElQIGJhc2VkIGF1dGhlbnRpY2F0aW9uIGFuZCB0
    aGUgb3RoZXIgcmVxdWlyZXMgYXN0ZXJpc2sgdG8gcmVnaXN0ZXIgdG8gdGhhdCBzeXN0ZW0/DQoN
    Cg0KDQoNCg0KDQoNCk9uIE1vbiwgRGVjIDE4LCAyMDE3IGF0IDk6MDQgQU0sIERhbiBDcm9wcCA8
    ZGFuQGFtdGVsY28uY29tPG1haWx0bzpkYW5AYW10ZWxjby5jb20+PiB3cm90ZToNCg0KVGhhbmtz IEdlb3JnZQ0KDQoNCg0KSSBvcmlnaW5hbGx5IGRpZG7igJl0IGhhdmUgdGhlIDEwMDJAIGZvciB0
    aGUgaWRlbnRpZnkuICBDaGFuZ2VkIHRoYXQgd2hlbiB0aGluZ3Mgd2VyZSBub3Qgd29ya2luZy4g IEkgY2hhbmdlZCBpdCBiYWNrLg0KDQoNCg0KVW5mb3J0dW5hdGVseSwgdGhlIHN5c3RlbSBJIGFt IGNvbm5lY3Rpbmcgd2l0aCBkb2VzbuKAmXQgc2VlbSB0byBzdXBwb3J0IHRoZSBsaW5lIHN1cHBv cnQuICBMb29raW5nIGF0IHRoZSBTSVAgcGFja2V0cywgSSBzZWUgQXN0ZXJpc2sgc2VuZCBpdC4g IFVuZm9ydHVuYXRlbHksIHRoZXkgZG8gbm90IHNlbmQgdGhlIGxpbmUgaW5mb3JtYXRpb24gYXMg cGFydCBvZiB0aGUgSU5WSVRFLiAgSSBjaGVja2VkIHdpdGggc29tZSBkZXZlbG9wZXJzIG9mIHRo YXQgc3lzdGVtIGFuZCB0aGV5IGRvIG5vdCBrbm93IGFueXRoaW5nIGFib3V0IHRoZSBsaW5lIHNl dHRpbmcuDQoNCklzIHRoZXJlIGFueSByZmNzIEkgY291bGQgcmVmZXIgdGhlbSB0bz8NCg0KDQoN
    ClllYWgsIEkndmUgZm91bmQgdGhhdCBzb21lIHByb3ZpZGVycyBkbyBhbmQgc29tZSBwcm92aWRl cnMgZG9uJ3QuDQoNCg0KDQoNCg0KaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzMyNjEj c2VjdGlvbi0xOS4xDQoNCkFuIGltcGxlbWVudGF0aW9uIE1VU1QgaW5jbHVkZSBhbnkgcHJvdmlk ZWQgdHJhbnNwb3J0LCBtYWRkciwgdHRsLCBvcg0KdXNlciBwYXJhbWV0ZXIgaW4gdGhlIFJlcXVl c3QtVVJJIG9mIHRoZSBmb3JtZWQgcmVxdWVzdC4gSWYgdGhlIFVSSQ0KY29udGFpbnMgYSBtZXRo b2QgcGFyYW1ldGVyLCBpdHMgdmFsdWUgTVVTVCBiZSB1c2VkIGFzIHRoZSBtZXRob2Qgb2YNCnRo ZSByZXF1ZXN0LiBUaGUgbWV0aG9kIHBhcmFtZXRlciBNVVNUIE5PVCBiZSBwbGFjZWQgaW4gdGhl DQpSZXF1ZXN0LVVSSS4NCg0K4oCL4oCLDQoNClVua25vd24gVVJJIHBhcmFtZXRlcnMgTVVTVCBi ZSBwbGFjZWQgaW4gdGhlIG1lc3NhZ2Uncw0KUmVxdWVzdC1VUkkuDQoNCg0KDQpUaGUgaWRlbnRp Znkgb2JqZWN0IGFsc28gaGFzIHRoZSBjYXBhYmlsaXR5IHRvIG1hdGNoIGFnYWluc3QgYSBzcGVj aWZpYyBoZWFkZXIgYW5kIHZhbHVlIGJ1dCBpdCBsb29rcyBsaWtlIGl0IG9ubHkgdHJpZXMgdG8g bWF0Y2ggb24gaGVhZGVyIGlmIGl0IGNhbid0IGZpbmQgYSBtYXRjaCBieSBpcCBhZGRyZXNzLiAg SGVyZSdzIHNvbWUgaW5mbyBvbiBpdCBhbnl3YXkuDQoNCg0KDQpJZiB5b3UncmUgcHJvdmlkZXIg cHV0cyBzb21ldGhpbmcgdW5pcXVlIGFuZCBjb25zdGFudCBpbiB0aGUgaGVhZGVycywgbGlrZSBh IFVzZXItQWdlbnQgc3RyaW5nIHRoYXQgZG9lc24ndCBjaGFuZ2UsIHlvdSBjYW4gYWxzbyB0cnkg dXNpbmcgdGhlICJtYXRjaF9oZWFkZXIiIHBhcmFtZXRlciB0byBhbiBpZGVudGlmeSBvYmplY3Qu DQoNCg0KDQpbbXlfcHJvdmlkZXJdDQoNCnR5cGUgPSBpZGVudGlmeQ0KDQptYXRjaF9oZWFkZXIg PSBVc2VyLUFnZW50OiBTb21ldGhpbmcgVW5pcXVlIDEuMC4wDQoNCmVuZHBvaW50ID0gcHJvdmlk ZXINCg0KDQoNCkl0IGhhcyB0byBiZSBhbiBleGFjdCBtYXRjaCB0aG91Z2gsIG5vIHdpbGRjYXJk cyBvciByZWd1bGFyIGV4cHJlc3Npb25zLg0KDQoNCg0KSSBvcGVuZWQgYW4gaXNzdWVbMV0gb24g c2VwYXJhdGluZyBpcCBtYXRjaGluZyBmcm9tIGhlYWRlciBtYXRjaGluZyBzbyB0aGV5IGNhbiBi ZSByZS1vcmRlcmVkLg0KDQoNCg0KDQoNCg0KDQoNCg0KWzFdIGh0dHBzOi8vaXNzdWVzLmFzdGVy aXNrLm9yZy9qaXJhL2Jyb3dzZS9BU1RFUklTSy0yNzQ5MQ0KDQoNCg0KDQoNCg0KDQpGcm9tOiBh c3Rlcmlzay11c2Vycy1ib3VuY2VzQGxpc3RzLmRpZ2l1bS5jb208bWFpbHRvOmFzdGVyaXNrLXVz ZXJzLWJvdW5jZXNAbGlzdHMuZGlnaXVtLmNvbT4gW21haWx0bzphc3Rlcmlzay11c2Vycy1ib3Vu Y2VzQGxpc3RzLmRpZ2l1bS5jb208bWFpbHRvOmFzdGVyaXNrLXVzZXJzLWJvdW5jZXNAbGlzdHMu ZGlnaXVtLmNvbT5dIE9uIEJlaGFsZiBPZiBHZW9yZ2UgSm9zZXBoDQpTZW50OiBUaHVyc2RheSwg RGVjZW1iZXIgMTQsIDIwMTcgMTA6NTkgQU0NClRvOiBBc3RlcmlzayBVc2VycyBNYWlsaW5nIExp c3QgLSBOb24tQ29tbWVyY2lhbCBEaXNjdXNzaW9uDQpTdWJqZWN0OiBSZTogW2FzdGVyaXNrLXVz ZXJzXSBJcyBpdCBwb3NzaWJsZSB0byBoYXZlIHR3byBlbmRwb2ludHMgdG8gdGhlIHNhbWUgSVAg YWRkcmVzcyB3aGVyZSBvbmUgdXNlcyBJUCBiYXNlZCBhdXRoZW50aWNhdGlvbiBhbmQgdGhlIG90
    aGVyIHJlcXVpcmVzIGFzdGVyaXNrIHRvIHJlZ2lzdGVyIHRvIHRoYXQgc3lzdGVtPw0KDQoNCg0K
    DQoNCg0KDQpPbiBXZWQsIERlYyAxMywgMjAxNyBhdCAxMDo1MSBBTSwgRGFuIENyb3BwIDxkYW5A
    YW10ZWxjby5jb208bWFpbHRvOmRhbkBhbXRlbGNvLmNvbT4+IHdyb3RlOg0KDQpDdXJyZW50bHkg dXNpbmcgUEpTSVAuICBGaXJzdCwgdGhleSB3YW50IG1lIHRvIGdldCB0aGlzIHdvcmtpbmcgd2l0
    aCB0aGUgZXhpc3RpbmcgUEpTSVAgY29uZmlndXJhdGlvbiwgYnV0IHRoZW4gc2V0dXAgYSBzZWNv bmQgYm94IHVzaW5nIGNoYW5fc2lwIHBlcmZvcm1pbmcgc2ltaWxhciB3b3JrLg0KDQoNCg0KRm9y IFBKU0lQ4oCmDQoNCkkgY3VycmVudGx5IGhhdmUgYW4gZW5kcG9pbnQgY29uZmlndXJlZCB0byBh IHN5c3RlbSB1c2luZyBJUCBiYXNlZCBhdXRoZW50aWNhdGlvbi4gIEl0IGlzIGNvbmZpZ3VyZWQg d2l0aCBhIG1hdGNoIHNldHRpbmcgaW4gdGhlIGVuZHBvaW50IHNlY3Rpb24uDQoNCkFsbCBjaGFu bmVscyBjb21pbmcgZnJvbSB0aGF0IElQIGFkZHJlc3MgZ28gdG8gdGhpcyBlbmRwb2ludC4NCg0K
    DQoNClRoZXkgd2FudCBtZSB0byBrZWVwIHRoaXMgZW5kcG9pbnQsIGJ1dCBhZGQgYSBuZXcgZW5k cG9pbnQgd2hlcmUgd2UgcmVnaXN0ZXIgd2l0aCB0aGVtLg0KDQoNCg0KRXhpc3RpbmfigKYNCg0K
    W3RyYW5zcG9ydDFdDQoNCnR5cGUgPSB0cmFuc3BvcnQNCg0KYmluZCA9IDAuMC4wLjANCg0KcHJv dG9jb2wgPSB1ZHANCg0KDQoNClsxMDAyXQ0KDQp0eXBlID0gYW9yDQoNCnJlbW92ZV9leGlzdGlu ZyA9IHllcw0KDQpjb250YWN0ID0gc2lwOjEwMDJAeHh4Lnh4eC54eHgueHh4DQoNCg0KDQpbMTAw Ml0NCg0KdHlwZSA9IGVuZHBvaW50DQoNCmNvbnRleHQgPSBteWNvbnRleHQNCg0KdHJhbnNwb3J0
    ID0gdHJhbnNwb3J0MQ0KDQphY2NvdW50Y29kZSA9IDYNCg0KZHRtZl9tb2RlID0gaW5iYW5kDQoN
    CmRldmljZV9zdGF0ZV9idXN5X2F0ID0gNDgNCg0KZm9yY2VfcnBvcnQgPSBubw0KDQppZGVudGlm eV9ieSA9IHVzZXJuYW1lDQoNCmZyb21fdXNlciA9IDEwMDINCg0KZGlzYWxsb3cgPSBhbGwNCg0K
    YWxsb3cgPSB1bGF3DQoNCmFjbCA9IGFjbDENCg0KDQoNCltpZGVudGlmeTExMl0NCg0KdHlwZSA9
    IGlkZW50aWZ5DQoNCmVuZHBvaW50ID0gMTAwMg0KDQptYXRjaCA9IDEwMDJAeHh4Lnh4eC54eHgu eHh4PG1haWx0bzoxMDAyQHh4eC54eHgueHh4Lnh4eD4NCg0KDQoNCg0KDQpDaGVjayB0aGlzIGZp cnN0Li4uICBpZGVudGlmeTExMiBwcm9iYWJseSBmYWlsZWQgdG8gbG9hZCBiZWNhdXNlIHRoZSBt YXRjaCBwYXJhbWV0ZXIgY2FuIG9ubHkgdGFrZSBhbiBpcCBhZGRyZXNzDQoNCnBsdXMgYW4gb3B0
    aW9uYWwgbmV0bWFzaywgb3IgYSBob3N0bmFtZS4gIFRoZSAnMTAwMkAnIGlzIGludmFsaWQuDQoN
    Cg0KDQoNCg0KDQoNCg0KDQpJIHNldHVwIHRoZSByZWdpc3RyYXRpb24gYW5kIHRoZSBlbmRwb2lu dC4NCg0KDQoNClsyODZdDQoNCnR5cGUgPSBhb3INCg0KcmVtb3ZlX2V4aXN0aW5nID0geWVzDQoN
    CmNvbnRhY3QgPSBzaXA6Mjg2QHh4eC54eHgueHh4Lnh4eA0KDQpxdWFsaWZ5X2ZyZXF1ZW5jeSA9
    IDYwDQoNCg0KDQpbYXV0aDhdDQoNCnR5cGUgPSBhdXRoDQoNCnVzZXJuYW1lID0gMjg2DQoNCnBh c3N3b3JkID0geXl5eXl5eXl5eXl5eXl5DQoNCg0KDQpbMjg2XQ0KDQp0eXBlID0gZW5kcG9pbnQN
    Cg0KY29udGV4dCA9IG15Y29udGV4dA0KDQp0cmFuc3BvcnQgPSB0cmFuc3BvcnQxDQoNCm91dGJv dW5kX2F1dGggPSBhdXRoOA0KDQphb3JzID0gMjg2DQoNCmFjY291bnRjb2RlID0gMjINCg0KZHRt Zl9tb2RlID0gaW5iYW5kDQoNCmRldmljZV9zdGF0ZV9idXN5X2F0ID0gNDgNCg0KZm9yY2VfcnBv cnQgPSBubw0KDQpkaXNhbGxvdyA9IGFsbA0KDQphbGxvdyA9IHVsYXcNCg0KYWNsID0gYWNsMQ0K
    DQoNCg0KW3JlZ2lzdHJhdGlvbjNdDQoNCnR5cGUgPSByZWdpc3RyYXRpb24NCg0KdHJhbnNwb3J0
    ID0gdHJhbnNwb3J0MQ0KDQpjbGllbnRfdXJpID0gc2lwOjI4NkB6enouenp6Lnp6ei56enoNCg0K
    c2VydmVyX3VyaSA9IHNpcDp4eHgueHh4Lnh4eC54eHgNCg0KY29udGFjdF91c2VyID0gMjg2DQoN
    Cm91dGJvdW5kX2F1dGggPSBhdXRoOA0KDQpleHBpcmF0aW9uID0gMzYwMA0KDQoNCg0KVGhlIHJl Z2lzdHJhdGlvbiBmb3IgdGhlIHNlY29uZCBlbmRwb2ludCB3b3JrcyBmaW5lLiAgSG93ZXZlciwg d2hlbiBJIGNhbGwgdGhyb3VnaCB0aGUgb3RoZXIgc3lzdGVtIGZvciAyODYsIGl0IGlzIGZhaWxp bmcuICBGb3IgdGhlIElOVklURSBmcm9tIHRoZSBvdGhlciBzd2l0Y2gsIHRoZSBmcm9tX3VzZXIg dmFyaWVzIGRlcGVuZGluZyBvbiB3aG8gaXMgY2FsbGluZy4gIEFzdGVyaXNrIGxvZ3MgcmVwb3J0
    IOKAnE5vIG1hdGNoaW5nIGVuZHBvaW50IGZvdW5k4oCdIHdoZW4gaXQgcHJvY2Vzc2VzIHRoZSBJ
    TlZJVEUgZm9yIDI4Ni4NCg0KDQoNCkkgYmVsaWV2ZSB0aGUgcmVhc29uIElOVklURXMgd29yayBm b3IgdGhlIG90aGVyIGNoYW5uZWwgaXMgYmVjYXVzZSB0aGV5IGFyZSBwcm9ncmFtbWVkIHRvIHN1
    cHBvcnQgdGhlIG1hdGNoIGZvciB0aGlzIElQIGFkZHJlc3MuDQoNCg0KDQpDYW4gYW55b25lIG9m ZmVyIHNvbWUgc3VnZ2VzdGlvbnM/DQoNCg0KDQpZb3UgbWF5IGJlIGFibGUgdG8gdXNlIHRoZSAn bGluZSBhbmQgJ2VuZHBvaW50JyByZWdpc3RyYXRpb24gcGFyYW1ldGVycy4uLg0KDQpbcmVnaXN0
    cmF0aW9uM10NCg0KdHlwZSA9IHJlZ2lzdHJhdGlvbg0KDQouLi4NCg0KbGluZSA9IHllcw0KDQpl bmRwb2ludCA9IDI4Ng0KDQoNCg0KVGhpcyBjYXVzZXMgYXN0ZXJpc2sgdG8gcHV0IHRoZSBlbmNv ZGVkIGVuZHBvaW50IG5hbWUgaW4gdGhlIG91dGdvaW5nIENvbnRhY3QgaGVhZGVyLiAgSWYgdGhl IHByb3ZpZGVyIHByb3Blcmx5IGVjaG9zIGJhY2sgQ29udGFjdCBwYXJhbWV0ZXJzIHdoZW4gc2Vu ZGluZyByZXNwb25zZXMgb3IgbmV3IHJlcXVlc3RzLCBhc3RlcmlzayB3aWxsIHVzZSB0aGUgbGlu ZSBwYXJhbWV0ZXIgdG8gbWF0Y2ggYW4gZW5kcG9pbnQuICBJJ2xsIGhhdmUgdG8gZG91YmxlIGNo ZWNrIGJ1dCBJIGJlbGlldmUgd2UgZG8gdGhhdCBCRUZPUkUgY2hlY2tpbmcgYW55IGlkZW50aWZ5
    IG9iamVjdCBmb3IgYSBtYXRjaC4NCg0KDQoNCg0KDQoNCg0KDQoNCi0tDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
    Ci0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1k aWdpdGFsLmNvbSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9y dW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNr PyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3Bs YXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRv IFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRp Z2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw0KDQoNCg0KDQoNCi0tDQoN
    Ckdlb3JnZSBKb3NlcGgNCkRpZ2l1bSwgSW5jLiB8IFNvZnR3YXJlIERldmVsb3Blcg0KNDQ1IEph biBEYXZpcyBEcml2ZSBOVyAtIEh1bnRzdmlsbGUsIEFMIDM1ODA2IC0gVVMNCkNoZWNrIHVzIG91
    dCBhdDogd3d3LmRpZ2l1bS5jb208aHR0cDovL3d3dy5kaWdpdW0uY29tLz4gJiB3d3cuYXN0ZXJp c2sub3JnPGh0dHA6Ly93d3cuYXN0ZXJpc2sub3JnLz4NCg0KDQoNCi0tDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
    Ci0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1k aWdpdGFsLmNvbSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9y dW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNr PyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3Bs YXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRv IFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRp Z2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw0KDQoNCg0KDQoNCi0tDQoN
    Ckdlb3JnZSBKb3NlcGgNCkRpZ2l1bSwgSW5jLiB8IFNvZnR3YXJlIERldmVsb3Blcg0KNDQ1IEph biBEYXZpcyBEcml2ZSBOVyAtIEh1bnRzdmlsbGUsIEFMIDM1ODA2IC0gVVMNCkNoZWNrIHVzIG91
    dCBhdDogd3d3LmRpZ2l1bS5jb208aHR0cDovL3d3dy5kaWdpdW0uY29tLz4gJiB3d3cuYXN0ZXJp c2sub3JnPGh0dHA6Ly93d3cuYXN0ZXJpc2sub3JnLz4NCg0KDQoNCi0tDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18N
    Ci0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8vd3d3LmFwaS1k aWdpdGFsLmNvbSAtLQ0KDQpDaGVjayBvdXQgdGhlIG5ldyBBc3RlcmlzayBjb21tdW5pdHkgZm9y dW0gYXQ6IGh0dHBzOi8vY29tbXVuaXR5LmFzdGVyaXNrLm9yZy8NCg0KTmV3IHRvIEFzdGVyaXNr PyBTdGFydCBoZXJlOg0KICAgICAgaHR0cHM6Ly93aWtpLmFzdGVyaXNrLm9yZy93aWtpL2Rpc3Bs YXkvQVNUL0dldHRpbmcrU3RhcnRlZA0KDQphc3Rlcmlzay11c2VycyBtYWlsaW5nIGxpc3QNClRv IFVOU1VCU0NSSUJFIG9yIHVwZGF0ZSBvcHRpb25zIHZpc2l0Og0KICAgaHR0cDovL2xpc3RzLmRp Z2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw0KDQoNCg0KLS0NCkdlb3Jn ZSBKb3NlcGgNCkRpZ2l1bSwgSW5jLiB8IFNvZnR3YXJlIERldmVsb3Blcg0KNDQ1IEphbiBEYXZp cyBEcml2ZSBOVyAtIEh1bnRzdmlsbGUsIEFMIDM1ODA2IC0gVVMNCkNoZWNrIHVzIG91dCBhdDog d3d3LmRpZ2l1bS5jb208aHR0cDovL3d3dy5kaWdpdW0uY29tLz4gJiB3d3cuYXN0ZXJpc2sub3Jn PGh0dHA6Ly93d3cuYXN0ZXJpc2sub3JnLz4NCg0K