From miconda@gmail.com Tue Jan 21 17:31:04 2020 From: Daniel-Constantin Mierla To: sr-users@lists.kamailio.org Subject: Re: [SR-Users] pipelimit: inexistent pipe error logs Date: Tue, 21 Jan 2020 17:30:48 +0100 Message-ID: <5362ed8e-bd90-e813-46a0-7bd63bbd7caf@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0402518355==" --===============0402518355== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hello, as I said, watch the traffic on port 8000 with ngrep or some other network sniffer to see what data comes there. You can also start kamailio with debug=3D3 in config, more debug logs should be printed to syslog to get the context of what is processed at that time. Cheers, Daniel On 21.01.20 16:31, Nuno Ferreira wrote: > Hi Daniel, > > Thanks for your feedback. > I have a dedicated listen directive for JSONRPC > listen =3D 127.0.0.1:8000 > > and then an event_route for it: > event_route[xhttp:request] { > =C2=A0 =C2=A0 if ($Rp !=3D 8000) { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 xhttp_reply("403", "Forbidden", "text/html", > "Forbidden"); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 exit; > =C2=A0 =C2=A0 } > =C2=A0 =C2=A0 if ($hu =3D~ "^/RPC") { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 jsonrpc_dispatch(); > =C2=A0 =C2=A0 } else { > =C2=A0 =C2=A0 =C2=A0 =C2=A0 xhttp_reply("200", "OK", "text/html", "Wrong URL > $hu"); > =C2=A0 =C2=A0 } > =C2=A0 =C2=A0 return; > } > > So, I'm already doing HTTP traffic only in port 8000. > The interesting part is that if I use kamcmd pl.list pipe_INVITE, only > the first log line is printed. Using curl, I see the other 2 logs all > the time. > > Thank you > > On Tue, Jan 21, 2020 at 2:45 PM Daniel-Constantin Mierla > > wrote: > > Hello, > > can you want the traffic on port 8000 and see if there is no > "unexpected" traffic there? There should be no error message for > parsing the first line of an HTTP request. > > The error message related the missing pipe can be made debug. > > Cheers, > Daniel > > On 21.01.20 15:34, Nuno Ferreira wrote: >> Hi all, >> >> I'm using pipelimit with the "clean_unused" option to get rid of >> pipes that are not used for quite some time. At the same time we >> are monitoring pipelimit with a jsonrpc call similar to: >> >> # curl --header 'Content-Type: application/json' --data-binary >> '{"id": 1, "jsonrpc": "2.0", "method": "pl.list", "params": >> ["pipe_INVITE"]' http://127.0.0.1:8000/RPC >> >> Reply: >> { >> =C2=A0 =C2=A0"jsonrpc": "2.0", >> =C2=A0 =C2=A0"error": { >> =C2=A0 =C2=A0 =C2=A0 "code": 400, >> =C2=A0 =C2=A0 =C2=A0 "message": "Unknown pipe id pipe_INVITE" >> =C2=A0 =C2=A0}, >> =C2=A0 =C2=A0"id": 1 >> } >> >> The above reply is valid because the pipe_INVITE was not loaded >> yet, but the request makes kamailio to log the following log >> messages: >> >> Jan 20 11:21:48 proxy1 kamailio[24474]: ERROR: pipelimit >> [pl_ht.c:519]: rpc_pl_list(): no pipe: pipe_INVITE >> Jan 20 11:21:48 proxy1 kamailio[24474]: ERROR: >> [core/parser/parse_fline.c:262]: parse_first_line(): >> parse_first_line: bad message (offset: 20) >> Jan 20 11:21:48 proxy1 kamailio[24474]: [466B blob data] >> >> Since the monitoring system does periodic requests, those log >> lines get a bit annoying and fill the log with ERROR messages >> that aren't really errors. >> >> IMHO the first log line should be converted to DEBUG instead of >> ERROR, but I have some doubts about the one >> from=C2=A0parse_fline.c:262.=C2=A0parse_first_line() is used to process >> both SIP and HTTP. It makes sense to log ERROR if SIP but not in >> the case of HTTP... >> Regarding the "[466B blob data]" I really don't know from where >> it's coming from. >> I can submit a PR, but I would like to have first some feedback >> from you. >> >> Thank you, >> >> Nuno >> >> >> *Confidentiality Notice: The information contained in this e-mail >> and any >> attachments may be confidential. If you are not an intended >> recipient, you >> are hereby notified that any dissemination, distribution or >> copying of this >> e-mail is strictly prohibited. If you have received this e-mail >> in error, >> please notify the sender and permanently delete the e-mail and any >> attachments immediately. You should not retain, copy or use this >> e-mail or >> any attachment for any purpose, nor disclose all or any part of the >> contents to any other person. Thank you.* >> >> _______________________________________________ >> Kamailio (SER) - Users Mailing List >> sr-users(a)lists.kamailio.org >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users > > --=20 > Daniel-Constantin Mierla -- www.asipto.com > www.twitter.com/miconda -- www.linkedi= n.com/in/miconda > Kamailio Advanced Training - March 9-11, 2020, Berlin - www.asipto.com = > Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamaili= oworld.com > > > > *Confidentiality Notice: The information contained in this e-mail and any > attachments may be confidential. If you are not an intended recipient, you > are hereby notified that any dissemination, distribution or copying of > this > e-mail is strictly prohibited. If you have received this e-mail in error, > please notify the sender and permanently delete the e-mail and any > attachments immediately. You should not retain, copy or use this e-mail or > any attachment for any purpose, nor disclose all or any part of the > contents to any other person. Thank you.*=20 --=20 Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - March 9-11, 2020, Berlin - www.asipto.com Kamailio World Conference - April 27-29, 2020, in Berlin -- www.kamailioworld= .com --===============0402518355== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl bnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+ SGVsbG8sPC9wPgogICAgPHA+YXMgSSBzYWlkLCB3YXRjaCB0aGUgdHJhZmZpYyBvbiBwb3J0IDgw MDAgd2l0aCBuZ3JlcCBvciBzb21lCiAgICAgIG90aGVyIG5ldHdvcmsgc25pZmZlciB0byBzZWUg d2hhdCBkYXRhIGNvbWVzIHRoZXJlLiBZb3UgY2FuIGFsc28KICAgICAgc3RhcnQga2FtYWlsaW8g d2l0aCBkZWJ1Zz0zIGluIGNvbmZpZywgbW9yZSBkZWJ1ZyBsb2dzIHNob3VsZCBiZQogICAgICBw cmludGVkIHRvIHN5c2xvZyB0byBnZXQgdGhlIGNvbnRleHQgb2Ygd2hhdCBpcyBwcm9jZXNzZWQg YXQgdGhhdAogICAgICB0aW1lLjwvcD4KICAgIDxwPkNoZWVycyw8YnI+CiAgICAgIERhbmllbDxi cj4KICAgIDwvcD4KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+T24gMjEuMDEuMjAg MTY6MzEsIE51bm8gRmVycmVpcmEgd3JvdGU6PGJyPgogICAgPC9kaXY+CiAgICA8YmxvY2txdW90 ZSB0eXBlPSJjaXRlIgpjaXRlPSJtaWQ6Q0ErOTQ1X09acDYwY3JXM3RwTVJkdHFiUm5UUkF2VmFC RnpEVj09TjBVN1lUT0hkYndRQG1haWwuZ21haWwuY29tIj4KICAgICAgPG1ldGEgaHR0cC1lcXVp dj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogICAg ICA8ZGl2IGRpcj0ibHRyIj4KICAgICAgICA8ZGl2IGRpcj0ibHRyIj5IaSBEYW5pZWwsCiAgICAg ICAgICA8ZGl2Pjxicj4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPGRpdj5UaGFua3MgZm9y IHlvdXIgZmVlZGJhY2suPC9kaXY+CiAgICAgICAgICA8ZGl2PkkgaGF2ZSBhIGRlZGljYXRlZCBs aXN0ZW4gZGlyZWN0aXZlIGZvciBKU09OUlBDPC9kaXY+CiAgICAgICAgICA8ZGl2Pjxmb250IGZh Y2U9Im1vbm9zcGFjZSI+bGlzdGVuID0gPGEKICAgICAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly8x MjcuMC4wLjE6ODAwMCIgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICBtb3otZG8tbm90 LXNlbmQ9InRydWUiPjEyNy4wLjAuMTo4MDAwPC9hPjwvZm9udD48YnI+CiAgICAgICAgICA8L2Rp dj4KICAgICAgICAgIDxkaXY+PGJyPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8ZGl2PmFu ZCB0aGVuIGFuIGV2ZW50X3JvdXRlIGZvciBpdDo8L2Rpdj4KICAgICAgICAgIDxkaXY+PGZvbnQg ZmFjZT0ibW9ub3NwYWNlIj5ldmVudF9yb3V0ZVt4aHR0cDpyZXF1ZXN0XSB7PGJyPgogICAgICAg ICAgICAgIMKgIMKgIGlmICgkUnAgIT0gODAwMCkgezxicj4KICAgICAgICAgICAgICDCoCDCoCDC oCDCoCB4aHR0cF9yZXBseSgiNDAzIiwgIkZvcmJpZGRlbiIsICJ0ZXh0L2h0bWwiLAogICAgICAg ICAgICAgICImbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDtGb3JiaWRkZW4mbHQ7L2JvZHkmZ3Q7Jmx0 Oy9odG1sJmd0OyIpOzxicj4KICAgICAgICAgICAgICDCoCDCoCDCoCDCoCBleGl0Ozxicj4KICAg ICAgICAgICAgICDCoCDCoCB9PGJyPgogICAgICAgICAgICAgIMKgIMKgIGlmICgkaHUgPX4gIl4v UlBDIikgezxicj4KICAgICAgICAgICAgICDCoCDCoCDCoCDCoCBqc29ucnBjX2Rpc3BhdGNoKCk7 PGJyPgogICAgICAgICAgICAgIMKgIMKgIH0gZWxzZSB7PGJyPgogICAgICAgICAgICAgIMKgIMKg IMKgIMKgIHhodHRwX3JlcGx5KCIyMDAiLCAiT0siLCAidGV4dC9odG1sIiwKICAgICAgICAgICAg ICAiJmx0O2h0bWwmZ3Q7Jmx0O2JvZHkmZ3Q7V3JvbmcgVVJMCiAgICAgICAgICAgICAgJGh1Jmx0 Oy9ib2R5Jmd0OyZsdDsvaHRtbCZndDsiKTs8YnI+CiAgICAgICAgICAgICAgwqAgwqAgfTxicj4K ICAgICAgICAgICAgICDCoCDCoCByZXR1cm47PGJyPgogICAgICAgICAgICAgIH08YnI+CiAgICAg ICAgICAgIDwvZm9udD48L2Rpdj4KICAgICAgICAgIDxkaXY+PGJyPgogICAgICAgICAgPC9kaXY+ CiAgICAgICAgICA8ZGl2PlNvLCBJJ20gYWxyZWFkeSBkb2luZyBIVFRQIHRyYWZmaWMgb25seSBp biBwb3J0IDgwMDAuPC9kaXY+CiAgICAgICAgICA8ZGl2PlRoZSBpbnRlcmVzdGluZyBwYXJ0IGlz IHRoYXQgaWYgSSB1c2Uga2FtY21kIHBsLmxpc3QKICAgICAgICAgICAgcGlwZV9JTlZJVEUsIG9u bHkgdGhlIGZpcnN0IGxvZyBsaW5lIGlzIHByaW50ZWQuIFVzaW5nIGN1cmwsCiAgICAgICAgICAg IEkgc2VlIHRoZSBvdGhlciAyIGxvZ3MgYWxsIHRoZSB0aW1lLjwvZGl2PgogICAgICAgICAgPGRp dj48YnI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDxkaXY+VGhhbmsgeW91PC9kaXY+CiAg ICAgICAgPC9kaXY+CiAgICAgICAgPGJyPgogICAgICAgIDxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl Ij4KICAgICAgICAgIDxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBUdWUsIEph biAyMSwgMjAyMCBhdCAyOjQ1CiAgICAgICAgICAgIFBNIERhbmllbC1Db25zdGFudGluIE1pZXJs YSAmbHQ7PGEKICAgICAgICAgICAgICBocmVmPSJtYWlsdG86bWljb25kYUBnbWFpbC5jb20iIHRh cmdldD0iX2JsYW5rIgogICAgICAgICAgICAgIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSI+bWljb25k YUBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICAg IDxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBw eAogICAgICAgICAgICAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQKICAgICAgICAgICAgcmdi KDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij4KICAgICAgICAgICAgPGRpdj4KICAgICAg ICAgICAgICA8cD5IZWxsbyw8L3A+CiAgICAgICAgICAgICAgPHA+Y2FuIHlvdSB3YW50IHRoZSB0 cmFmZmljIG9uIHBvcnQgODAwMCBhbmQgc2VlIGlmIHRoZXJlCiAgICAgICAgICAgICAgICBpcyBu byAidW5leHBlY3RlZCIgdHJhZmZpYyB0aGVyZT8gVGhlcmUgc2hvdWxkIGJlIG5vCiAgICAgICAg ICAgICAgICBlcnJvciBtZXNzYWdlIGZvciBwYXJzaW5nIHRoZSBmaXJzdCBsaW5lIG9mIGFuIEhU VFAKICAgICAgICAgICAgICAgIHJlcXVlc3QuPC9wPgogICAgICAgICAgICAgIDxwPlRoZSBlcnJv ciBtZXNzYWdlIHJlbGF0ZWQgdGhlIG1pc3NpbmcgcGlwZSBjYW4gYmUgbWFkZQogICAgICAgICAg ICAgICAgZGVidWcuPGJyPgogICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICA8cD5DaGVl cnMsPGJyPgogICAgICAgICAgICAgICAgRGFuaWVsPGJyPgogICAgICAgICAgICAgIDwvcD4KICAg ICAgICAgICAgICA8ZGl2Pk9uIDIxLjAxLjIwIDE1OjM0LCBOdW5vIEZlcnJlaXJhIHdyb3RlOjxi cj4KICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICA8YmxvY2txdW90ZSB0eXBlPSJj aXRlIj4KICAgICAgICAgICAgICAgIDxkaXYgZGlyPSJsdHIiPgogICAgICAgICAgICAgICAgICA8 ZGl2PkhpIGFsbCw8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAg ICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PkknbSB1c2luZyBwaXBlbGltaXQg d2l0aCB0aGUgImNsZWFuX3VudXNlZCIKICAgICAgICAgICAgICAgICAgICBvcHRpb24gdG8gZ2V0 IHJpZCBvZiBwaXBlcyB0aGF0IGFyZSBub3QgdXNlZCBmb3IKICAgICAgICAgICAgICAgICAgICBx dWl0ZSBzb21lIHRpbWUuIEF0IHRoZSBzYW1lIHRpbWUgd2UgYXJlIG1vbml0b3JpbmcKICAgICAg ICAgICAgICAgICAgICBwaXBlbGltaXQgd2l0aCBhIGpzb25ycGMgY2FsbCBzaW1pbGFyIHRvOjwv ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICAgIDxkaXY+PGZvbnQgZmFjZT0ibW9ub3NwYWNlIj4jIGN1cmwgLS1o ZWFkZXIKICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pz b24nIC0tZGF0YS1iaW5hcnkKICAgICAgICAgICAgICAgICAgICAgICd7ImlkIjogMSwgImpzb25y cGMiOiAiMi4wIiwgIm1ldGhvZCI6ICJwbC5saXN0IiwKICAgICAgICAgICAgICAgICAgICAgICJw YXJhbXMiOiBbInBpcGVfSU5WSVRFIl0nIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9 Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9SUEMiIHRhcmdldD0iX2JsYW5rIgogICAgICAgICAgICAg ICAgICAgICAgICBtb3otZG8tbm90LXNlbmQ9InRydWUiPmh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9S UEM8L2E+PGJyPgogICAgICAgICAgICAgICAgICAgICAgPGJyPgogICAgICAgICAgICAgICAgICAg IDwvZm9udD48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj48Zm9udCBmYWNlPSJhcmlhbCwg c2Fucy1zZXJpZiI+UmVwbHk6PC9mb250PjwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2Pjxm b250IGZhY2U9Im1vbm9zcGFjZSI+ezxicj4KICAgICAgICAgICAgICAgICAgICAgIMKgIMKgImpz b25ycGMiOiAiMi4wIiw8YnI+CiAgICAgICAgICAgICAgICAgICAgICDCoCDCoCJlcnJvciI6IHs8 YnI+CiAgICAgICAgICAgICAgICAgICAgICDCoCDCoCDCoCAiY29kZSI6IDQwMCw8YnI+CiAgICAg ICAgICAgICAgICAgICAgICDCoCDCoCDCoCAibWVzc2FnZSI6ICJVbmtub3duIHBpcGUgaWQgcGlw ZV9JTlZJVEUiPGJyPgogICAgICAgICAgICAgICAgICAgICAgwqAgwqB9LDxicj4KICAgICAgICAg ICAgICAgICAgICAgIMKgIMKgImlkIjogMTwvZm9udD48YnI+CiAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2Pjxmb250IGZhY2U9Im1vbm9zcGFjZSI+fTwvZm9u dD48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj48YnI+CiAgICAgICAgICAgICAgICAgIDwv ZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PlRoZSBhYm92ZSByZXBseSBpcyB2YWxpZCBiZWNh dXNlIHRoZSBwaXBlX0lOVklURQogICAgICAgICAgICAgICAgICAgIHdhcyBub3QgbG9hZGVkIHll dCwgYnV0IHRoZSByZXF1ZXN0IG1ha2VzIGthbWFpbGlvCiAgICAgICAgICAgICAgICAgICAgdG8g bG9nIHRoZSBmb2xsb3dpbmcgbG9nIG1lc3NhZ2VzOjwvZGl2PgogICAgICAgICAgICAgICAgICA8 ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+ PGZvbnQgZmFjZT0ibW9ub3NwYWNlIj5KYW4gMjAgMTE6MjE6NDggcHJveHkxCiAgICAgICAgICAg ICAgICAgICAgICBrYW1haWxpb1syNDQ3NF06IEVSUk9SOiBwaXBlbGltaXQgW3BsX2h0LmM6NTE5 XToKICAgICAgICAgICAgICAgICAgICAgIHJwY19wbF9saXN0KCk6IG5vIHBpcGU6IHBpcGVfSU5W SVRFPGJyPgogICAgICAgICAgICAgICAgICAgICAgSmFuIDIwIDExOjIxOjQ4IHByb3h5MSBrYW1h aWxpb1syNDQ3NF06IEVSUk9SOgogICAgICAgICAgICAgICAgICAgICAgJmx0O2NvcmUmZ3Q7IFtj b3JlL3BhcnNlci9wYXJzZV9mbGluZS5jOjI2Ml06CiAgICAgICAgICAgICAgICAgICAgICBwYXJz ZV9maXJzdF9saW5lKCk6IHBhcnNlX2ZpcnN0X2xpbmU6IGJhZCBtZXNzYWdlCiAgICAgICAgICAg ICAgICAgICAgICAob2Zmc2V0OiAyMCk8YnI+CiAgICAgICAgICAgICAgICAgICAgICBKYW4gMjAg MTE6MjE6NDggcHJveHkxIGthbWFpbGlvWzI0NDc0XTogWzQ2NkIgYmxvYgogICAgICAgICAgICAg ICAgICAgICAgZGF0YV08L2ZvbnQ+PC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+PGJyPgog ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRpdj5TaW5jZSB0aGUg bW9uaXRvcmluZyBzeXN0ZW0gZG9lcyBwZXJpb2RpYwogICAgICAgICAgICAgICAgICAgIHJlcXVl c3RzLCB0aG9zZSBsb2cgbGluZXMgZ2V0IGEgYml0IGFubm95aW5nIGFuZAogICAgICAgICAgICAg ICAgICAgIGZpbGwgdGhlIGxvZyB3aXRoIEVSUk9SIG1lc3NhZ2VzIHRoYXQgYXJlbid0IHJlYWxs eQogICAgICAgICAgICAgICAgICAgIGVycm9ycy48L2Rpdj4KICAgICAgICAgICAgICAgICAgPGRp dj48YnI+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICA8ZGl2PklN SE8gdGhlIGZpcnN0IGxvZyBsaW5lIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KICAgICAgICAgICAg ICAgICAgICBERUJVRyBpbnN0ZWFkIG9mIEVSUk9SLCBidXQgSSBoYXZlIHNvbWUgZG91YnRzIGFi b3V0CiAgICAgICAgICAgICAgICAgICAgdGhlIG9uZSBmcm9twqBwYXJzZV9mbGluZS5jOjI2Mi7C oHBhcnNlX2ZpcnN0X2xpbmUoKQogICAgICAgICAgICAgICAgICAgIGlzIHVzZWQgdG8gcHJvY2Vz cyBib3RoIFNJUCBhbmQgSFRUUC4gSXQgbWFrZXMgc2Vuc2UKICAgICAgICAgICAgICAgICAgICB0 byBsb2cgRVJST1IgaWYgU0lQIGJ1dCBub3QgaW4gdGhlIGNhc2Ugb2YgSFRUUC4uLjwvZGl2Pgog ICAgICAgICAgICAgICAgICA8ZGl2PlJlZ2FyZGluZyB0aGUgIls0NjZCIGJsb2IgZGF0YV0iIEkg cmVhbGx5IGRvbid0CiAgICAgICAgICAgICAgICAgICAga25vdyBmcm9tIHdoZXJlIGl0J3MgY29t aW5nIGZyb20uPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+SSBjYW4gc3VibWl0IGEgUFIs IGJ1dCBJIHdvdWxkIGxpa2UgdG8gaGF2ZSBmaXJzdAogICAgICAgICAgICAgICAgICAgIHNvbWUg ZmVlZGJhY2sgZnJvbSB5b3UuPC9kaXY+CiAgICAgICAgICAgICAgICAgIDxkaXY+PGJyPgogICAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgVGhhbmsgeW91LAogICAgICAg ICAgICAgICAgICA8ZGl2Pjxicj4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAg ICAgICAgIDxkaXY+TnVubzxiciBjbGVhcj0iYWxsIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2 Pjxicj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgPC9kaXY+ CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxicj4KICAgICAgICAgICAg ICAgIDxzcGFuCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNh bnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUp Ij4qQ29uZmlkZW50aWFsaXR5CiAgICAgICAgICAgICAgICAgIE5vdGljZTogVGhlIGluZm9ybWF0 aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGUtbWFpbCBhbmQKICAgICAgICAgICAgICAgICAgYW55PC9z cGFuPjxicgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5z LXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+ CiAgICAgICAgICAgICAgICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZh bWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdi KDI1NSwyNTUsMjU1KSI+YXR0YWNobWVudHMKICAgICAgICAgICAgICAgICAgbWF5IGJlIGNvbmZp ZGVudGlhbC4gSWYgeW91IGFyZSBub3QgYW4gaW50ZW5kZWQKICAgICAgICAgICAgICAgICAgcmVj aXBpZW50LCB5b3U8L3NwYW4+PGJyCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFt aWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2Io MjU1LDI1NSwyNTUpIj4KICAgICAgICAgICAgICAgIDxzcGFuCnN0eWxlPSJjb2xvcjpyZ2IoNTEs NTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dy b3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIj5hcmUKICAgICAgICAgICAgICAgICAgaGVyZWJ5 IG5vdGlmaWVkIHRoYXQgYW55IGRpc3NlbWluYXRpb24sIGRpc3RyaWJ1dGlvbgogICAgICAgICAg ICAgICAgICBvciBjb3B5aW5nIG9mIHRoaXM8L3NwYW4+PGJyCnN0eWxlPSJjb2xvcjpyZ2IoNTEs NTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dy b3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIj4KICAgICAgICAgICAgICAgIDxzcGFuCnN0eWxl PSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1z aXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIj5lLW1haWwKICAgICAg ICAgICAgICAgICAgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUgcmVjZWl2ZWQg dGhpcwogICAgICAgICAgICAgICAgICBlLW1haWwgaW4gZXJyb3IsPC9zcGFuPjxicgpzdHlsZT0i Y29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6 ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+CiAgICAgICAgICAgICAg ICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5z LXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+ cGxlYXNlCiAgICAgICAgICAgICAgICAgIG5vdGlmeSB0aGUgc2VuZGVyIGFuZCBwZXJtYW5lbnRs eSBkZWxldGUgdGhlIGUtbWFpbAogICAgICAgICAgICAgICAgICBhbmQgYW55PC9zcGFuPjxicgpz dHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2Zv bnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+CiAgICAgICAg ICAgICAgICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlh bCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUs MjU1KSI+YXR0YWNobWVudHMKICAgICAgICAgICAgICAgICAgaW1tZWRpYXRlbHkuIFlvdSBzaG91 bGQgbm90IHJldGFpbiwgY29weSBvciB1c2UgdGhpcwogICAgICAgICAgICAgICAgICBlLW1haWwg b3I8L3NwYW4+PGJyCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFs LHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwy NTUpIj4KICAgICAgICAgICAgICAgIDxzcGFuCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2Zv bnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xv cjpyZ2IoMjU1LDI1NSwyNTUpIj5hbnkKICAgICAgICAgICAgICAgICAgYXR0YWNobWVudCBmb3Ig YW55IHB1cnBvc2UsIG5vciBkaXNjbG9zZSBhbGwgb3IgYW55CiAgICAgICAgICAgICAgICAgIHBh cnQgb2YgdGhlPC9zcGFuPjxicgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWls eTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1 NSwyNTUsMjU1KSI+CiAgICAgICAgICAgICAgICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUx LDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91 bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+Y29udGVudHMKICAgICAgICAgICAgICAgICAgdG8g YW55IG90aGVyIHBlcnNvbi4gVGhhbmsgeW91Lio8L3NwYW4+IDxicj4KICAgICAgICAgICAgICAg IDxmaWVsZHNldD48L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPHByZT5fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpLYW1haWxpbyAoU0VSKSAtIFVzZXJz IE1haWxpbmcgTGlzdAo8YSBocmVmPSJtYWlsdG86c3ItdXNlcnNAbGlzdHMua2FtYWlsaW8ub3Jn IiB0YXJnZXQ9Il9ibGFuayIgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIj5zci11c2Vyc0BsaXN0cy5r YW1haWxpby5vcmc8L2E+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1i aW4vbWFpbG1hbi9saXN0aW5mby9zci11c2VycyIgdGFyZ2V0PSJfYmxhbmsiIG1vei1kby1ub3Qt c2VuZD0idHJ1ZSI+aHR0cHM6Ly9saXN0cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xp c3RpbmZvL3NyLXVzZXJzPC9hPgo8L3ByZT4KICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CiAg ICAgICAgICAgICAgPHByZSBjb2xzPSI3MiI+LS0gCkRhbmllbC1Db25zdGFudGluIE1pZXJsYSAt LSA8YSBocmVmPSJodHRwOi8vd3d3LmFzaXB0by5jb20iIHRhcmdldD0iX2JsYW5rIiBtb3otZG8t bm90LXNlbmQ9InRydWUiPnd3dy5hc2lwdG8uY29tPC9hPgo8YSBocmVmPSJodHRwOi8vd3d3LnR3 aXR0ZXIuY29tL21pY29uZGEiIHRhcmdldD0iX2JsYW5rIiBtb3otZG8tbm90LXNlbmQ9InRydWUi Pnd3dy50d2l0dGVyLmNvbS9taWNvbmRhPC9hPiAtLSA8YSBocmVmPSJodHRwOi8vd3d3Lmxpbmtl ZGluLmNvbS9pbi9taWNvbmRhIiB0YXJnZXQ9Il9ibGFuayIgbW96LWRvLW5vdC1zZW5kPSJ0cnVl Ij53d3cubGlua2VkaW4uY29tL2luL21pY29uZGE8L2E+CkthbWFpbGlvIEFkdmFuY2VkIFRyYWlu aW5nIC0gTWFyY2ggOS0xMSwgMjAyMCwgQmVybGluIC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hc2lw dG8uY29tIiB0YXJnZXQ9Il9ibGFuayIgbW96LWRvLW5vdC1zZW5kPSJ0cnVlIj53d3cuYXNpcHRv LmNvbTwvYT4KS2FtYWlsaW8gV29ybGQgQ29uZmVyZW5jZSAtIEFwcmlsIDI3LTI5LCAyMDIwLCBp biBCZXJsaW4gLS0gPGEgaHJlZj0iaHR0cDovL3d3dy5rYW1haWxpb3dvcmxkLmNvbSIgdGFyZ2V0 PSJfYmxhbmsiIG1vei1kby1ub3Qtc2VuZD0idHJ1ZSI+d3d3LmthbWFpbGlvd29ybGQuY29tPC9h PjwvcHJlPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDwvYmxvY2txdW90ZT4KICAgICAg ICA8L2Rpdj4KICAgICAgICA8ZGl2Pjxicj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAg ICAgIDxicj4KICAgICAgPHNwYW4Kc3R5bGU9ImNvbG9yOnJnYig1MSw1MSw1MSk7Zm9udC1mYW1p bHk6QXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigy NTUsMjU1LDI1NSkiPipDb25maWRlbnRpYWxpdHkKICAgICAgICBOb3RpY2U6IFRoZSBpbmZvcm1h dGlvbiBjb250YWluZWQgaW4gdGhpcyBlLW1haWwgYW5kIGFueTwvc3Bhbj48YnIKc3R5bGU9ImNv bG9yOnJnYig1MSw1MSw1MSk7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6 MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSkiPgogICAgICA8c3BhbgpzdHls ZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQt c2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+YXR0YWNobWVudHMK ICAgICAgICBtYXkgYmUgY29uZmlkZW50aWFsLiBJZiB5b3UgYXJlIG5vdCBhbiBpbnRlbmRlZCBy ZWNpcGllbnQsIHlvdTwvc3Bhbj48YnIKc3R5bGU9ImNvbG9yOnJnYig1MSw1MSw1MSk7Zm9udC1m YW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJn YigyNTUsMjU1LDI1NSkiPgogICAgICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtm b250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29s b3I6cmdiKDI1NSwyNTUsMjU1KSI+YXJlCiAgICAgICAgaGVyZWJ5IG5vdGlmaWVkIHRoYXQgYW55 IGRpc3NlbWluYXRpb24sIGRpc3RyaWJ1dGlvbiBvciBjb3B5aW5nCiAgICAgICAgb2YgdGhpczwv c3Bhbj48YnIKc3R5bGU9ImNvbG9yOnJnYig1MSw1MSw1MSk7Zm9udC1mYW1pbHk6QXJpYWwsc2Fu cy1zZXJpZjtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSki PgogICAgICA8c3BhbgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlh bCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUs MjU1KSI+ZS1tYWlsCiAgICAgICAgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4gSWYgeW91IGhhdmUg cmVjZWl2ZWQgdGhpcyBlLW1haWwgaW4KICAgICAgICBlcnJvciw8L3NwYW4+PGJyCnN0eWxlPSJj b2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXpl OjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIj4KICAgICAgPHNwYW4Kc3R5 bGU9ImNvbG9yOnJnYig1MSw1MSw1MSk7Zm9udC1mYW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtmb250 LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNTUsMjU1LDI1NSkiPnBsZWFzZQogICAg ICAgIG5vdGlmeSB0aGUgc2VuZGVyIGFuZCBwZXJtYW5lbnRseSBkZWxldGUgdGhlIGUtbWFpbCBh bmQgYW55PC9zcGFuPjxicgpzdHlsZT0iY29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpB cmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwy NTUsMjU1KSI+CiAgICAgIDxzcGFuCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFt aWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2Io MjU1LDI1NSwyNTUpIj5hdHRhY2htZW50cwogICAgICAgIGltbWVkaWF0ZWx5LiBZb3Ugc2hvdWxk IG5vdCByZXRhaW4sIGNvcHkgb3IgdXNlIHRoaXMgZS1tYWlsIG9yPC9zcGFuPjxicgpzdHlsZT0i Y29sb3I6cmdiKDUxLDUxLDUxKTtmb250LWZhbWlseTpBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6 ZToxNHB4O2JhY2tncm91bmQtY29sb3I6cmdiKDI1NSwyNTUsMjU1KSI+CiAgICAgIDxzcGFuCnN0 eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5OkFyaWFsLHNhbnMtc2VyaWY7Zm9u dC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1LDI1NSwyNTUpIj5hbnkKICAgICAg ICBhdHRhY2htZW50IGZvciBhbnkgcHVycG9zZSwgbm9yIGRpc2Nsb3NlIGFsbCBvciBhbnkgcGFy dCBvZiB0aGU8L3NwYW4+PGJyCnN0eWxlPSJjb2xvcjpyZ2IoNTEsNTEsNTEpO2ZvbnQtZmFtaWx5 OkFyaWFsLHNhbnMtc2VyaWY7Zm9udC1zaXplOjE0cHg7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjU1 LDI1NSwyNTUpIj4KICAgICAgPHNwYW4Kc3R5bGU9ImNvbG9yOnJnYig1MSw1MSw1MSk7Zm9udC1m YW1pbHk6QXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTRweDtiYWNrZ3JvdW5kLWNvbG9yOnJn YigyNTUsMjU1LDI1NSkiPmNvbnRlbnRzCiAgICAgICAgdG8gYW55IG90aGVyIHBlcnNvbi4gVGhh bmsgeW91Lio8L3NwYW4+CiAgICA8L2Jsb2NrcXVvdGU+CiAgICA8cHJlIGNsYXNzPSJtb3otc2ln bmF0dXJlIiBjb2xzPSI3MiI+LS0gCkRhbmllbC1Db25zdGFudGluIE1pZXJsYSAtLSA8YSBjbGFz cz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJodHRwOi8vd3d3LmFzaXB0by5jb20i Pnd3dy5hc2lwdG8uY29tPC9hPgo8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBo cmVmPSJodHRwOi8vd3d3LnR3aXR0ZXIuY29tL21pY29uZGEiPnd3dy50d2l0dGVyLmNvbS9taWNv bmRhPC9hPiAtLSA8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJodHRw Oi8vd3d3LmxpbmtlZGluLmNvbS9pbi9taWNvbmRhIj53d3cubGlua2VkaW4uY29tL2luL21pY29u ZGE8L2E+CkthbWFpbGlvIEFkdmFuY2VkIFRyYWluaW5nIC0gTWFyY2ggOS0xMSwgMjAyMCwgQmVy bGluIC0gPGEgY2xhc3M9Im1vei10eHQtbGluay1hYmJyZXZpYXRlZCIgaHJlZj0iaHR0cDovL3d3 dy5hc2lwdG8uY29tIj53d3cuYXNpcHRvLmNvbTwvYT4KS2FtYWlsaW8gV29ybGQgQ29uZmVyZW5j ZSAtIEFwcmlsIDI3LTI5LCAyMDIwLCBpbiBCZXJsaW4gLS0gPGEgY2xhc3M9Im1vei10eHQtbGlu ay1hYmJyZXZpYXRlZCIgaHJlZj0iaHR0cDovL3d3dy5rYW1haWxpb3dvcmxkLmNvbSI+d3d3Lmth bWFpbGlvd29ybGQuY29tPC9hPjwvcHJlPgogIDwvYm9keT4KPC9odG1sPgo= --===============0402518355==--