IAX Trunking Stopped Working

Home » Asterisk Users » IAX Trunking Stopped Working
Asterisk Users 2 Comments

I administer a group of Asterisk servers running a mix of 10.3, 10.4, and 1.8.8.1 (mostly 10.4). One of those servers is a call concentrator/relay for E911 service. All of the other servers make an IAX connection to the relay server, which then hands off to a SIP trunk to my E911 provider. It all worked as recently as 2 weeks ago, but I discovered that sometime between then and now it stopped working without any explanation. Last modified time on the config files is over 2 months ago.

The setup is as follows:

On the call relay (IAX “receiver”)
[my-remote-server]
type=user host=dynamic username=my-remote-username encryption=yes secret=my-remote-secret context=my-call-context deny=0.0.0.0/0.0.0.0
permit=remote.server.ip.address/255.255.255.255

On the VoIP servers (IAX “sender”)

– One of the servers is set to register: register => my-remote-username:my-remote-secret@call.relay.server.ip

– Another is set to just use the peer definition as below without trying to register
[my-remote-server]
type=peer host=call.relay.server.ip username=my-remote-username secret=my-remote-secret qualify=no

Dialplan on the VoIP servers:
exten => 911,1,Verbose()
same => n,Dial(IAX2/my-remote-server/911)

Dialplan on the relay server:
[my-call-context]
exten => 911,1,Verbose()
same => n,Dial(Relay to E911)

The issue I’m seeing is this:

– On the servers that are set to register, the relay server is rejecting the registration (I’ve confirmed the username/peername/secrets are an exact match on both sides, and nothing has changed from when they were working). IAX debug on the relay server shows the auths come in and the relay server send REGREJ – Registration Refused, Cause Code 29. IAX debug on the server attempting to register shows sending the REGAUTH packets and receiving the REGREJ packets. The IP address shown in the IAX debug packets matches the IP address in the permit rule for each peer that’s supposed to register.

– On the server that is set to just send the calls, an attempt to dial 911 just hangs for 60 seconds and eventually times out without sending the call. IAX debug on the relay server shows the call start frame get RX’d, shows the relay server try to TX a CTOKEN frame, and nothing further (other than retransmissions of the call start frame). IAX debug on the server trying to send the call to the relay server shows the TX for the call start frame, but no RX for the CTOKEN frames.

Ultimately, this has gone from working to totally broken without any apparent change to my configuration. I need help to try to troubleshoot it further, I’ve tried everything I can think of (including transferring the backed-up working config files to a brand new clean-load server, upgrading Asterisk, and recreating the configurations by hand), and nothing seems to be helping.

Thank you,

2 thoughts on - IAX Trunking Stopped Working

  • Ci0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0gCgo+IEZyb206ICJOb2FoIEVuZ2VsYmVydGgi
    IDxOb2FoQGRpcmVjdGxpbmtjb21wdXRlcnMuY29tPgo+IFRvOiAiQXN0ZXJpc2sgVXNlcnMgTWFp bGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbiIKPiA8YXN0ZXJpc2stdXNlcnNA
    bGlzdHMuZGlnaXVtLmNvbT4KPiBTZW50OiBUdWVzZGF5LCBKdWx5IDMsIDIwMTIgMTA6NTY6MTAg
    QU0KPiBTdWJqZWN0OiBbYXN0ZXJpc2stdXNlcnNdIElBWCB0cnVua2luZyBzdG9wcGVkIHdvcmtp bmcKCj4gSSBhZG1pbmlzdGVyIGEgZ3JvdXAgb2YgQXN0ZXJpc2sgc2VydmVycyBydW5uaW5nIGEg bWl4IG9mIDEwLjMsIDEwLjQsCj4gYW5kIDEuOC44LjEgKG1vc3RseSAxMC40KS4gT25lIG9mIHRo b3NlIHNlcnZlcnMgaXMgYSBjYWxsCj4gY29uY2VudHJhdG9yL3JlbGF5IGZvciBFOTExIHNlcnZp
    Y2UuIEFsbCBvZiB0aGUgb3RoZXIgc2VydmVycyBtYWtlCj4gYW4gSUFYIGNvbm5lY3Rpb24gdG8g dGhlIHJlbGF5IHNlcnZlciwgd2hpY2ggdGhlbiBoYW5kcyBvZmYgdG8gYSBTSVAKPiB0cnVuayB0
    byBteSBFOTExIHByb3ZpZGVyLiBJdCBhbGwgd29ya2VkIGFzIHJlY2VudGx5IGFzIDIgd2Vla3Mg
    YWdvLAo+IGJ1dCBJIGRpc2NvdmVyZWQgdGhhdCBzb21ldGltZSBiZXR3ZWVuIHRoZW4gYW5kIG5v dyBpdCBzdG9wcGVkCj4gd29ya2luZyB3aXRob3V0IGFueSBleHBsYW5hdGlvbi4gTGFzdCBtb2Rp
    ZmllZCB0aW1lIG9uIHRoZSBjb25maWcKPiBmaWxlcyBpcyBvdmVyIDIgbW9udGhzIGFnby4KCj4g
    VGhlIHNldHVwIGlzIGFzIGZvbGxvd3M6Cgo+IE9uIHRoZSBjYWxsIHJlbGF5IChJQVgg4oCccmVj
    ZWl2ZXLigJ0pCj4gW215LXJlbW90ZS1zZXJ2ZXJdCj4gdHlwZT11c2VyCj4gaG9zdD1keW5hbWlj
    Cj4gdXNlcm5hbWU9bXktcmVtb3RlLXVzZXJuYW1lCj4gZW5jcnlwdGlvbj15ZXMKPiBzZWNyZXQ9
    bXktcmVtb3RlLXNlY3JldAo+IGNvbnRleHQ9bXktY2FsbC1jb250ZXh0Cj4gZGVueT0wLjAuMC4w
    LzAuMC4wLjAKPiBwZXJtaXQ9cmVtb3RlLnNlcnZlci5pcC5hZGRyZXNzLzI1NS4yNTUuMjU1LjI1
    NQoKPiBPbiB0aGUgVm9JUCBzZXJ2ZXJzIChJQVgg4oCcc2VuZGVy4oCdKQo+IC0gT25lIG9mIHRo
    ZSBzZXJ2ZXJzIGlzIHNldCB0byByZWdpc3RlcjogcmVnaXN0ZXIgPT4KPiBteS1yZW1vdGUtdXNl cm5hbWU6bXktcmVtb3RlLXNlY3JldEBjYWxsLnJlbGF5LnNlcnZlci5pcAo+IC0gQW5vdGhlciBp cyBzZXQgdG8ganVzdCB1c2UgdGhlIHBlZXIgZGVmaW5pdGlvbiBhcyBiZWxvdyB3aXRob3V0Cj4g dHJ5aW5nIHRvIHJlZ2lzdGVyCj4gW215LXJlbW90ZS1zZXJ2ZXJdCj4gdHlwZT1wZWVyCj4gaG9z dD1jYWxsLnJlbGF5LnNlcnZlci5pcAo+IHVzZXJuYW1lPW15LXJlbW90ZS11c2VybmFtZQo+IHNl
    Y3JldD1teS1yZW1vdGUtc2VjcmV0Cj4gcXVhbGlmeT1ubwoKPiBEaWFscGxhbiBvbiB0aGUgVm9J
    UCBzZXJ2ZXJzOgo+IGV4dGVuID0+IDkxMSwxLFZlcmJvc2UoKQo+IHNhbWUgPT4gbixEaWFsKElB
    WDIvbXktcmVtb3RlLXNlcnZlci85MTEpCgo+IERpYWxwbGFuIG9uIHRoZSByZWxheSBzZXJ2ZXI6
    Cj4gW215LWNhbGwtY29udGV4dF0KPiBleHRlbiA9PiA5MTEsMSxWZXJib3NlKCkKPiBzYW1lID0+
    IG4sRGlhbChSZWxheSB0byBFOTExKQoKPiBUaGUgaXNzdWUgSeKAmW0gc2VlaW5nIGlzIHRoaXM6
    Cj4gLSBPbiB0aGUgc2VydmVycyB0aGF0IGFyZSBzZXQgdG8gcmVnaXN0ZXIsIHRoZSByZWxheSBz
    ZXJ2ZXIgaXMKPiByZWplY3RpbmcgdGhlIHJlZ2lzdHJhdGlvbiAoSeKAmXZlIGNvbmZpcm1lZCB0
    aGUKPiB1c2VybmFtZS9wZWVybmFtZS9zZWNyZXRzIGFyZSBhbiBleGFjdCBtYXRjaCBvbiBib3Ro
    IHNpZGVzLCBhbmQKPiBub3RoaW5nIGhhcyBjaGFuZ2VkIGZyb20gd2hlbiB0aGV5IHdlcmUgd29y a2luZykuIElBWCBkZWJ1ZyBvbiB0aGUKPiByZWxheSBzZXJ2ZXIgc2hvd3MgdGhlIGF1dGhzIGNv bWUgaW4gYW5kIHRoZSByZWxheSBzZXJ2ZXIgc2VuZAo+IFJFR1JFSiDigJMgUmVnaXN0cmF0aW9u
    IFJlZnVzZWQsIENhdXNlIENvZGUgMjkuIElBWCBkZWJ1ZyBvbiB0aGUKPiBzZXJ2ZXIgYXR0ZW1w dGluZyB0byByZWdpc3RlciBzaG93cyBzZW5kaW5nIHRoZSBSRUdBVVRIIHBhY2tldHMgYW5kCj4g cmVjZWl2aW5nIHRoZSBSRUdSRUogcGFja2V0cy4gVGhlIElQIGFkZHJlc3Mgc2hvd24gaW4gdGhl
    IElBWCBkZWJ1Zwo+IHBhY2tldHMgbWF0Y2hlcyB0aGUgSVAgYWRkcmVzcyBpbiB0aGUgcGVybWl0
    IHJ1bGUgZm9yIGVhY2ggcGVlcgo+IHRoYXTigJlzIHN1cHBvc2VkIHRvIHJlZ2lzdGVyLgoKQ2Fu
    IHlvdSBzZXQgYXV0aGRlYnVnIGFuZCBpYXhkZWJ1ZyB0byB0cnVlIGluIHlvdXIgaWF4MiBjb25m aWd1cmF0aW9uIC0gcHJlZmVyYWJseQpvbiBib3RoIGVuZHMsIGJ1dCBpbiBwYXJ0aWN1bGFyIG9u
    IHRoZSBzZXJ2ZXIgdGhhdCBpcyBzZXJ2aWNpbmcgdGhlIHJlZ2lzdHJhdGlvbgphdHRlbXB0IC0g
    YW5kIHBvc3QgdGhlIHBvcnRpb24gb2YgdGhlIERFQlVHIGxvZ3MgdGhhdCBzaG93cyBpdCByZWpl
    Y3RpbmcgdGhlCnJlZ2lzdHJhdGlvbj8KClNvbWV0aGluZyBpcyBmYWlsaW5nIGF1dGhlbnRpY2F0
    aW9uLCBhbmQgYXV0aGRlYnVnIHNob3VsZCB0ZWxsIHVzIGF0IGxlYXN0CndoeSB0aGUgc2VydmVy
    IHRoaW5rcyBpdCBzaG91bGQgcmVqZWN0IHRoZSBhdHRlbXB0LgoKPiAtIE9uIHRoZSBzZXJ2ZXIg dGhhdCBpcyBzZXQgdG8ganVzdCBzZW5kIHRoZSBjYWxscywgYW4gYXR0ZW1wdCB0bwo+IGRpYWwg
    OTExIGp1c3QgaGFuZ3MgZm9yIDYwIHNlY29uZHMgYW5kIGV2ZW50dWFsbHkgdGltZXMgb3V0IHdp dGhvdXQKPiBzZW5kaW5nIHRoZSBjYWxsLiBJQVggZGVidWcgb24gdGhlIHJlbGF5IHNlcnZlciBz aG93cyB0aGUgY2FsbCBzdGFydAo+IGZyYW1lIGdldCBSWOKAmWQsIHNob3dzIHRoZSByZWxheSBz
    ZXJ2ZXIgdHJ5IHRvIFRYIGEgQ1RPS0VOIGZyYW1lLCBhbmQKPiBub3RoaW5nIGZ1cnRoZXIgKG90
    aGVyIHRoYW4gcmV0cmFuc21pc3Npb25zIG9mIHRoZSBjYWxsIHN0YXJ0Cj4gZnJhbWUpLiBJQVgg
    ZGVidWcgb24gdGhlIHNlcnZlciB0cnlpbmcgdG8gc2VuZCB0aGUgY2FsbCB0byB0aGUgcmVsYXkK
    PiBzZXJ2ZXIgc2hvd3MgdGhlIFRYIGZvciB0aGUgY2FsbCBzdGFydCBmcmFtZSwgYnV0IG5vIFJY
    IGZvciB0aGUKPiBDVE9LRU4gZnJhbWVzLgoKSXMgdGhpcyB0aGUgc2FtZSBzZXJ2ZXIgdGhhdCBm
    YWlsZWQgdG8gcmVnaXN0ZXI/ICBJZiBzbywgaXQgbWF5IGJlIGJlc3QKdG8gZm9jdXMgb24gdGhh dCBwcm9ibGVtIGZpcnN0LgoKPiBVbHRpbWF0ZWx5LCB0aGlzIGhhcyBnb25lIGZyb20gd29ya2lu
    ZyB0byB0b3RhbGx5IGJyb2tlbiB3aXRob3V0IGFueQo+IGFwcGFyZW50IGNoYW5nZSB0byBteSBj b25maWd1cmF0aW9uLiBJIG5lZWQgaGVscCB0byB0cnkgdG8KPiB0cm91Ymxlc2hvb3QgaXQgZnVy dGhlciwgSeKAmXZlIHRyaWVkIGV2ZXJ5dGhpbmcgSSBjYW4gdGhpbmsgb2YKPiAoaW5jbHVkaW5n
    IHRyYW5zZmVycmluZyB0aGUgYmFja2VkLXVwIHdvcmtpbmcgY29uZmlnIGZpbGVzIHRvIGEKPiBi cmFuZCBuZXcgY2xlYW4tbG9hZCBzZXJ2ZXIsIHVwZ3JhZGluZyBBc3RlcmlzaywgYW5kIHJlY3Jl
    YXRpbmcgdGhlCj4gY29uZmlndXJhdGlvbnMgYnkgaGFuZCksIGFuZCBub3RoaW5nIHNlZW1zIHRv
    IGJlIGhlbHBpbmcuCgpTaW5jZSB5b3UgaGF2ZSBhIG51bWJlciBvZiBkaWZmZXJlbnQgc2VydmVy cyBydW5uaW5nIGRpZmZlcmVudCB2ZXJzaW9ucwpvZiBBc3RlcmlzaywgY2FuIHlvdSBwcm92aWRl
    IHdoaWNoIHNlcnZlciBpbiB5b3VyIHNjZW5hcmlvIGlzIHJ1bm5pbmcKd2hpY2ggdmVyc2lvbj8K
    Cj4gVGhhbmsgeW91LAoKPiBOb2FoIEVuZ2VsYmVydGgKPiBNZXRhTElOSyBUZWNobm9sb2dpZXMK
    CgoKLS0KTWF0dGhldyBKb3JkYW4KRGlnaXVtLCBJbmMuIHwgU29mdHdhcmUgRGV2ZWxvcGVyCjQ0
    NSBKYW4gRGF2aXMgRHJpdmUgTlcgLSBIdW50c3ZpbGxlLCBBTCAzNTgwNiAtIFVTQQpDaGVjayB1
    cyBvdXQgYXQ6IGh0dHA6Ly9kaWdpdW0uY29tICYgaHR0cDovL2FzdGVyaXNrLm9yZwoKLS0KX19f
    X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
    X19fX19fX19fCi0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8v d3d3LmFwaS1kaWdpdGFsLmNvbSAtLQpOZXcgdG8gQXN0ZXJpc2s/IEpvaW4gdXMgZm9yIGEgbGl2
    ZSBpbnRyb2R1Y3Rvcnkgd2ViaW5hciBldmVyeSBUaHVyczoKICAgICAgICAgICAgICAgaHR0cDov
    L3d3dy5hc3Rlcmlzay5vcmcvaGVsbG8KCmFzdGVyaXNrLXVzZXJzIG1haWxpbmcgbGlzdApUbyBV
    TlNVQlNDUklCRSBvciB1cGRhdGUgb3B0aW9ucyB2aXNpdDoKICAgaHR0cDovL2xpc3RzLmRpZ2l1
    bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw==

  • DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogYXN0ZXJpc2stdXNlcnMt
    Ym91bmNlc0BsaXN0cy5kaWdpdW0uY29tIFttYWlsdG86YXN0ZXJpc2stdXNlcnMtDQo+IGJvdW5j
    ZXNAbGlzdHMuZGlnaXVtLmNvbV0gT24gQmVoYWxmIE9mIE1hdHRoZXcgSm9yZGFuDQo+IFNlbnQ6
    IFR1ZXNkYXksIEp1bHkgMDMsIDIwMTIgMjoyNyBQTQ0KPiBUbzogQXN0ZXJpc2sgVXNlcnMgTWFp bGluZyBMaXN0IC0gTm9uLUNvbW1lcmNpYWwgRGlzY3Vzc2lvbg0KPiBTdWJqZWN0OiBSZTogW2Fz dGVyaXNrLXVzZXJzXSBJQVggdHJ1bmtpbmcgc3RvcHBlZCB3b3JraW5nDQo+IA0KPiANCj4gLS0t
    LS0gT3JpZ2luYWwgTWVzc2FnZSAtLS0tLQ0KPiANCj4gPiBGcm9tOiAiTm9haCBFbmdlbGJlcnRo
    IiA8Tm9haEBkaXJlY3RsaW5rY29tcHV0ZXJzLmNvbT4NCj4gPiBUbzogIkFzdGVyaXNrIFVzZXJz
    IE1haWxpbmcgTGlzdCAtIE5vbi1Db21tZXJjaWFsIERpc2N1c3Npb24iDQo+ID4gPGFzdGVyaXNr
    LXVzZXJzQGxpc3RzLmRpZ2l1bS5jb20+DQo+ID4gU2VudDogVHVlc2RheSwgSnVseSAzLCAyMDEy
    IDEwOjU2OjEwIEFNDQo+ID4gU3ViamVjdDogW2FzdGVyaXNrLXVzZXJzXSBJQVggdHJ1bmtpbmcg c3RvcHBlZCB3b3JraW5nDQo+IA0KPiA+IEkgYWRtaW5pc3RlciBhIGdyb3VwIG9mIEFzdGVyaXNr
    IHNlcnZlcnMgcnVubmluZyBhIG1peCBvZiAxMC4zLCAxMC40LA0KPiA+IGFuZCAxLjguOC4xICht b3N0bHkgMTAuNCkuIE9uZSBvZiB0aG9zZSBzZXJ2ZXJzIGlzIGEgY2FsbA0KPiA+IGNvbmNlbnRy
    YXRvci9yZWxheSBmb3IgRTkxMSBzZXJ2aWNlLiBBbGwgb2YgdGhlIG90aGVyIHNlcnZlcnMgbWFr
    ZSBhbg0KPiA+IElBWCBjb25uZWN0aW9uIHRvIHRoZSByZWxheSBzZXJ2ZXIsIHdoaWNoIHRoZW4g aGFuZHMgb2ZmIHRvIGEgU0lQDQo+ID4gdHJ1bmsgdG8gbXkgRTkxMSBwcm92aWRlci4gSXQgYWxs
    IHdvcmtlZCBhcyByZWNlbnRseSBhcyAyIHdlZWtzIGFnbywNCj4gPiBidXQgSSBkaXNjb3ZlcmVk
    IHRoYXQgc29tZXRpbWUgYmV0d2VlbiB0aGVuIGFuZCBub3cgaXQgc3RvcHBlZCB3b3JraW5nDQo+
    ID4gd2l0aG91dCBhbnkgZXhwbGFuYXRpb24uIExhc3QgbW9kaWZpZWQgdGltZSBvbiB0aGUgY29u
    ZmlnIGZpbGVzIGlzDQo+ID4gb3ZlciAyIG1vbnRocyBhZ28uDQo+IA0KPiA+IFRoZSBzZXR1cCBp cyBhcyBmb2xsb3dzOg0KPiANCj4gPiBPbiB0aGUgY2FsbCByZWxheSAoSUFYIOKAnHJlY2VpdmVy
    4oCdKQ0KPiA+IFtteS1yZW1vdGUtc2VydmVyXQ0KPiA+IHR5cGU9dXNlcg0KPiA+IGhvc3Q9ZHlu
    YW1pYw0KPiA+IHVzZXJuYW1lPW15LXJlbW90ZS11c2VybmFtZQ0KPiA+IGVuY3J5cHRpb249eWVz
    DQo+ID4gc2VjcmV0PW15LXJlbW90ZS1zZWNyZXQNCj4gPiBjb250ZXh0PW15LWNhbGwtY29udGV4
    dA0KPiA+IGRlbnk9MC4wLjAuMC8wLjAuMC4wDQo+ID4gcGVybWl0PXJlbW90ZS5zZXJ2ZXIuaXAu
    YWRkcmVzcy8yNTUuMjU1LjI1NS4yNTUNCj4gDQo+ID4gT24gdGhlIFZvSVAgc2VydmVycyAoSUFY
    IOKAnHNlbmRlcuKAnSkNCj4gPiAtIE9uZSBvZiB0aGUgc2VydmVycyBpcyBzZXQgdG8gcmVnaXN0
    ZXI6IHJlZ2lzdGVyID0+DQo+ID4gbXktcmVtb3RlLXVzZXJuYW1lOm15LXJlbW90ZS1zZWNyZXRA
    Y2FsbC5yZWxheS5zZXJ2ZXIuaXANCj4gPiAtIEFub3RoZXIgaXMgc2V0IHRvIGp1c3QgdXNlIHRo
    ZSBwZWVyIGRlZmluaXRpb24gYXMgYmVsb3cgd2l0aG91dA0KPiA+IHRyeWluZyB0byByZWdpc3Rl ciBbbXktcmVtb3RlLXNlcnZlcl0gdHlwZT1wZWVyDQo+ID4gaG9zdD1jYWxsLnJlbGF5LnNlcnZl ci5pcCB1c2VybmFtZT1teS1yZW1vdGUtdXNlcm5hbWUNCj4gPiBzZWNyZXQ9bXktcmVtb3RlLXNl
    Y3JldCBxdWFsaWZ5PW5vDQo+IA0KPiA+IERpYWxwbGFuIG9uIHRoZSBWb0lQIHNlcnZlcnM6DQo+
    ID4gZXh0ZW4gPT4gOTExLDEsVmVyYm9zZSgpDQo+ID4gc2FtZSA9PiBuLERpYWwoSUFYMi9teS1y
    ZW1vdGUtc2VydmVyLzkxMSkNCj4gDQo+ID4gRGlhbHBsYW4gb24gdGhlIHJlbGF5IHNlcnZlcjoN
    Cj4gPiBbbXktY2FsbC1jb250ZXh0XQ0KPiA+IGV4dGVuID0+IDkxMSwxLFZlcmJvc2UoKQ0KPiA+
    IHNhbWUgPT4gbixEaWFsKFJlbGF5IHRvIEU5MTEpDQo+IA0KPiA+IFRoZSBpc3N1ZSBJ4oCZbSBz
    ZWVpbmcgaXMgdGhpczoNCj4gPiAtIE9uIHRoZSBzZXJ2ZXJzIHRoYXQgYXJlIHNldCB0byByZWdp c3RlciwgdGhlIHJlbGF5IHNlcnZlciBpcw0KPiA+IHJlamVjdGluZyB0aGUgcmVnaXN0cmF0aW9u
    IChJ4oCZdmUgY29uZmlybWVkIHRoZQ0KPiA+IHVzZXJuYW1lL3BlZXJuYW1lL3NlY3JldHMgYXJl
    IGFuIGV4YWN0IG1hdGNoIG9uIGJvdGggc2lkZXMsIGFuZA0KPiA+IG5vdGhpbmcgaGFzIGNoYW5n
    ZWQgZnJvbSB3aGVuIHRoZXkgd2VyZSB3b3JraW5nKS4gSUFYIGRlYnVnIG9uIHRoZQ0KPiA+IHJl bGF5IHNlcnZlciBzaG93cyB0aGUgYXV0aHMgY29tZSBpbiBhbmQgdGhlIHJlbGF5IHNlcnZlciBz
    ZW5kIFJFR1JFSg0KPiA+IOKAkyBSZWdpc3RyYXRpb24gUmVmdXNlZCwgQ2F1c2UgQ29kZSAyOS4g
    SUFYIGRlYnVnIG9uIHRoZSBzZXJ2ZXINCj4gPiBhdHRlbXB0aW5nIHRvIHJlZ2lzdGVyIHNob3dz
    IHNlbmRpbmcgdGhlIFJFR0FVVEggcGFja2V0cyBhbmQgcmVjZWl2aW5nDQo+ID4gdGhlIFJFR1JF
    SiBwYWNrZXRzLiBUaGUgSVAgYWRkcmVzcyBzaG93biBpbiB0aGUgSUFYIGRlYnVnIHBhY2tldHMN
    Cj4gPiBtYXRjaGVzIHRoZSBJUCBhZGRyZXNzIGluIHRoZSBwZXJtaXQgcnVsZSBmb3IgZWFjaCBw
    ZWVyIHRoYXTigJlzDQo+ID4gc3VwcG9zZWQgdG8gcmVnaXN0ZXIuDQo+IA0KPiBDYW4geW91IHNl dCBhdXRoZGVidWcgYW5kIGlheGRlYnVnIHRvIHRydWUgaW4geW91ciBpYXgyIGNvbmZpZ3VyYXRp b24gLQ0KPiBwcmVmZXJhYmx5IG9uIGJvdGggZW5kcywgYnV0IGluIHBhcnRpY3VsYXIgb24gdGhl
    IHNlcnZlciB0aGF0IGlzIHNlcnZpY2luZyB0aGUNCj4gcmVnaXN0cmF0aW9uIGF0dGVtcHQgLSBh bmQgcG9zdCB0aGUgcG9ydGlvbiBvZiB0aGUgREVCVUcgbG9ncyB0aGF0IHNob3dzIGl0DQo+IHJl amVjdGluZyB0aGUgcmVnaXN0cmF0aW9uPw0KPiANCj4gU29tZXRoaW5nIGlzIGZhaWxpbmcgYXV0
    aGVudGljYXRpb24sIGFuZCBhdXRoZGVidWcgc2hvdWxkIHRlbGwgdXMgYXQgbGVhc3Qgd2h5DQo+
    IHRoZSBzZXJ2ZXIgdGhpbmtzIGl0IHNob3VsZCByZWplY3QgdGhlIGF0dGVtcHQuDQo+IA0KDQpB
    ZnRlciBzb21lIG1vcmUgbWVzc2luZyBhcm91bmQsIEkgdGhpbmsgaXQncyBteSBjb25maWd1cmF0
    aW9uIGVycm9yIG9uIHRoZSByZWdpc3RyYXRpb24uICBJIGhhdmUgdGhlIHBlZXJzIG9uIHRoZSAi cmVjZWl2aW5nIiBzZXJ2ZXIgc2V0IHVwIGFzIHVzZXJzLCBub3QgZnJpZW5kcywgc2luY2UgdGhl
    IGNhbGxzIHdpbGwgb25seSBiZSBvbmUtd2F5IGZyb20gdGhlIFZvSVAgc2VydmVycyB0byB0aGUg cmVsYXkgc2VydmVyLiAgV2l0aCB0aGUgZGVidWdzIG9uLCB0aGUgZXJyb3Igb24gcmVnaXN0cmF0
    aW9uIGlzIFtKdWwgIDMgMTQ6NTI6NDBdIE5PVElDRVsxNDQ3XTogY2hhbl9pYXgyLmM6ODEwMCBy
    ZWdpc3Rlcl92ZXJpZnk6IE5vIHJlZ2lzdHJhdGlvbiBmb3IgcGVlciAnbXktcmVtb3RlLXBlZXIn
    IChmcm9tIHJlbW90ZS5wZWVyLmlwLmFkZHJlc3MpLiAgQ2hhbmdpbmcgdGhlICJyZWNlaXZpbmci
    IHNlcnZlcidzIGRlZmluaXRpb24gdG8gYSBmcmllbmQgYW5kIHB1dHRpbmcgaW4gYSBob3N0PWR5
    bmFtaWMgbGluZSBtYWtlcyB0aGUgZXJyb3JzIGdvIGF3YXkgYW5kIHJlZ2lzdHJhdGlvbiB3b3Jr
    IGFzIGV4cGVjdGVkLiAgU28gSSBndWVzcyB0aGF0IHdhcyBsZWdhY3kgY3J1ZnQgY29uZmlndXJh dGlvbiBjYXVzaW5nIG1lIGNvbmZ1c2lvbiB0aGVyZSwgc29ycnkuDQoNCj4gPiAtIE9uIHRoZSBz
    ZXJ2ZXIgdGhhdCBpcyBzZXQgdG8ganVzdCBzZW5kIHRoZSBjYWxscywgYW4gYXR0ZW1wdCB0byBk aWFsDQo+ID4gOTExIGp1c3QgaGFuZ3MgZm9yIDYwIHNlY29uZHMgYW5kIGV2ZW50dWFsbHkgdGlt
    ZXMgb3V0IHdpdGhvdXQgc2VuZGluZw0KPiA+IHRoZSBjYWxsLiBJQVggZGVidWcgb24gdGhlIHJl bGF5IHNlcnZlciBzaG93cyB0aGUgY2FsbCBzdGFydCBmcmFtZSBnZXQNCj4gPiBSWOKAmWQsIHNo b3dzIHRoZSByZWxheSBzZXJ2ZXIgdHJ5IHRvIFRYIGEgQ1RPS0VOIGZyYW1lLCBhbmQgbm90aGlu
    Zw0KPiA+IGZ1cnRoZXIgKG90aGVyIHRoYW4gcmV0cmFuc21pc3Npb25zIG9mIHRoZSBjYWxsIHN0
    YXJ0IGZyYW1lKS4gSUFYDQo+ID4gZGVidWcgb24gdGhlIHNlcnZlciB0cnlpbmcgdG8gc2VuZCB0
    aGUgY2FsbCB0byB0aGUgcmVsYXkgc2VydmVyIHNob3dzDQo+ID4gdGhlIFRYIGZvciB0aGUgY2Fs bCBzdGFydCBmcmFtZSwgYnV0IG5vIFJYIGZvciB0aGUgQ1RPS0VOIGZyYW1lcy4NCj4gDQo+IElz
    IHRoaXMgdGhlIHNhbWUgc2VydmVyIHRoYXQgZmFpbGVkIHRvIHJlZ2lzdGVyPyAgSWYgc28sIGl0
    IG1heSBiZSBiZXN0IHRvIGZvY3VzDQo+IG9uIHRoYXQgcHJvYmxlbSBmaXJzdC4NCj4gDQoNCk5v
    LCBkaWZmZXJlbnQgc2VydmVyLiAgQWxzbywgYWZ0ZXIgZG9pbmcgc29tZSBmdXJ0aGVyIGludmVz dGlnYXRpb24sIGl0IGxvb2tzIGxpa2UgbXkgcHJvYmxlbSBvZiBuby1jYWxscyBtYXkgYmUgbmV0
    d29yayByZWxhdGVkIC0tIGlmIEkgY2hhbmdlIHdoYXQgdmxhbiB0aGUgInJlY2VpdmluZyIgc2Vy dmVyIHVzZXMgdG8gY29ubmVjdCB0byB0aGUgbmV0d29yayBzbyBpdCBpcyBpbnRlcm5hbCB0byBt eSBMQU4sIHRoZSBJQVggY29ubmVjdGlvbnMgc3RhcnQgbW9zdGx5IHdvcmtpbmcgKHRob3VnaCBJ
    IGJyZWFrIG15IHRydW5rIGNvbm5lY3Rpb24gdG8gbXkgRTkxMSBwcm92aWRlciwgYW5kIHRoZSBv bmUgc2VydmVyIHRoYXQgY29ubmVjdHMgaGFzIGEgTkFUIGlzc3VlLCBidXQgdGhhdCdzIGRlZmlu aXRlbHkgYSBuZXR3b3JrIHByb2JsZW0pLiAgIFdoZW4gdGhlIHNlcnZlciBpcyBjb25uZWN0ZWQg dG8gbXkgUHVibGljIElQIFZMQU4sIHRoZSBTSVAgdHJ1bmsgdG8gdGhlIEU5MTEgcHJvdmlkZXIg d29ya3MsIGJ1dCB0aGUgSUFYIGNvbm5lY3Rpb25zIGRvbid0Lg0KDQo+ID4gVWx0aW1hdGVseSwg dGhpcyBoYXMgZ29uZSBmcm9tIHdvcmtpbmcgdG8gdG90YWxseSBicm9rZW4gd2l0aG91dCBhbnkN
    Cj4gPiBhcHBhcmVudCBjaGFuZ2UgdG8gbXkgY29uZmlndXJhdGlvbi4gSSBuZWVkIGhlbHAgdG8g dHJ5IHRvDQo+ID4gdHJvdWJsZXNob290IGl0IGZ1cnRoZXIsIEnigJl2ZSB0cmllZCBldmVyeXRo aW5nIEkgY2FuIHRoaW5rIG9mDQo+ID4gKGluY2x1ZGluZyB0cmFuc2ZlcnJpbmcgdGhlIGJhY2tl
    ZC11cCB3b3JraW5nIGNvbmZpZyBmaWxlcyB0byBhIGJyYW5kDQo+ID4gbmV3IGNsZWFuLWxvYWQg c2VydmVyLCB1cGdyYWRpbmcgQXN0ZXJpc2ssIGFuZCByZWNyZWF0aW5nIHRoZQ0KPiA+IGNvbmZp
    Z3VyYXRpb25zIGJ5IGhhbmQpLCBhbmQgbm90aGluZyBzZWVtcyB0byBiZSBoZWxwaW5nLg0KPiAN
    Cj4gU2luY2UgeW91IGhhdmUgYSBudW1iZXIgb2YgZGlmZmVyZW50IHNlcnZlcnMgcnVubmluZyBk aWZmZXJlbnQgdmVyc2lvbnMgb2YNCj4gQXN0ZXJpc2ssIGNhbiB5b3UgcHJvdmlkZSB3aGljaCBz
    ZXJ2ZXIgaW4geW91ciBzY2VuYXJpbyBpcyBydW5uaW5nIHdoaWNoDQo+IHZlcnNpb24/DQoNCiJS
    ZWNlaXZpbmciIHNlcnZlciAtIDEwLjQuMA0KVm9JUCBzZXJ2ZXIgSSB3YXMgdHJ5aW5nIHRvIHJl
    Z2lzdGVyIGZyb20gLSAxMC40LjANClZvSVAgc2VydmVyIHRoYXQgSSB3YXMgZ2V0dGluZyB0aGUg aGFuZ2luZyBjYWxscyBmcm9tIC0gMTAuNC4wDQoNCkkgaGF2ZSBhIGNvdXBsZSBvdGhlcnMgcnVu bmluZyAxMC4zLjAgb3IgMS44LjguMSB0aGF0IGNvbm5lY3QgdGhyb3VnaCB0aGlzIHRoYXQgc2hv dyAiVU5SRUFDSEFCTEUiIHdoZW4gdGhleSB0cnkgdG8gcXVhbGlmeSB0aGUgIlJlY2VpdmluZyIg c2VydmVyIHBlZXIgdmlhIElBWCBpZiB0aGUgInJlY2VpdmluZyIgc2VydmVyIGlzIGNvbm5lY3Rl
    ZCB0byBteSBQdWJsaWMgSVAgVkxBTiwgYnV0IGNhbiBjb21wbGV0ZSBxdWFsaWZ5IGNoZWNrcyBp
    ZiB0aGUgInJlY2VpdmluZyIgc2VydmVyIGlzIGluIHRoZSBQcml2YXRlIExBTiBuZXR3b3JrLiAg
    SSBkb24ndCBoYXZlIGFjY2VzcyB0byBwaG9uZXMgb24gdGhvc2Ugc3lzdGVtcyB0byBwbGFjZSB0
    ZXN0IGNhbGxzIHdpdGgsIHVuZm9ydHVuYXRlbHkuDQoNCg0KQWFhYWFuZCwgYWZ0ZXIgYWJvdXQg
    ZmlmdGVlbiBtb3JlIG1pbnV0ZXMgb2YgZmxpcHBpbmcgdGhpbmdzIHRoaXMsIHRoYXQsIGFuZCB0
    aGUgb3RoZXIgd2F5IHdoaWxlIHRyeWluZyB0byBjb21waWxlIHRoZSBpbmZvcm1hdGlvbiBmb3Ig dGhpcyByZXBseSwgZXZlcnl0aGluZydzIHdvcmtpbmcgYWdhaW4uICBBdWdoLCBJIGhhdGUgdGVj aG5vbG9neSENCg0KVGhhbmtzIGZvciB5b3VyIGhlbHAuICBMb29rcyBsaWtlIHRoaXMgd2FzIHNv bWUgc29ydCBvZiBuZXR3b3JrIGlzc3VlIG9uIG15IGVuZCwgd2lzaCBJIGhhZCBhIGJldHRlciBn cmFzcCBvZiB3aGF0IGhhcHBlbmVkIHNvIEkgY2FuIHByZXZlbnQgaXQgaW4gdGhlIGZ1dHVyZS4N
    Cg0KPiANCj4gPiBUaGFuayB5b3UsDQo+IA0KPiA+IE5vYWggRW5nZWxiZXJ0aA0KPiA+IE1ldGFM
    SU5LIFRlY2hub2xvZ2llcw0KPiANCj4gDQo+IA0KPiAtLQ0KPiBNYXR0aGV3IEpvcmRhbg0KPiBE
    aWdpdW0sIEluYy4gfCBTb2Z0d2FyZSBEZXZlbG9wZXINCj4gNDQ1IEphbiBEYXZpcyBEcml2ZSBO
    VyAtIEh1bnRzdmlsbGUsIEFMIDM1ODA2IC0gVVNBIENoZWNrIHVzIG91dCBhdDoNCj4gaHR0cDov
    L2RpZ2l1bS5jb20gJiBodHRwOi8vYXN0ZXJpc2sub3JnDQo+IA0KPiAtLQ0KPiBfX19fX19fX19f
    X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IF9fX19f
    X19fX19fDQo+IC0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBodHRwOi8v d3d3LmFwaS1kaWdpdGFsLmNvbSAtLSBOZXcNCj4gdG8gQXN0ZXJpc2s/IEpvaW4gdXMgZm9yIGEg bGl2ZSBpbnRyb2R1Y3Rvcnkgd2ViaW5hciBldmVyeSBUaHVyczoNCj4gICAgICAgICAgICAgICAg aHR0cDovL3d3dy5hc3Rlcmlzay5vcmcvaGVsbG8NCj4gDQo+IGFzdGVyaXNrLXVzZXJzIG1haWxp bmcgbGlzdA0KPiBUbyBVTlNVQlNDUklCRSBvciB1cGRhdGUgb3B0aW9ucyB2aXNpdDoNCj4gICAg aHR0cDovL2xpc3RzLmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw0K
    LS0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
    X19fX19fX19fX19fX19fCi0tIEJhbmR3aWR0aCBhbmQgQ29sb2NhdGlvbiBQcm92aWRlZCBieSBo dHRwOi8vd3d3LmFwaS1kaWdpdGFsLmNvbSAtLQpOZXcgdG8gQXN0ZXJpc2s/IEpvaW4gdXMgZm9y
    IGEgbGl2ZSBpbnRyb2R1Y3Rvcnkgd2ViaW5hciBldmVyeSBUaHVyczoKICAgICAgICAgICAgICAg aHR0cDovL3d3dy5hc3Rlcmlzay5vcmcvaGVsbG8KCmFzdGVyaXNrLXVzZXJzIG1haWxpbmcgbGlz dApUbyBVTlNVQlNDUklCRSBvciB1cGRhdGUgb3B0aW9ucyB2aXNpdDoKICAgaHR0cDovL2xpc3Rz
    LmRpZ2l1bS5jb20vbWFpbG1hbi9saXN0aW5mby9hc3Rlcmlzay11c2Vycw==