<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>162991</bug_id>
          
          <creation_ts>2016-10-05 17:37:50 -0700</creation_ts>
          <short_desc>URLParser should parse IPv4 addresses as the last two pieces of an IPv6 address</short_desc>
          <delta_ts>2016-10-05 19:39:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236844</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 17:37:50 -0700</bug_when>
    <thetext>URLParser should parse IPv4 addresses as the last two pieces of an IPv6 address</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236847</commentid>
    <comment_count>1</comment_count>
      <attachid>290766</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 17:41:29 -0700</bug_when>
    <thetext>Created attachment 290766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236860</commentid>
    <comment_count>2</comment_count>
      <attachid>290766</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-05 18:38:17 -0700</bug_when>
    <thetext>Comment on attachment 290766
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=290766&amp;action=review

r=me

&gt; Source/WebCore/platform/URLParser.cpp:2340
&gt; +        if (!piece &amp;&amp; *iterator == &apos;0&apos;)
&gt; +            leadingZeros = true;

I think you can remove the (!piece &amp;&amp; digitCount != 1) check below and the digitCount variable if you did:
if (!piece &amp;&amp; *iterator == &apos;0&apos;) {
    if (leadingZeros) return Nullopt;
    leadingZeros = true;
}

&gt; Source/WebCore/platform/URLParser.cpp:2363
&gt; +            address = address * 256 + piece.value();

Style: This is one of the few times I think &quot;&lt;&lt; 8&quot; is clearer than &quot;* 256&quot; to see that you&apos;re composing a 32-bit integer in 8bit chunks.

&gt; Source/WebCore/platform/URLParser.cpp:2376
&gt; +    if (!iterator.atEnd())
&gt; +        return Nullopt;

This seems redundant given the above check, however, it might be clearer to keep the above check and assert the fact here.

&gt; Source/WebCore/platform/URLParser.cpp:2416
&gt; +            if (Optional&lt;IPv4Address&gt; ipv4Address = parseIPv4AddressInsideIPv6(c)) {

Do you have to rewind your iterator? Or does passing this in copy an iterator in such a way that it doesn&apos;t affect the iterator it was copied from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236861</commentid>
    <comment_count>3</comment_count>
      <attachid>290766</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-05 18:43:08 -0700</bug_when>
    <thetext>Comment on attachment 290766
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=290766&amp;action=review

&gt;&gt; Source/WebCore/platform/URLParser.cpp:2340
&gt;&gt; +            leadingZeros = true;
&gt; 
&gt; I think you can remove the (!piece &amp;&amp; digitCount != 1) check below and the digitCount variable if you did:
&gt; if (!piece &amp;&amp; *iterator == &apos;0&apos;) {
&gt;     if (leadingZeros) return Nullopt;
&gt;     leadingZeros = true;
&gt; }

Actually, you could probably remove more checks by just checking if &apos;.&apos; follows a leading zero since nothing else is valid after that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236869</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 19:36:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 290766 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=290766&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/URLParser.cpp:2340
&gt; &gt;&gt; +            leadingZeros = true;
&gt; &gt; 
&gt; &gt; I think you can remove the (!piece &amp;&amp; digitCount != 1) check below and the digitCount variable if you did:
&gt; &gt; if (!piece &amp;&amp; *iterator == &apos;0&apos;) {
&gt; &gt;     if (leadingZeros) return Nullopt;
&gt; &gt;     leadingZeros = true;
&gt; &gt; }
&gt; 
&gt; Actually, you could probably remove more checks by just checking if &apos;.&apos;
&gt; follows a leading zero since nothing else is valid after that.
I chose your first suggestion.  Finding out if a &apos;0&apos; is the first &apos;0&apos; or if it&apos;s in the middle of a number like 127.0.0.101 (which I will also add as a test) is complicated, and it&apos;s not intuitive why anything other than the end or a &apos;.&apos; after a &apos;0&apos; is invalid, but only if it&apos;s the first &apos;0&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236871</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 19:37:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/206842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236872</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-10-05 19:39:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebCore/platform/URLParser.cpp:2416
&gt; &gt; +            if (Optional&lt;IPv4Address&gt; ipv4Address = parseIPv4AddressInsideIPv6(c)) {
&gt; 
&gt; Do you have to rewind your iterator? Or does passing this in copy an
&gt; iterator in such a way that it doesn&apos;t affect the iterator it was copied
&gt; from?
This calls the CodePointIterator copy constructor, so c isn&apos;t changed.  Calls to parseIPv4PieceInsideIPv6 pass by reference.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290766</attachid>
            <date>2016-10-05 17:41:29 -0700</date>
            <delta_ts>2016-10-05 18:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162991-20161005173815.patch</filename>
            <type>text/plain</type>
            <size>15496</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjgxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE2LTEwLTA1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMUGFyc2Vy
IHNob3VsZCBwYXJzZSBJUHY0IGFkZHJlc3NlcyBhcyB0aGUgbGFzdCB0d28gcGllY2VzIG9mIGFu
IElQdjYgYWRkcmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTYyOTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhlIGxhc3QgMzIgYml0cyBvZiBhbiBJUHY2IGFkZHJlc3MgY2FuIGJlIHdyaXR0ZW4g
aW4gdGhlIGZvcm0gb2YgYW4gSVB2NCBhZGRyZXNzLAorICAgICAgICBidXQgdGhlIHN5bnRheCBp
cyBzdHJpY3RlciB0aGFuIGlmIGl0IHdlcmUganVzdCBhbiBJUHY0IGFkZHJlc3MuICBUaGVyZSBt
dXN0IGJlIDQgcGllY2VzLAorICAgICAgICBhbmQgZWFjaCBwaWVjZSBtdXN0IGJlIGRlY2ltYWwg
KG5vIG9jdGFsIG9yIGhleCBhbGxvd2VkKS4gIFRoZXNlIHNob3VsZCBzZXJpYWxpemUgdG8KKyAg
ICAgICAgcmVndWxhciBoZXggSVB2NiBhZGRyZXNzZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBu
ZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VJUHY0UGllY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6VVJMUGFyc2VyOjpwYXJzZUlQdjRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNl
cjo6cGFyc2VJUHY0UGllY2VJbnNpZGVJUHY2KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNl
cjo6cGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYpOgorICAgICAgICAoV2ViQ29yZTo6VVJMUGFy
c2VyOjpwYXJzZUlQdjZIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFBhcnNlcjo6cGFyc2VJ
UHY0TnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9VUkxQYXJzZXIuaDoKKwog
MjAxNi0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVSTFBhcnNlciBzaG91bGQgY29ycmVjdGx5IHN0cmlwIHVubmVjZXNzYXJ5IDAn
cyBpbiBJUHY2IGFkZHJlc3NlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyMDY4MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkxQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTg1LDcgKzIxODUsNyBAQCB2b2lkIFVSTFBhcnNl
cjo6c2VyaWFsaXplSVB2NihVUkxQYXJzZXI6CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+Ci1PcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjROdW1iZXIo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mIGl0ZXJhdG9yLCBib29sJiBkaWRTZWVT
eW50YXhWaW9sYXRpb24pCitPcHRpb25hbDx1aW50MzJfdD4gVVJMUGFyc2VyOjpwYXJzZUlQdjRQ
aWVjZShDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IsIGJvb2wmIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbikKIHsKICAgICBlbnVtIGNsYXNzIFN0YXRlIDogdWludDhfdCB7
CiAgICAgICAgIFVua25vd25CYXNlLApAQCAtMjI4NCw3ICsyMjg0LDcgQEAgT3B0aW9uYWw8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFycwogICAgICAgICB9CiAgICAgICAgIGlmIChpdGVt
cy5zaXplKCkgPj0gNCkKICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICBpZiAo
YXV0byBpdGVtID0gcGFyc2VJUHY0TnVtYmVyKGl0ZXJhdG9yLCBkaWRTZWVTeW50YXhWaW9sYXRp
b24pKQorICAgICAgICBpZiAoYXV0byBpdGVtID0gcGFyc2VJUHY0UGllY2UoaXRlcmF0b3IsIGRp
ZFNlZVN5bnRheFZpb2xhdGlvbikpCiAgICAgICAgICAgICBpdGVtcy5hcHBlbmQoaXRlbS52YWx1
ZSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CkBAIC0yMzIz
LDcgKzIzMjMsNjAgQEAgT3B0aW9uYWw8VVJMUGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFycwog
ICAgICAgICBpcHY0ICs9IGl0ZW1zW2NvdW50ZXJdICogcG93MjU2KDMgLSBjb3VudGVyKTsKICAg
ICByZXR1cm4gaXB2NDsKIH0KLSAgICAKKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK09wdGlvbmFsPHVpbnQzMl90PiBVUkxQYXJzZXI6OnBhcnNlSVB2NFBpZWNlSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiYgaXRlcmF0b3IpCit7CisgICAgaWYg
KGl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBOdWxsb3B0OworICAgIHVpbnQzMl90
IHBpZWNlID0gMDsKKyAgICBib29sIGxlYWRpbmdaZXJvcyA9IGZhbHNlOworICAgIHNpemVfdCBk
aWdpdENvdW50ID0gMDsKKyAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKKyAgICAgICAg
aWYgKCFpc0FTQ0lJRGlnaXQoKml0ZXJhdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OworICAgICAgICArK2RpZ2l0Q291bnQ7CisgICAgICAgIGlmICghcGllY2UgJiYgKml0ZXJhdG9y
ID09ICcwJykKKyAgICAgICAgICAgIGxlYWRpbmdaZXJvcyA9IHRydWU7CisgICAgICAgIHBpZWNl
ID0gcGllY2UgKiAxMCArICppdGVyYXRvciAtICcwJzsKKyAgICAgICAgaWYgKHBpZWNlID4gMjU1
KQorICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgIGFkdmFuY2U8Q2hhcmFjdGVy
VHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRlcmF0b3IpOworICAgICAgICBpZiAo
aXRlcmF0b3IuYXRFbmQoKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoKml0ZXJh
dG9yID09ICcuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocGllY2UgJiYg
bGVhZGluZ1plcm9zKQorICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICBpZiAoIXBpZWNlICYm
IGRpZ2l0Q291bnQgIT0gMSkKKyAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIHBp
ZWNlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorT3B0aW9uYWw8VVJM
UGFyc2VyOjpJUHY0QWRkcmVzcz4gVVJMUGFyc2VyOjpwYXJzZUlQdjRBZGRyZXNzSW5zaWRlSVB2
NihDb2RlUG9pbnRJdGVyYXRvcjxDaGFyYWN0ZXJUeXBlPiBpdGVyYXRvcikKK3sKKyAgICBJUHY0
QWRkcmVzcyBhZGRyZXNzID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ7ICsraSkg
eworICAgICAgICBpZiAoT3B0aW9uYWw8dWludDMyX3Q+IHBpZWNlID0gcGFyc2VJUHY0UGllY2VJ
bnNpZGVJUHY2KGl0ZXJhdG9yKSkKKyAgICAgICAgICAgIGFkZHJlc3MgPSBhZGRyZXNzICogMjU2
ICsgcGllY2UudmFsdWUoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIE51bGxv
cHQ7CisgICAgICAgIGlmIChpIDwgMykgeworICAgICAgICAgICAgaWYgKGl0ZXJhdG9yLmF0RW5k
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgICAgICAgICBpZiAoKml0
ZXJhdG9yICE9ICcuJykKKyAgICAgICAgICAgICAgICByZXR1cm4gTnVsbG9wdDsKKyAgICAgICAg
ICAgIGFkdmFuY2U8Q2hhcmFjdGVyVHlwZSwgUmVwb3J0U3ludGF4VmlvbGF0aW9uOjpObz4oaXRl
cmF0b3IpOworICAgICAgICB9IGVsc2UgaWYgKCFpdGVyYXRvci5hdEVuZCgpKQorICAgICAgICAg
ICAgcmV0dXJuIE51bGxvcHQ7CisgICAgfQorICAgIGlmICghaXRlcmF0b3IuYXRFbmQoKSkKKyAg
ICAgICAgcmV0dXJuIE51bGxvcHQ7CisgICAgcmV0dXJuIGFkZHJlc3M7Cit9CisKIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZBZGRyZXNz
PiBVUkxQYXJzZXI6OnBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlw
ZT4gYykKIHsKQEAgLTIzNTksNiArMjQxMiwxNyBAQCBPcHRpb25hbDxVUkxQYXJzZXI6OklQdjZB
ZGRyZXNzPiBVUkxQYXJzCiAgICAgICAgICAgICBjb21wcmVzc1BvaW50ZXIgPSBwaWVjZVBvaW50
ZXI7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQorICAgICAgICBpZiAocGllY2VQ
b2ludGVyID09IDYgfHwgKGNvbXByZXNzUG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPCA2KSkgewor
ICAgICAgICAgICAgaWYgKE9wdGlvbmFsPElQdjRBZGRyZXNzPiBpcHY0QWRkcmVzcyA9IHBhcnNl
SVB2NEFkZHJlc3NJbnNpZGVJUHY2KGMpKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbXByZXNz
UG9pbnRlciAmJiBwaWVjZVBvaW50ZXIgPT0gNSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IE51bGxvcHQ7CisgICAgICAgICAgICAgICAgc3ludGF4VmlvbGF0aW9uKGhvc3RCZWdpbik7Cisg
ICAgICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXIrK10gPSBpcHY0QWRkcmVzcy52YWx1
ZSgpID4+IDE2OworICAgICAgICAgICAgICAgIGFkZHJlc3NbcGllY2VQb2ludGVyKytdID0gaXB2
NEFkZHJlc3MudmFsdWUoKSAmIDB4RkZGRjsKKyAgICAgICAgICAgICAgICBjID0geyB9OworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHVp
bnQxNl90IHZhbHVlID0gMDsKICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IDA7CiAgICAgICAgIGJv
b2wgbGVhZGluZ1plcm9zID0gZmFsc2U7CkBAIC0yMzg2LDQwICsyNDUwLDkgQEAgT3B0aW9uYWw8
VVJMUGFyc2VyOjpJUHY2QWRkcmVzcz4gVVJMUGFycwogICAgICAgICBhZHZhbmNlKGMsIGhvc3RC
ZWdpbik7CiAgICAgfQogICAgIAotICAgIGlmICghYy5hdEVuZCgpKSB7Ci0gICAgICAgIGlmIChw
aWVjZVBvaW50ZXIgPiA2KQotICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgICAgIHNp
emVfdCBkb3RzU2VlbiA9IDA7Ci0gICAgICAgIHdoaWxlICghYy5hdEVuZCgpKSB7Ci0gICAgICAg
ICAgICBPcHRpb25hbDx1aW50MTZfdD4gdmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdCgqYykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgICAgICAgICB3
aGlsZSAoaXNBU0NJSURpZ2l0KCpjKSkgewotICAgICAgICAgICAgICAgIGF1dG8gbnVtYmVyID0g
KmMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBudW1iZXI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXZhbHVlLnZhbHVl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0OwotICAgICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS52YWx1ZSgpICogMTAgKyBu
dW1iZXI7Ci0gICAgICAgICAgICAgICAgYWR2YW5jZShjLCBob3N0QmVnaW4pOwotICAgICAgICAg
ICAgICAgIGlmIChjLmF0RW5kKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZS52YWx1ZSgpID4gMjU1KQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gTnVsbG9wdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChk
b3RzU2VlbiA8IDMgJiYgKmMgIT0gJy4nKQotICAgICAgICAgICAgICAgIHJldHVybiBOdWxsb3B0
OwotICAgICAgICAgICAgYWRkcmVzc1twaWVjZVBvaW50ZXJdID0gYWRkcmVzc1twaWVjZVBvaW50
ZXJdICogMHgxMDAgKyB2YWx1ZS52YWx1ZU9yKDApOwotICAgICAgICAgICAgaWYgKGRvdHNTZWVu
ID09IDEgfHwgZG90c1NlZW4gPT0gMykKLSAgICAgICAgICAgICAgICBwaWVjZVBvaW50ZXIrKzsK
LSAgICAgICAgICAgIGlmICghYy5hdEVuZCgpKQotICAgICAgICAgICAgICAgIGFkdmFuY2UoYywg
aG9zdEJlZ2luKTsKLSAgICAgICAgICAgIGlmIChkb3RzU2VlbiA9PSAzICYmICFjLmF0RW5kKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE51bGxvcHQ7Ci0gICAgICAgICAgICBkb3RzU2Vlbisr
OwotICAgICAgICB9Ci0gICAgfQorICAgIGlmICghYy5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
TnVsbG9wdDsKKyAgICAKICAgICBpZiAoY29tcHJlc3NQb2ludGVyKSB7CiAgICAgICAgIHNpemVf
dCBzd2FwcyA9IHBpZWNlUG9pbnRlciAtIGNvbXByZXNzUG9pbnRlci52YWx1ZSgpOwogICAgICAg
ICBwaWVjZVBvaW50ZXIgPSA3OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFy
c2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJMUGFyc2VyLmgJ
KHJldmlzaW9uIDIwNjc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTFBhcnNlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsOSArMTAwLDExIEBAIHByaXZhdGU6CiAgICAgdXNpbmcg
SVB2NEFkZHJlc3MgPSB1aW50MzJfdDsKICAgICB2b2lkIHNlcmlhbGl6ZUlQdjQoSVB2NEFkZHJl
c3MpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IE9wdGlvbmFsPElQdjRB
ZGRyZXNzPiBwYXJzZUlQdjRIb3N0KENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+KTsK
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBPcHRpb25hbDx1aW50MzJfdD4g
cGFyc2VJUHY0TnVtYmVyKENvZGVQb2ludEl0ZXJhdG9yPENoYXJhY3RlclR5cGU+JiwgYm9vbCYg
c3ludGF4VmlvbGF0aW9uKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBP
cHRpb25hbDx1aW50MzJfdD4gcGFyc2VJUHY0UGllY2UoQ29kZVBvaW50SXRlcmF0b3I8Q2hhcmFj
dGVyVHlwZT4mLCBib29sJiBzeW50YXhWaW9sYXRpb24pOwogICAgIHVzaW5nIElQdjZBZGRyZXNz
ID0gc3RkOjphcnJheTx1aW50MTZfdCwgOD47CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gT3B0aW9uYWw8SVB2NkFkZHJlc3M+IHBhcnNlSVB2Nkhvc3QoQ29kZVBvaW50SXRl
cmF0b3I8Q2hhcmFjdGVyVHlwZT4pOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IE9wdGlvbmFsPHVpbnQzMl90PiBwYXJzZUlQdjRQaWVjZUluc2lkZUlQdjYoQ29kZVBvaW50
SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0
ZXJUeXBlPiBPcHRpb25hbDxJUHY0QWRkcmVzcz4gcGFyc2VJUHY0QWRkcmVzc0luc2lkZUlQdjYo
Q29kZVBvaW50SXRlcmF0b3I8Q2hhcmFjdGVyVHlwZT4pOwogICAgIHZvaWQgc2VyaWFsaXplSVB2
NlBpZWNlKHVpbnQxNl90IHBpZWNlKTsKICAgICB2b2lkIHNlcmlhbGl6ZUlQdjYoSVB2NkFkZHJl
c3MpOwogCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDY4MzgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMC0wNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTFBhcnNlciBzaG91bGQgcGFyc2UgSVB2NCBh
ZGRyZXNzZXMgYXMgdGhlIGxhc3QgdHdvIHBpZWNlcyBvZiBhbiBJUHY2IGFkZHJlc3MKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk5MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUX0YpOgorCiAyMDE2LTEwLTA1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEF2b2lkIGF1dG9tYXRpY2FsbHkgcmUtdGFraW5nIHNuYXBzaG90cyBm
b3IgYmFjay1mb3J3YXJkIGl0ZW1zIHRoYXQgd2VyZSBuZXZlciBsb2FkZWQgaW50byB0aGUgdmll
dwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNl
ci5jcHAJKHJldmlzaW9uIDIwNjgxOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODAsNiArODgwLDc4IEBAIFRF
U1RfRihVUkxQYXJzZXJUZXN0LCBQYXJzZXJEaWZmZXJlbmNlcykKICAgICBjaGVja1VSTERpZmZl
cmVuY2VzKHV0ZjE2U3RyaW5nKHUibm90c3BlY2lhbDovL0jwn5iNw590IiksCiAgICAgICAgIHsi
bm90c3BlY2lhbCIsICIiLCAiIiwgInhuLS1oc3N0LXFjODNjIiwgMCwgIi8iLCAiIiwgIiIsICJu
b3RzcGVjaWFsOi8veG4tLWhzc3QtcWM4M2MvIn0sCiAgICAgICAgIHsibm90c3BlY2lhbCIsICIi
LCAiIiwgInhuLS1oc3N0LXFjODNjIiwgMCwgIiIsICIiLCAiIiwgIm5vdHNwZWNpYWw6Ly94bi0t
aHNzdC1xYzgzYyJ9LCB0ZXN0VGFic1ZhbHVlRm9yU3Vycm9nYXRlUGFpcnMpOworICAgIGNoZWNr
VVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9bZmZmZjphYWFhOmNjY2M6ZWVlZTpiYmJiOmRkZGQ6MjU1
LjI1NS4yNTUuMjU1XS8iLAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbZmZmZjphYWFhOmNj
Y2M6ZWVlZTpiYmJiOmRkZGQ6ZmZmZjpmZmZmXSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1tm
ZmZmOmFhYWE6Y2NjYzplZWVlOmJiYmI6ZGRkZDpmZmZmOmZmZmZdLyJ9LAorICAgICAgICB7Imh0
dHAiLCAiIiwgIiIsICJbZmZmZjphYWFhOmNjY2M6ZWVlZTpiYmJiOmRkZGQ6MjU1LjI1NS4yNTUu
MjU1XSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1tmZmZmOmFhYWE6Y2NjYzplZWVlOmJiYmI6
ZGRkZDoyNTUuMjU1LjI1NS4yNTVdLyJ9LCBUZXN0VGFiczo6Tm8pOworICAgIGNoZWNrVVJMRGlm
ZmVyZW5jZXMoImh0dHA6Ly9bOjoxMjMuMjM0LjEyLjIxMF0vIiwKKyAgICAgICAgeyJodHRwIiwg
IiIsICIiLCAiWzo6N2JlYTpjZDJdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vWzo6N2JlYTpj
ZDJdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjoxMjMuMjM0LjEyLjIxMF0iLCAw
LCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bOjoxMjMuMjM0LjEyLjIxMF0vIn0pOworICAgIGNoZWNr
VVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9bOjphOjI1NS4yNTUuMjU1LjI1NV0vIiwKKyAgICAgICAg
eyJodHRwIiwgIiIsICIiLCAiWzo6YTpmZmZmOmZmZmZdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRw
Oi8vWzo6YTpmZmZmOmZmZmZdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjphOjI1
NS4yNTUuMjU1LjI1NV0iLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bOjphOjI1NS4yNTUuMjU1
LjI1NV0vIn0pOworICAgIGNoZWNrVVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9bOjowLjAwLjI1NS4y
NTVdLyIsCisgICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgImh0dHA6Ly9b
OjowLjAwLjI1NS4yNTVdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjowLjAwLjI1
NS4yNTVdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vWzo6MC4wMC4yNTUuMjU1XS8ifSk7Cisg
ICAgY2hlY2tVUkxEaWZmZXJlbmNlcygiaHR0cDovL1s6OjAuMC4yNTUuMjU1XS8iLAorICAgICAg
ICB7Imh0dHAiLCAiIiwgIiIsICJbOjpmZmZmXSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1s6
OmZmZmZdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjowLjAuMjU1LjI1NV0iLCAw
LCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bOjowLjAuMjU1LjI1NV0vIn0pOworICAgIGNoZWNrVVJM
RGlmZmVyZW5jZXMoImh0dHA6Ly9bOjowOjEuMC4yNTUuMjU1XS8iLAorICAgICAgICB7Imh0dHAi
LCAiIiwgIiIsICJbOjoxMDA6ZmZmZl0iLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bOjoxMDA6
ZmZmZl0vIn0sCisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIls6OjA6MS4wLjI1NS4yNTVdIiwg
MCwgIi8iLCAiIiwgIiIsICJodHRwOi8vWzo6MDoxLjAuMjU1LjI1NV0vIn0pOworICAgIGNoZWNr
VVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9bOjpBOjEuMC4yNTUuMjU1XS8iLAorICAgICAgICB7Imh0
dHAiLCAiIiwgIiIsICJbOjphOjEwMDpmZmZmXSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1s6
OmE6MTAwOmZmZmZdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjphOjEuMC4yNTUu
MjU1XSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1s6OmE6MS4wLjI1NS4yNTVdLyJ9KTsKKyAg
ICBjaGVja1VSTERpZmZlcmVuY2VzKCJodHRwOi8vWzoxMjcuMC4wLjFdIiwKKyAgICAgICAgeyIi
LCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCAiaHR0cDovL1s6MTI3LjAuMC4xXSJ9LAorICAg
ICAgICB7Imh0dHAiLCAiIiwgIiIsICJbOjEyNy4wLjAuMV0iLCAwLCAiLyIsICIiLCAiIiwgImh0
dHA6Ly9bOjEyNy4wLjAuMV0vIn0pOworICAgIGNoZWNrVVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9b
MTI3LjAuMC4xXSIsCisgICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgImh0
dHA6Ly9bMTI3LjAuMC4xXSJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbMTI3LjAuMC4x
XSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1sxMjcuMC4wLjFdLyJ9KTsKKyAgICBjaGVja1VS
TERpZmZlcmVuY2VzKCJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMV0iLAorICAgICAgICB7
Imh0dHAiLCAiIiwgIiIsICJbYTpiOmM6ZDplOmY6N2YwMDoxXSIsIDAsICIvIiwgIiIsICIiLCAi
aHR0cDovL1thOmI6YzpkOmU6Zjo3ZjAwOjFdLyJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIs
ICJbYTpiOmM6ZDplOmY6MTI3LjAuMC4xXSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1thOmI6
YzpkOmU6ZjoxMjcuMC4wLjFdLyJ9KTsKKyAgICBjaGVja1VSTERpZmZlcmVuY2VzKCJodHRwOi8v
Wzo6YTpiOmM6ZDplOmY6MTI3LjAuMC4xXSIsCisgICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwg
IiIsICIiLCAiIiwgImh0dHA6Ly9bOjphOmI6YzpkOmU6ZjoxMjcuMC4wLjFdIn0sCisgICAgICAg
IHsiaHR0cCIsICIiLCAiIiwgIls6OmE6YjpjOmQ6ZTpmOjEyNy4wLjAuMV0iLCAwLCAiLyIsICIi
LCAiIiwgImh0dHA6Ly9bOjphOmI6YzpkOmU6ZjoxMjcuMC4wLjFdLyJ9KTsKKyAgICBjaGVja1VS
TERpZmZlcmVuY2VzKCJodHRwOi8vW2E6Yjo6YzpkOmU6ZjoxMjcuMC4wLjFdIiwKKyAgICAgICAg
eyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIsICIiLCAiaHR0cDovL1thOmI6OmM6ZDplOmY6MTI3
LjAuMC4xXSJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbYTpiOjpjOmQ6ZTpmOjEyNy4w
LjAuMV0iLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bYTpiOjpjOmQ6ZTpmOjEyNy4wLjAuMV0v
In0pOworICAgIGNoZWNrVVJMRGlmZmVyZW5jZXMoImh0dHA6Ly9bYTpiOmM6ZDplOjEyNy4wLjAu
MV0iLAorICAgICAgICB7IiIsICIiLCAiIiwgIiIsIDAsICIiLCAiIiwgIiIsICJodHRwOi8vW2E6
YjpjOmQ6ZToxMjcuMC4wLjFdIn0sCisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIlthOmI6Yzpk
OmU6MTI3LjAuMC4xXSIsIDAsICIvIiwgIiIsICIiLCAiaHR0cDovL1thOmI6YzpkOmU6MTI3LjAu
MC4xXS8ifSk7CisgICAgY2hlY2tVUkxEaWZmZXJlbmNlcygiaHR0cDovL1thOmI6YzpkOmU6Zjox
MjcuMC4wLjAuMV0iLAorICAgICAgICB7IiIsICIiLCAiIiwgIiIsIDAsICIiLCAiIiwgIiIsICJo
dHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMC4xXSJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwg
IiIsICJbYTpiOmM6ZDplOmY6MTI3LjAuMC4wLjFdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8v
W2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMC4xXS8ifSk7CisgICAgY2hlY2tVUkxEaWZmZXJlbmNlcygi
aHR0cDovL1thOmI6YzpkOmU6ZjoxMjcuMC4xXSIsCisgICAgICAgIHsiIiwgIiIsICIiLCAiIiwg
MCwgIiIsICIiLCAiIiwgImh0dHA6Ly9bYTpiOmM6ZDplOmY6MTI3LjAuMV0ifSwKKyAgICAgICAg
eyJodHRwIiwgIiIsICIiLCAiW2E6YjpjOmQ6ZTpmOjEyNy4wLjFdIiwgMCwgIi8iLCAiIiwgIiIs
ICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjFdLyJ9KTsKKyAgICBjaGVja1VSTERpZmZlcmVu
Y2VzKCJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMDExXSIsIC8vIENocm9tZSB0cmVhdHMg
dGhpcyBhcyBvY3RhbCwgRmlyZWZveCBhbmQgdGhlIHNwZWMgZmFpbAorICAgICAgICB7IiIsICIi
LCAiIiwgIiIsIDAsICIiLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMDEx
XSJ9LAorICAgICAgICB7Imh0dHAiLCAiIiwgIiIsICJbYTpiOmM6ZDplOmY6MTI3LjAuMC4wMTFd
IiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLjAuMDExXS8ifSk7
CisgICAgY2hlY2tVUkxEaWZmZXJlbmNlcygiaHR0cDovL1thOmI6YzpkOmU6ZjoxMjcuMC4wMC4x
XSIsCisgICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgImh0dHA6Ly9bYTpi
OmM6ZDplOmY6MTI3LjAuMDAuMV0ifSwKKyAgICAgICAgeyJodHRwIiwgIiIsICIiLCAiW2E6Yjpj
OmQ6ZTpmOjEyNy4wLjAwLjFdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpm
OjEyNy4wLjAwLjFdLyJ9KTsKKyAgICBjaGVja1VSTERpZmZlcmVuY2VzKCJodHRwOi8vW2E6Yjpj
OmQ6ZTpmOjEyNy4wLjAuMS5dIiwKKyAgICAgICAgeyIiLCAiIiwgIiIsICIiLCAwLCAiIiwgIiIs
ICIiLCAiaHR0cDovL1thOmI6YzpkOmU6ZjoxMjcuMC4wLjEuXSJ9LAorICAgICAgICB7Imh0dHAi
LCAiIiwgIiIsICJbYTpiOmM6ZDplOmY6MTI3LjAuMC4xLl0iLCAwLCAiLyIsICIiLCAiIiwgImh0
dHA6Ly9bYTpiOmM6ZDplOmY6MTI3LjAuMC4xLl0vIn0pOworICAgIGNoZWNrVVJMRGlmZmVyZW5j
ZXMoImh0dHA6Ly9bYTpiOmM6ZDplOmY6MTI3LjAuLjAuMV0iLAorICAgICAgICB7IiIsICIiLCAi
IiwgIiIsIDAsICIiLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLi4wLjFdIn0s
CisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIlthOmI6YzpkOmU6ZjoxMjcuMC4uMC4xXSIsIDAs
ICIvIiwgIiIsICIiLCAiaHR0cDovL1thOmI6YzpkOmU6ZjoxMjcuMC4uMC4xXS8ifSk7CisgICAg
Y2hlY2tVUkxEaWZmZXJlbmNlcygiaHR0cDovL1thOmI6YzpkOmU6Zjo6MTI3LjAuMC4xXSIsCisg
ICAgICAgIHsiIiwgIiIsICIiLCAiIiwgMCwgIiIsICIiLCAiIiwgImh0dHA6Ly9bYTpiOmM6ZDpl
OmY6OjEyNy4wLjAuMV0ifSwKKyAgICAgICAgeyJodHRwIiwgIiIsICIiLCAiW2E6YjpjOmQ6ZTpm
OjoxMjcuMC4wLjFdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjoxMjcu
MC4wLjFdLyJ9KTsKKyAgICBjaGVja1VSTERpZmZlcmVuY2VzKCJodHRwOi8vW2E6YjpjOmQ6ZTo6
MTI3LjAuMC4xXSIsCisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIlthOmI6YzpkOmU6MDo3ZjAw
OjFdIiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTowOjdmMDA6MV0vIn0sCisg
ICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIlthOmI6YzpkOmU6OjEyNy4wLjAuMV0iLCAwLCAiLyIs
ICIiLCAiIiwgImh0dHA6Ly9bYTpiOmM6ZDplOjoxMjcuMC4wLjFdLyJ9KTsKKyAgICBjaGVja1VS
TERpZmZlcmVuY2VzKCJodHRwOi8vW2E6YjpjOmQ6OmU6MTI3LjAuMC4xXSIsCisgICAgICAgIHsi
aHR0cCIsICIiLCAiIiwgIlthOmI6YzpkOjA6ZTo3ZjAwOjFdIiwgMCwgIi8iLCAiIiwgIiIsICJo
dHRwOi8vW2E6YjpjOmQ6MDplOjdmMDA6MV0vIn0sCisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwg
IlthOmI6YzpkOjplOjEyNy4wLjAuMV0iLCAwLCAiLyIsICIiLCAiIiwgImh0dHA6Ly9bYTpiOmM6
ZDo6ZToxMjcuMC4wLjFdLyJ9KTsKKyAgICBjaGVja1VSTERpZmZlcmVuY2VzKCJodHRwOi8vW2E6
YjpjOmQ6ZTpmOjoxMjcuMC4wLl0iLAorICAgICAgICB7IiIsICIiLCAiIiwgIiIsIDAsICIiLCAi
IiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjoxMjcuMC4wLl0ifSwKKyAgICAgICAgeyJodHRw
IiwgIiIsICIiLCAiW2E6YjpjOmQ6ZTpmOjoxMjcuMC4wLl0iLCAwLCAiLyIsICIiLCAiIiwgImh0
dHA6Ly9bYTpiOmM6ZDplOmY6OjEyNy4wLjAuXS8ifSk7CisgICAgY2hlY2tVUkxEaWZmZXJlbmNl
cygiaHR0cDovL1thOmI6YzpkOmU6Zjo6MTI3LjAuMC4yNTZdIiwKKyAgICAgICAgeyIiLCAiIiwg
IiIsICIiLCAwLCAiIiwgIiIsICIiLCAiaHR0cDovL1thOmI6YzpkOmU6Zjo6MTI3LjAuMC4yNTZd
In0sCisgICAgICAgIHsiaHR0cCIsICIiLCAiIiwgIlthOmI6YzpkOmU6Zjo6MTI3LjAuMC4yNTZd
IiwgMCwgIi8iLCAiIiwgIiIsICJodHRwOi8vW2E6YjpjOmQ6ZTpmOjoxMjcuMC4wLjI1Nl0vIn0p
OwogfQogCiBURVNUX0YoVVJMUGFyc2VyVGVzdCwgRGVmYXVsdFBvcnQpCkBAIC0xMDI4LDYgKzEx
MDAsMTAgQEAgVEVTVF9GKFVSTFBhcnNlclRlc3QsIFBhcnNlckZhaWx1cmVzKQogICAgIHNob3Vs
ZEZhaWwoImh0dHA6Ly9bMTIzNDo6YWJ+XSIpOwogICAgIHNob3VsZEZhaWwoImh0dHA6Ly9bMjAw
MTo6MSIpOwogICAgIHNob3VsZEZhaWwoImh0dHA6Ly9bMToyOjM6NDo1OjY6Nzo4fl0vIik7Cisg
ICAgc2hvdWxkRmFpbCgiaHR0cDovL1thOmI6YzpkOmU6ZjpnOjEyNy4wLjAuMV0iKTsKKyAgICBz
aG91bGRGYWlsKCJodHRwOi8vW2E6YjpjOmQ6ZTpmOmc6aDoxMjcuMC4wLjFdIik7CisgICAgc2hv
dWxkRmFpbCgiaHR0cDovL1thOmI6YzpkOmU6ZjoxMjcuMC4wLjB4MTFdIik7IC8vIENocm9tZSB0
cmVhdHMgdGhpcyBhcyBoZXgsIEZpcmVmb3ggYW5kIHRoZSBzcGVjIGZhaWwKKyAgICBzaG91bGRG
YWlsKCJodHRwOi8vW2E6YjpjOmQ6ZTpmOjEyNy4wLi0wLjFdIik7CiB9CiAKIC8vIFRoZXNlIGFy
ZSBpbiB0aGUgc3BlYyBidXQgbm90IGluIHRoZSB3ZWIgcGxhdGZvcm0gdGVzdHMuCg==
</data>
<flag name="review"
          id="313928"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>