<?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>67655</bug_id>
          
          <creation_ts>2011-09-06 10:51:51 -0700</creation_ts>
          <short_desc>AssociatedURLLoader should check HTTP method / headers for untrusted requests.</short_desc>
          <delta_ts>2011-09-19 16:02:04 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Bill Budge">bbudge</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462650</commentid>
    <comment_count>0</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-06 10:51:51 -0700</bug_when>
    <thetext>Perform HTTP method and header validation in AssociatedURLLoader for requests coming from untrusted code (eg. Native Client in Chrome). Use the same code as XMLHttpRequest to reduce code duplication and have behavior identical to XHR in Javascript. Add an &apos;untrustedHTTP&apos; option to WebURLLoaderOptions, which AssociatedURLLoader can use to determine if it should check the request method and headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462665</commentid>
    <comment_count>1</comment_count>
      <attachid>106444</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-06 11:02:51 -0700</bug_when>
    <thetext>Created attachment 106444
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462769</commentid>
    <comment_count>2</comment_count>
      <attachid>106444</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-09-06 12:54:53 -0700</bug_when>
    <thetext>Comment on attachment 106444
Proposed Patch

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

Looks good to me.

Since there is a chromium/public change, I&apos;ll leave the final r+ for Darin.

&gt; Source/WebKit/chromium/public/WebURLLoaderOptions.h:49
&gt; +        , crossOriginRequestPolicy(CrossOriginRequestPolicyDeny) { }

Ideally put the {} on separate lines at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463490</commentid>
    <comment_count>3</comment_count>
      <attachid>106607</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-07 11:30:52 -0700</bug_when>
    <thetext>Created attachment 106607
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463540</commentid>
    <comment_count>4</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-07 11:56:14 -0700</bug_when>
    <thetext>*** Bug 66963 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463542</commentid>
    <comment_count>5</comment_count>
      <attachid>106607</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-07 11:57:01 -0700</bug_when>
    <thetext>Comment on attachment 106607
Proposed Patch

Adding some tests for invalid header values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463630</commentid>
    <comment_count>6</comment_count>
      <attachid>106631</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-07 13:55:28 -0700</bug_when>
    <thetext>Created attachment 106631
Proposed Patch

Improved the tests to check for invalid header values. Improved helper method names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464115</commentid>
    <comment_count>7</comment_count>
      <attachid>106631</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-08 10:05:02 -0700</bug_when>
    <thetext>Comment on attachment 106631
Proposed Patch

Attachment 106631 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9616952</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464481</commentid>
    <comment_count>8</comment_count>
      <attachid>106631</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-08 16:27:09 -0700</bug_when>
    <thetext>Comment on attachment 106631
Proposed Patch

I believe this build failure is spurious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464839</commentid>
    <comment_count>9</comment_count>
      <attachid>106631</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-09 09:38:50 -0700</bug_when>
    <thetext>Comment on attachment 106631
Proposed Patch

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

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:56
&gt; +namespace {

nit: put the anonymous namespace inside the WebKit namespace.  then we
shoudn&apos;t need the &apos;using namespace WebKit&apos; up above.

&gt; Source/WebKit/chromium/src/AssociatedURLLoader.cpp:289
&gt; +        m_clientAdapter-&gt;setDelayedError(ResourceError());

what are your plans for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464974</commentid>
    <comment_count>10</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-09 12:28:59 -0700</bug_when>
    <thetext>Once this lands, I can redo PPAPI and WebKit glue code that does all of these checks. As part of that CL I will have to modify URLRequest and URLLoader tests since these errors are reported asynchronously now.

I also have FIXMEs to improve error reporting in the glue code. I will need to define a new error domain in WebKit so AssociatedURLLoader can report syntax vs. security errors in a way that WebKit glue understands. Currently it doesn&apos;t know about WebKit error domains, only our net:: one, and reports the former as PP_ERROR. It might make sense to modify this patch to generate ResourceErrors with enough information to make this possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464975</commentid>
    <comment_count>11</comment_count>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-09 12:29:56 -0700</bug_when>
    <thetext>Quick question about the red bot. This is the first time I&apos;ve seen a failure that isn&apos;t caused by the patch. Is there a way to re-run the bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464986</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-09-09 12:43:34 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Quick question about the red bot. This is the first time I&apos;ve seen a failure that isn&apos;t caused by the patch. Is there a way to re-run the bot?

Reupload the patch is the only way that I know of. (New attachment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466518</commentid>
    <comment_count>13</comment_count>
      <attachid>107222</attachid>
    <who name="Bill Budge">bbudge</who>
    <bug_when>2011-09-13 14:01:11 -0700</bug_when>
    <thetext>Created attachment 107222
Proposed Patch

Moved header visitor into WebKit namespace. Added information on plans for fixing error reporting from this layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469709</commentid>
    <comment_count>14</comment_count>
      <attachid>107222</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-09-19 14:58:49 -0700</bug_when>
    <thetext>Comment on attachment 107222
Proposed Patch

R=me, sorry for the delayed response!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469773</commentid>
    <comment_count>15</comment_count>
      <attachid>107222</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-19 16:01:59 -0700</bug_when>
    <thetext>Comment on attachment 107222
Proposed Patch

Clearing flags on attachment: 107222

Committed r95490: &lt;http://trac.webkit.org/changeset/95490&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469774</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-19 16:02:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106444</attachid>
            <date>2011-09-06 11:02:51 -0700</date>
            <delta_ts>2011-09-07 11:30:52 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>12187</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDktMDYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFBlcmZvcm0gSFRUUCBtZXRob2QgYW5kIGhlYWRlciB2YWxpZGF0aW9uIGluIEFzc29jaWF0
ZWRVUkxMb2FkZXIgZm9yCisgICAgICAgIHJlcXVlc3RzIGNvbWluZyBmcm9tIHVudHJ1c3RlZCBj
b2RlIChlZy4gTmF0aXZlIENsaWVudCBpbiBDaHJvbWUpLiBVc2UKKyAgICAgICAgdGhlIHNhbWUg
Y29kZSBhcyBYTUxIdHRwUmVxdWVzdCB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBhbmQgaGF2
ZQorICAgICAgICBiZWhhdmlvciBpZGVudGljYWwgdG8gWEhSIGluIEphdmFzY3JpcHQuIEFkZCBh
biAndW50cnVzdGVkSFRUUCcgb3B0aW9uCisgICAgICAgIHRvIFdlYlVSTExvYWRlck9wdGlvbnMs
IHdoaWNoIEFzc29jaWF0ZWRVUkxMb2FkZXIgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAgICAg
aWYgaXQgc2hvdWxkIGNoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBhbmQgaGVhZGVycy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
TG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkZXJPcHRpb25zOjpX
ZWJVUkxMb2FkZXJPcHRpb25zKToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5j
cHA6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjpTYWZlSFRUUEhlYWRl
clZhbGlkYXRvcik6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjppc1Nh
ZmUpOgorICAgICAgICAoV1RGOjpTYWZlSFRUUEhlYWRlclZhbGlkYXRvcjo6dmlzaXRIZWFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpz
ZXREZWxheWVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjps
b2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OkNoZWNr
Rm9yYmlkZGVuTWV0aG9kRmFpbHMpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9h
ZGVyVGVzdDo6Q2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscyk6CisgICAgICAgIChXZWJLaXQ6OkFz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpDaGVja0ZhaWx1cmUpOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorCiAyMDExLTA5LTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBBZGQgbXV0bGlwbGUgdG8gV2ViUG9wdXBNZW51SW5mbyBmb3Ig
QW5kcm9pZApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVy
T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTExvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTQ1MDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDggKzQxLDE0IEBAIHN0cnVjdCBXZWJVUkxMb2FkZXJPcHRpb25zIHsKICAgICAgICAgQ3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5QWxsb3cKICAgICB9OwogCi0gICAgV2ViVVJMTG9hZGVyT3B0aW9u
cygpIDogc25pZmZDb250ZW50KGZhbHNlKSwgYWxsb3dDcmVkZW50aWFscyhmYWxzZSksIGZvcmNl
UHJlZmxpZ2h0KGZhbHNlKSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeURlbnkpIHsgfQorICAgIFdlYlVSTExvYWRlck9wdGlvbnMoKQorICAgICAgICA6
IHVudHJ1c3RlZEhUVFAoZmFsc2UpCisgICAgICAgICwgc25pZmZDb250ZW50KGZhbHNlKQorICAg
ICAgICAsIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpCisgICAgICAgICwgZm9yY2VQcmVmbGlnaHQo
ZmFsc2UpCisgICAgICAgICwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeURlbnkpIHsgfQogCisgICAgYm9vbCB1bnRydXN0ZWRIVFRQOyAvLyBXaGV0aGVy
IHRvIHZhbGlkYXRlIHRoZSBtZXRob2QgYW5kIGhlYWRlcnMgYXMgaWYgdGhpcyB3YXMgYW4gWE1M
SHR0cFJlcXVlc3QuCiAgICAgYm9vbCBzbmlmZkNvbnRlbnQ7IC8vIFdoZXRoZXIgdG8gc25pZmYg
Y29udGVudC4KICAgICBib29sIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIgdG8gc2VuZCBI
VFRQIGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgYm9vbCBm
b3JjZVByZWZsaWdodDsgLy8gSWYgcG9saWN5IGlzIHRvIHVzZSBhY2Nlc3MgY29udHJvbCwgd2hl
dGhlciB0byBmb3JjZSBhIHByZWZsaWdodCBmb3IgR0VULCBIRUFELCBhbmQgUE9TVCByZXF1ZXN0
cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRV
UkxMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDUwMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMs
MTMgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkhUVFBWYWxpZGF0
aW9uLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiV2ViRGF0
YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYkhUVFBI
ZWFkZXJWaXNpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0UGxh
dGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTQ1LDExICs0Nywz
MyBAQAogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXcmFwcGVkUmVzb3Vy
Y2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJYTUxIdHRwUmVxdWVzdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCituYW1lc3BhY2Ugewor
CitjbGFzcyBTYWZlSFRUUEhlYWRlclZhbGlkYXRvciA6IHB1YmxpYyBXZWJIVFRQSGVhZGVyVmlz
aXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2FmZUhUVFBIZWFkZXJWYWxpZGF0b3Ip
OworcHVibGljOgorICAgIFNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yKCkgOiBtX2lzU2FmZSh0cnVl
KSB7IH0KKworICAgIHZvaWQgdmlzaXRIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTdHJpbmcmIHZhbHVlKTsKKyAgICBib29sIGlzU2FmZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTYWZlOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzU2FmZTsKK307CisKK3ZvaWQgU2Fm
ZUhUVFBIZWFkZXJWYWxpZGF0b3I6OnZpc2l0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lzU2FmZSA9IG1faXNTYWZlICYmIGlz
VmFsaWRIVFRQVG9rZW4obmFtZSkgJiYgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBIZWFk
ZXIobmFtZSkgJiYgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZSh2YWx1ZSk7Cit9CisKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgYnJpZGdlcyB0aGUgaW50ZXJmYWNlIGRp
ZmZlcmVuY2VzIGJldHdlZW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxvYWRlciBjbGllbnRzLgpAQCAt
NzEsNiArOTUsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICAvLyBTZXRzIGFuIGVy
cm9yIHRvIGJlIHJlcG9ydGVkIGJhY2sgdG8gdGhlIGNsaWVudCwgYXN5Y2hyb25vdXNseS4KKyAg
ICB2b2lkIHNldERlbGF5ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CisKICAgICAvLyBF
bmFibGVzIGZvcndhcmRpbmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUgV2ViVVJMTG9h
ZGVyQ2xpZW50LiBUaGVzZSBtdXN0IGJlCiAgICAgLy8gZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhl
IGNhbGwgdG8gQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkgY29tcGxl
dGVzLgogICAgIHZvaWQgZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CkBAIC0xNzcsNiArMjA0
LDExIEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoKICAgICAgICAg
bm90aWZ5RXJyb3IoJm1fZXJyb3JUaW1lcik7CiB9CiAKK3ZvaWQgQXNzb2NpYXRlZFVSTExvYWRl
cjo6Q2xpZW50QWRhcHRlcjo6c2V0RGVsYXllZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQoreworICAgIGRpZEZhaWwoZXJyb3IpOworfQorCiB2b2lkIEFzc29jaWF0ZWRVUkxMb2Fk
ZXI6OkNsaWVudEFkYXB0ZXI6OmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpCiB7CiAgICAgbV9l
bmFibGVFcnJvck5vdGlmaWNhdGlvbnMgPSB0cnVlOwpAQCAtMjI1LDE4ICsyNTcsMzcgQEAgdm9p
ZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIG1fY2xpZW50ID0gY2xp
ZW50OwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKLSAgICBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5kQ2FsbGJhY2tz
OyAvLyBBbHdheXMgc2VuZCBjYWxsYmFja3MuCi0gICAgb3B0aW9ucy5zbmlmZkNvbnRlbnQgPSBt
X29wdGlvbnMuc25pZmZDb250ZW50ID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlmZkNvbnRlbnQ7
Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
OwotICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gbV9vcHRpb25zLmZvcmNlUHJlZmxpZ2h0
ID8gRm9yY2VQcmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdodDsKLSAgICBvcHRpb25zLmNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeT4obV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7Ci0gICAgb3B0
aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOworICAgIGJvb2wgYWxsb3dM
b2FkID0gdHJ1ZTsKKyAgICBXZWJVUkxSZXF1ZXN0IG5ld1JlcXVlc3QocmVxdWVzdCk7CisgICAg
aWYgKG1fb3B0aW9ucy51bnRydXN0ZWRIVFRQKSB7CisgICAgICAgIFdlYlN0cmluZyBtZXRob2Qg
PSBuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKTsKKyAgICAgICAgYWxsb3dMb2FkID0gaXNWYWxpZEhU
VFBUb2tlbihtZXRob2QpICYmIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQTWV0aG9kKG1l
dGhvZCk7CisgICAgICAgIGlmIChhbGxvd0xvYWQpIHsKKyAgICAgICAgICAgIG5ld1JlcXVlc3Qu
c2V0SFRUUE1ldGhvZChYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQTWV0aG9kKG1l
dGhvZCkpOworICAgICAgICAgICAgU2FmZUhUVFBIZWFkZXJWYWxpZGF0b3IgdmFsaWRhdG9yOwor
ICAgICAgICAgICAgbmV3UmVxdWVzdC52aXNpdEhUVFBIZWFkZXJGaWVsZHMoJnZhbGlkYXRvcik7
CisgICAgICAgICAgICBhbGxvd0xvYWQgPSB2YWxpZGF0b3IuaXNTYWZlKCk7CisgICAgICAgIH0K
KyAgICB9CiAKLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1ZXN0ID0gcmVx
dWVzdC50b1Jlc291cmNlUmVxdWVzdCgpOwotICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQg
PSBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVudEFkYXB0ZXIg
PSBDbGllbnRBZGFwdGVyOjpjcmVhdGUodGhpcywgbV9jbGllbnQsIHJlcXVlc3QuZG93bmxvYWRU
b0ZpbGUoKSk7Ci0gICAgbV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZSh3ZWJjb3JlRG9jdW1lbnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3Qs
IG9wdGlvbnMpOworCisgICAgaWYgKGFsbG93TG9hZCkgeworICAgICAgICBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0g
U2VuZENhbGxiYWNrczsgLy8gQWx3YXlzIHNlbmQgY2FsbGJhY2tzLgorICAgICAgICBvcHRpb25z
LnNuaWZmQ29udGVudCA9IG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQgPyBTbmlmZkNvbnRlbnQgOiBE
b05vdFNuaWZmQ29udGVudDsKKyAgICAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9v
cHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RB
bGxvd1N0b3JlZENyZWRlbnRpYWxzOworICAgICAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9
IG1fb3B0aW9ucy5mb3JjZVByZWZsaWdodCA/IEZvcmNlUHJlZmxpZ2h0IDogQ29uc2lkZXJQcmVm
bGlnaHQ7CisgICAgICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5ID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5PihtX29wdGlvbnMuY3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5KTsKKyAgICAgICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0g
RG9Ob3RCdWZmZXJEYXRhOworCisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgd2ViY29y
ZVJlcXVlc3QgPSBuZXdSZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIERvY3Vt
ZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsK
KyAgICAgICAgbV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3ZWJj
b3JlRG9jdW1lbnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVlc3QsIG9wdGlv
bnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiByZXR1cm4gbWVhbmluZ2Z1bCBl
cnJvciBjb2Rlcy4KKyAgICAgICAgbV9jbGllbnRBZGFwdGVyLT5zZXREZWxheWVkRXJyb3IoUmVz
b3VyY2VFcnJvcigpKTsKKyAgICB9CiAgICAgbV9jbGllbnRBZGFwdGVyLT5lbmFibGVFcnJvck5v
dGlmaWNhdGlvbnMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9B
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAJKHJldmlzaW9uIDk0NTAw
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVz
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNDEgQEAgcHVibGljOgogICAgICAg
ICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1lc3NhZ2VMb29wKCk7CiAgICAgfQogCisgICAgdm9pZCBD
aGVja0ZvcmJpZGRlbk1ldGhvZEZhaWxzKGNvbnN0IGNoYXIqIHVuc2FmZU1ldGhvZCkKKyAgICB7
CisgICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVzdC5pbml0aWFs
aXplKCk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKEdVUkwoImh0dHA6Ly93d3cudGVzdC5jb20v
c3VjY2Vzcy5odG1sIikpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoV2ViU3RyaW5n
Ojpmcm9tVVRGOCh1bnNhZmVNZXRob2QpKTsKKyAgICAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBv
cHRpb25zOworICAgICAgICBvcHRpb25zLnVudHJ1c3RlZEhUVFAgPSB0cnVlOworICAgICAgICBD
aGVja0ZhaWx1cmUocmVxdWVzdCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBDaGVja0Zv
cmJpZGRlbkhlYWRlckZhaWxzKGNvbnN0IGNoYXIqIHVuc2FmZUhlYWRlckZpZWxkKQorICAgIHsK
KyAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgICAgICByZXF1ZXN0LmluaXRpYWxp
emUoKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9z
dWNjZXNzLmh0bWwiKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKFdlYlN0
cmluZzo6ZnJvbVVURjgodW5zYWZlSGVhZGVyRmllbGQpLCAiZm9vIik7CisgICAgICAgIFdlYlVS
TExvYWRlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAgb3B0aW9ucy51bnRydXN0ZWRIVFRQID0g
dHJ1ZTsKKyAgICAgICAgQ2hlY2tGYWlsdXJlKHJlcXVlc3QsIG9wdGlvbnMpOworICAgIH0KKwor
ICAgIHZvaWQgQ2hlY2tGYWlsdXJlKGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIFdlYlVS
TExvYWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkKKyAgICB7Cisg
ICAgICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKG9wdGlv
bnMpOworICAgICAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKKyAgICAgICAgbV9k
aWRGYWlsID0gZmFsc2U7CisgICAgICAgIG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRBc3luY2hyb25v
dXNseShyZXF1ZXN0LCB0aGlzKTsKKyAgICAgICAgLy8gRmFpbHVyZSBzaG91bGQgbm90IGJlIHJl
cG9ydGVkIHN5bmNocm9ub3VzbHkuCisgICAgICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwpOwor
ICAgICAgICAvLyBBbGxvdyB0aGUgbG9hZGVyIHRvIHJldHVybiB0aGUgZXJyb3IuCisgICAgICAg
IHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworICAgICAgICBFWFBFQ1RfVFJVRSht
X2RpZEZhaWwpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFdlYlN0cmluZyBtX2ZyYW1lRmls
ZVBhdGg7CiAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IG1fd2ViRnJhbWVDbGllbnQ7CkBAIC0yMjMs
MTUgKzI1OCw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2FtZU9yaWcKICAg
ICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXplKCk7CiAgICAg
cmVxdWVzdC5zZXRVUkwodXJsKTsKLQotICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3Nv
Y2lhdGVkVVJMTG9hZGVyKCk7Ci0gICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7Ci0g
ICAgbV9leHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVlc3QsIHRoaXMpOwot
ICAgIC8vIEZhaWx1cmUgc2hvdWxkIG5vdCBiZSByZXBvcnRlZCBzeW5jaHJvbm91c2x5LgotICAg
IEVYUEVDVF9GQUxTRShtX2RpZEZhaWwpOwotICAgIC8vIEFsbG93IHRoZSBsb2FkZXIgdG8gcmV0
dXJuIHRoZSBlcnJvci4KLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKLSAg
ICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwpOworICAgIENoZWNrRmFpbHVyZShyZXF1ZXN0KTsKIH0K
IAogLy8gVGVzdCBhIHN1Y2Nlc3NmdWwgY3Jvc3Mtb3JpZ2luIGxvYWQuCkBAIC0yNTksNCArMjg2
LDU0IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmkKICAgICBFWFBF
Q1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcpOwogfQogCisvLyBUZXN0IHRoYXQgdW50cnVzdGVk
IGxvYWRzIGNhbid0IHVzZSBhIGZvcmJpZGRlbiBtZXRob2QuCitURVNUX0YoQXNzb2NpYXRlZFVS
TExvYWRlclRlc3QsIFVudHJ1c3RlZENoZWNrTWV0aG9kcykKK3sKKyAgICAvLyBDaGVjayBub24t
dG9rZW4gbWV0aG9kIGZhaWxzLgorICAgIENoZWNrRm9yYmlkZGVuTWV0aG9kRmFpbHMoIkdFVCgp
Iik7CisgICAgQ2hlY2tGb3JiaWRkZW5NZXRob2RGYWlscygiUE9TVFx4MGRceDBheC1jc3JmLXRv
a2VuOlx4MjB0ZXN0MTIzNCIpOworCisgICAgLy8gRm9yYmlkZGVuIG1ldGhvZHMgc2hvdWxkIGZh
aWwgcmVnYXJkbGVzcyBvZiBjYXNpbmcuCisgICAgQ2hlY2tGb3JiaWRkZW5NZXRob2RGYWlscygi
Q29ObmVDdCIpOworICAgIENoZWNrRm9yYmlkZGVuTWV0aG9kRmFpbHMoIlRyQWNLIik7CisgICAg
Q2hlY2tGb3JiaWRkZW5NZXRob2RGYWlscygiVHJBY0UiKTsKK30KKworLy8gVGVzdCB0aGF0IHVu
dHJ1c3RlZCBsb2FkcyBjYW4ndCB1c2UgYSBmb3JiaWRkZW4gaGVhZGVyIGZpZWxkLgorVEVTVF9G
KEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBVbnRydXN0ZWRDaGVja0hlYWRlcnMpCit7CisgICAg
Ly8gQ2hlY2sgbm9uLXRva2VuIGhlYWRlciBmYWlscy4KKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRl
ckZhaWxzKCJmb28oKSIpOworCisgICAgLy8gQ2hlY2sgZm9yYmlkZGVuIGhlYWRlcnMgZmFpbC4K
KyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJhY2NlcHQtY2hhcnNldCIpOworICAgIENo
ZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImFjY2VwdC1lbmNvZGluZyIpOworICAgIENoZWNrRm9y
YmlkZGVuSGVhZGVyRmFpbHMoImNvbm5lY3Rpb24iKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRl
ckZhaWxzKCJjb250ZW50LWxlbmd0aCIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMo
ImNvb2tpZSIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImNvb2tpZTIiKTsKKyAg
ICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nIik7
CisgICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygiZGF0ZSIpOworICAgIENoZWNrRm9yYmlk
ZGVuSGVhZGVyRmFpbHMoImV4cGVjdCIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMo
Imhvc3QiKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJrZWVwLWFsaXZlIik7Cisg
ICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygib3JpZ2luIik7CisgICAgQ2hlY2tGb3JiaWRk
ZW5IZWFkZXJGYWlscygicmVmZXJlciIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMo
InRlIik7CisgICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygidHJhaWxlciIpOworICAgIENo
ZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoInRyYW5zZmVyLWVuY29kaW5nIik7CisgICAgQ2hlY2tG
b3JiaWRkZW5IZWFkZXJGYWlscygidXBncmFkZSIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVy
RmFpbHMoInVzZXItYWdlbnQiKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJ2aWEi
KTsKKworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoInByb3h5LSIpOworICAgIENoZWNr
Rm9yYmlkZGVuSGVhZGVyRmFpbHMoInByb3h5LWZvbyIpOworICAgIENoZWNrRm9yYmlkZGVuSGVh
ZGVyRmFpbHMoInNlYy0iKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJzZWMtZm9v
Iik7CisKKyAgICAvLyBDaGVjayB0aGF0IHZhbGlkYXRpb24gaXMgY2FzZS1pbnNlbnNpdGl2ZS4K
KyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJBY0NlUHQtQ2hBclNlVCIpOworICAgIENo
ZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoIlByb1h5LUZvTyIpOworfQorCiB9Cg==
</data>
<flag name="commit-queue"
          id="102879"
          type_id="3"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106607</attachid>
            <date>2011-09-07 11:30:52 -0700</date>
            <delta_ts>2011-09-07 11:57:01 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>12196</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDU3OCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDktMDYgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFBlcmZvcm0gSFRUUCBtZXRob2QgYW5kIGhlYWRlciB2YWxpZGF0aW9uIGluIEFzc29jaWF0
ZWRVUkxMb2FkZXIgZm9yCisgICAgICAgIHJlcXVlc3RzIGNvbWluZyBmcm9tIHVudHJ1c3RlZCBj
b2RlIChlZy4gTmF0aXZlIENsaWVudCBpbiBDaHJvbWUpLiBVc2UKKyAgICAgICAgdGhlIHNhbWUg
Y29kZSBhcyBYTUxIdHRwUmVxdWVzdCB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBhbmQgaGF2
ZQorICAgICAgICBiZWhhdmlvciBpZGVudGljYWwgdG8gWEhSIGluIEphdmFzY3JpcHQuIEFkZCBh
biAndW50cnVzdGVkSFRUUCcgb3B0aW9uCisgICAgICAgIHRvIFdlYlVSTExvYWRlck9wdGlvbnMs
IHdoaWNoIEFzc29jaWF0ZWRVUkxMb2FkZXIgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAgICAg
aWYgaXQgc2hvdWxkIGNoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBhbmQgaGVhZGVycy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
TG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkZXJPcHRpb25zOjpX
ZWJVUkxMb2FkZXJPcHRpb25zKToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5j
cHA6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjpTYWZlSFRUUEhlYWRl
clZhbGlkYXRvcik6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjppc1Nh
ZmUpOgorICAgICAgICAoV1RGOjpTYWZlSFRUUEhlYWRlclZhbGlkYXRvcjo6dmlzaXRIZWFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpz
ZXREZWxheWVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjps
b2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OkNoZWNr
Rm9yYmlkZGVuTWV0aG9kRmFpbHMpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9h
ZGVyVGVzdDo6Q2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscyk6CisgICAgICAgIChXZWJLaXQ6OkFz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0OjpDaGVja0ZhaWx1cmUpOgorICAgICAgICAoV2ViS2l0OjpU
RVNUX0YpOgorCiAyMDExLTA5LTA0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBBZGQgbXV0bGlwbGUgdG8gV2ViUG9wdXBNZW51SW5mbyBmb3Ig
QW5kcm9pZApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVy
T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlVSTExvYWRlck9wdGlvbnMuaAkocmV2aXNpb24gOTQ1MDApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXJPcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDggKzQxLDE1IEBAIHN0cnVjdCBXZWJVUkxMb2FkZXJPcHRpb25zIHsKICAgICAgICAgQ3Jvc3NP
cmlnaW5SZXF1ZXN0UG9saWN5QWxsb3cKICAgICB9OwogCi0gICAgV2ViVVJMTG9hZGVyT3B0aW9u
cygpIDogc25pZmZDb250ZW50KGZhbHNlKSwgYWxsb3dDcmVkZW50aWFscyhmYWxzZSksIGZvcmNl
UHJlZmxpZ2h0KGZhbHNlKSwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeURlbnkpIHsgfQorICAgIFdlYlVSTExvYWRlck9wdGlvbnMoKQorICAgICAgICA6
IHVudHJ1c3RlZEhUVFAoZmFsc2UpCisgICAgICAgICwgc25pZmZDb250ZW50KGZhbHNlKQorICAg
ICAgICAsIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpCisgICAgICAgICwgZm9yY2VQcmVmbGlnaHQo
ZmFsc2UpCisgICAgICAgICwgY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeURlbnkpCisgICAgICAgIHsgfQogCisgICAgYm9vbCB1bnRydXN0ZWRIVFRQOyAv
LyBXaGV0aGVyIHRvIHZhbGlkYXRlIHRoZSBtZXRob2QgYW5kIGhlYWRlcnMgYXMgaWYgdGhpcyB3
YXMgYW4gWE1MSHR0cFJlcXVlc3QuCiAgICAgYm9vbCBzbmlmZkNvbnRlbnQ7IC8vIFdoZXRoZXIg
dG8gc25pZmYgY29udGVudC4KICAgICBib29sIGFsbG93Q3JlZGVudGlhbHM7IC8vIFdoZXRoZXIg
dG8gc2VuZCBIVFRQIGNyZWRlbnRpYWxzIGFuZCBjb29raWVzIHdpdGggdGhlIHJlcXVlc3QuCiAg
ICAgYm9vbCBmb3JjZVByZWZsaWdodDsgLy8gSWYgcG9saWN5IGlzIHRvIHVzZSBhY2Nlc3MgY29u
dHJvbCwgd2hldGhlciB0byBmb3JjZSBhIHByZWZsaWdodCBmb3IgR0VULCBIRUFELCBhbmQgUE9T
VCByZXF1ZXN0cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRV
UkxMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c29jaWF0ZWRVUkxMb2FkZXIuY3BwCShyZXZpc2lvbiA5NDUwMCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc29jaWF0ZWRVUkxMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxMSArMzMsMTMgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgog
I2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkhU
VFBWYWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogI2luY2x1ZGUgIldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVk
ZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUg
IldlYkhUVFBIZWFkZXJWaXNpdG9yLmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAi
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTQ1
LDExICs0NywzMyBAQAogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXcmFw
cGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2Uu
aCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdC5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogCituYW1l
c3BhY2UgeworCitjbGFzcyBTYWZlSFRUUEhlYWRlclZhbGlkYXRvciA6IHB1YmxpYyBXZWJIVFRQ
SGVhZGVyVmlzaXRvciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2FmZUhUVFBIZWFkZXJW
YWxpZGF0b3IpOworcHVibGljOgorICAgIFNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yKCkgOiBtX2lz
U2FmZSh0cnVlKSB7IH0KKworICAgIHZvaWQgdmlzaXRIZWFkZXIoY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKKyAgICBib29sIGlzU2FmZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTYWZlOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2lzU2FmZTsKK307CisK
K3ZvaWQgU2FmZUhUVFBIZWFkZXJWYWxpZGF0b3I6OnZpc2l0SGVhZGVyKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2lzU2FmZSA9IG1faXNT
YWZlICYmIGlzVmFsaWRIVFRQVG9rZW4obmFtZSkgJiYgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dl
ZEhUVFBIZWFkZXIobmFtZSkgJiYgaXNWYWxpZEhUVFBIZWFkZXJWYWx1ZSh2YWx1ZSk7Cit9CisK
K30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgYnJpZGdlcyB0aGUgaW50
ZXJmYWNlIGRpZmZlcmVuY2VzIGJldHdlZW4gV2ViQ29yZSBhbmQgV2ViS2l0IGxvYWRlciBjbGll
bnRzLgpAQCAtNzEsNiArOTUsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNEb2N1
bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQoKSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICAvLyBT
ZXRzIGFuIGVycm9yIHRvIGJlIHJlcG9ydGVkIGJhY2sgdG8gdGhlIGNsaWVudCwgYXN5Y2hyb25v
dXNseS4KKyAgICB2b2lkIHNldERlbGF5ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJik7CisK
ICAgICAvLyBFbmFibGVzIGZvcndhcmRpbmcgb2YgZXJyb3Igbm90aWZpY2F0aW9ucyB0byB0aGUg
V2ViVVJMTG9hZGVyQ2xpZW50LiBUaGVzZSBtdXN0IGJlCiAgICAgLy8gZGVmZXJyZWQgdW50aWwg
YWZ0ZXIgdGhlIGNhbGwgdG8gQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5
KCkgY29tcGxldGVzLgogICAgIHZvaWQgZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCk7CkBAIC0x
NzcsNiArMjA0LDExIEBAIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjoK
ICAgICAgICAgbm90aWZ5RXJyb3IoJm1fZXJyb3JUaW1lcik7CiB9CiAKK3ZvaWQgQXNzb2NpYXRl
ZFVSTExvYWRlcjo6Q2xpZW50QWRhcHRlcjo6c2V0RGVsYXllZEVycm9yKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQoreworICAgIGRpZEZhaWwoZXJyb3IpOworfQorCiB2b2lkIEFzc29jaWF0
ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6OmVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpCiB7
CiAgICAgbV9lbmFibGVFcnJvck5vdGlmaWNhdGlvbnMgPSB0cnVlOwpAQCAtMjI1LDE4ICsyNTcs
MzcgQEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ubwogICAgIG1fY2xp
ZW50ID0gY2xpZW50OwogICAgIEFTU0VSVChtX2NsaWVudCk7CiAKLSAgICBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zOwotICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5k
Q2FsbGJhY2tzOyAvLyBBbHdheXMgc2VuZCBjYWxsYmFja3MuCi0gICAgb3B0aW9ucy5zbmlmZkNv
bnRlbnQgPSBtX29wdGlvbnMuc25pZmZDb250ZW50ID8gU25pZmZDb250ZW50IDogRG9Ob3RTbmlm
ZkNvbnRlbnQ7Ci0gICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID0gbV9vcHRpb25zLmFsbG93
Q3JlZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzOwotICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gbV9vcHRpb25zLmZvcmNl
UHJlZmxpZ2h0ID8gRm9yY2VQcmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdodDsKLSAgICBvcHRp
b25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNyb3Nz
T3JpZ2luUmVxdWVzdFBvbGljeT4obV9vcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7
Ci0gICAgb3B0aW9ucy5zaG91bGRCdWZmZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOworICAgIGJv
b2wgYWxsb3dMb2FkID0gdHJ1ZTsKKyAgICBXZWJVUkxSZXF1ZXN0IG5ld1JlcXVlc3QocmVxdWVz
dCk7CisgICAgaWYgKG1fb3B0aW9ucy51bnRydXN0ZWRIVFRQKSB7CisgICAgICAgIFdlYlN0cmlu
ZyBtZXRob2QgPSBuZXdSZXF1ZXN0Lmh0dHBNZXRob2QoKTsKKyAgICAgICAgYWxsb3dMb2FkID0g
aXNWYWxpZEhUVFBUb2tlbihtZXRob2QpICYmIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQ
TWV0aG9kKG1ldGhvZCk7CisgICAgICAgIGlmIChhbGxvd0xvYWQpIHsKKyAgICAgICAgICAgIG5l
d1JlcXVlc3Quc2V0SFRUUE1ldGhvZChYTUxIdHRwUmVxdWVzdDo6dXBwZXJjYXNlS25vd25IVFRQ
TWV0aG9kKG1ldGhvZCkpOworICAgICAgICAgICAgU2FmZUhUVFBIZWFkZXJWYWxpZGF0b3IgdmFs
aWRhdG9yOworICAgICAgICAgICAgbmV3UmVxdWVzdC52aXNpdEhUVFBIZWFkZXJGaWVsZHMoJnZh
bGlkYXRvcik7CisgICAgICAgICAgICBhbGxvd0xvYWQgPSB2YWxpZGF0b3IuaXNTYWZlKCk7Cisg
ICAgICAgIH0KKyAgICB9CiAKLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHdlYmNvcmVSZXF1
ZXN0ID0gcmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgpOwotICAgIERvY3VtZW50KiB3ZWJjb3Jl
RG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBtX2NsaWVu
dEFkYXB0ZXIgPSBDbGllbnRBZGFwdGVyOjpjcmVhdGUodGhpcywgbV9jbGllbnQsIHJlcXVlc3Qu
ZG93bmxvYWRUb0ZpbGUoKSk7Ci0gICAgbV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSh3ZWJjb3JlRG9jdW1lbnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29y
ZVJlcXVlc3QsIG9wdGlvbnMpOworCisgICAgaWYgKGFsbG93TG9hZCkgeworICAgICAgICBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnNlbmRMb2FkQ2Fs
bGJhY2tzID0gU2VuZENhbGxiYWNrczsgLy8gQWx3YXlzIHNlbmQgY2FsbGJhY2tzLgorICAgICAg
ICBvcHRpb25zLnNuaWZmQ29udGVudCA9IG1fb3B0aW9ucy5zbmlmZkNvbnRlbnQgPyBTbmlmZkNv
bnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKKyAgICAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzID0gbV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxz
IDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzOworICAgICAgICBvcHRpb25zLnByZWZsaWdo
dFBvbGljeSA9IG1fb3B0aW9ucy5mb3JjZVByZWZsaWdodCA/IEZvcmNlUHJlZmxpZ2h0IDogQ29u
c2lkZXJQcmVmbGlnaHQ7CisgICAgICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5PihtX29wdGlv
bnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KTsKKyAgICAgICAgb3B0aW9ucy5zaG91bGRCdWZm
ZXJEYXRhID0gRG9Ob3RCdWZmZXJEYXRhOworCisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgd2ViY29yZVJlcXVlc3QgPSBuZXdSZXF1ZXN0LnRvUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAg
ICAgIERvY3VtZW50KiB3ZWJjb3JlRG9jdW1lbnQgPSBtX2ZyYW1lSW1wbC0+ZnJhbWUoKS0+ZG9j
dW1lbnQoKTsKKyAgICAgICAgbV9sb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZSh3ZWJjb3JlRG9jdW1lbnQsIG1fY2xpZW50QWRhcHRlci5nZXQoKSwgd2ViY29yZVJlcXVl
c3QsIG9wdGlvbnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEZJWE1FOiByZXR1cm4gbWVh
bmluZ2Z1bCBlcnJvciBjb2Rlcy4KKyAgICAgICAgbV9jbGllbnRBZGFwdGVyLT5zZXREZWxheWVk
RXJyb3IoUmVzb3VyY2VFcnJvcigpKTsKKyAgICB9CiAgICAgbV9jbGllbnRBZGFwdGVyLT5lbmFi
bGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJMTG9hZGVyVGVzdC5jcHAJKHJldmlz
aW9uIDk0NTAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Bc3NvY2lhdGVkVVJM
TG9hZGVyVGVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsNDEgQEAgcHVibGlj
OgogICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UXVpdE1lc3NhZ2VMb29wKCk7CiAgICAgfQogCisg
ICAgdm9pZCBDaGVja0ZvcmJpZGRlbk1ldGhvZEZhaWxzKGNvbnN0IGNoYXIqIHVuc2FmZU1ldGhv
ZCkKKyAgICB7CisgICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVz
dC5pbml0aWFsaXplKCk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKEdVUkwoImh0dHA6Ly93d3cu
dGVzdC5jb20vc3VjY2Vzcy5odG1sIikpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2Qo
V2ViU3RyaW5nOjpmcm9tVVRGOCh1bnNhZmVNZXRob2QpKTsKKyAgICAgICAgV2ViVVJMTG9hZGVy
T3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25zLnVudHJ1c3RlZEhUVFAgPSB0cnVlOwor
ICAgICAgICBDaGVja0ZhaWx1cmUocmVxdWVzdCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9p
ZCBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKGNvbnN0IGNoYXIqIHVuc2FmZUhlYWRlckZpZWxk
KQorICAgIHsKKyAgICAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OworICAgICAgICByZXF1ZXN0
LmluaXRpYWxpemUoKTsKKyAgICAgICAgcmVxdWVzdC5zZXRVUkwoR1VSTCgiaHR0cDovL3d3dy50
ZXN0LmNvbS9zdWNjZXNzLmh0bWwiKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZp
ZWxkKFdlYlN0cmluZzo6ZnJvbVVURjgodW5zYWZlSGVhZGVyRmllbGQpLCAiZm9vIik7CisgICAg
ICAgIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAgb3B0aW9ucy51bnRydXN0
ZWRIVFRQID0gdHJ1ZTsKKyAgICAgICAgQ2hlY2tGYWlsdXJlKHJlcXVlc3QsIG9wdGlvbnMpOwor
ICAgIH0KKworICAgIHZvaWQgQ2hlY2tGYWlsdXJlKGNvbnN0IFdlYlVSTFJlcXVlc3QmIHJlcXVl
c3QsIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRlck9wdGlvbnMoKSkK
KyAgICB7CisgICAgICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9h
ZGVyKG9wdGlvbnMpOworICAgICAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVkTG9hZGVyKTsKKyAg
ICAgICAgbV9kaWRGYWlsID0gZmFsc2U7CisgICAgICAgIG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRB
c3luY2hyb25vdXNseShyZXF1ZXN0LCB0aGlzKTsKKyAgICAgICAgLy8gRmFpbHVyZSBzaG91bGQg
bm90IGJlIHJlcG9ydGVkIHN5bmNocm9ub3VzbHkuCisgICAgICAgIEVYUEVDVF9GQUxTRShtX2Rp
ZEZhaWwpOworICAgICAgICAvLyBBbGxvdyB0aGUgbG9hZGVyIHRvIHJldHVybiB0aGUgZXJyb3Iu
CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOworICAgICAgICBFWFBF
Q1RfVFJVRShtX2RpZEZhaWwpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIFdlYlN0cmluZyBt
X2ZyYW1lRmlsZVBhdGg7CiAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IG1fd2ViRnJhbWVDbGllbnQ7
CkBAIC0yMjMsMTUgKzI1OCw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgU2Ft
ZU9yaWcKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVzdC5pbml0aWFsaXpl
KCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKLQotICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBj
cmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7Ci0gICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExv
YWRlcik7Ci0gICAgbV9leHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91c2x5KHJlcXVlc3Qs
IHRoaXMpOwotICAgIC8vIEZhaWx1cmUgc2hvdWxkIG5vdCBiZSByZXBvcnRlZCBzeW5jaHJvbm91
c2x5LgotICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwpOwotICAgIC8vIEFsbG93IHRoZSBsb2Fk
ZXIgdG8gcmV0dXJuIHRoZSBlcnJvci4KLSAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxv
b3AoKTsKLSAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwpOworICAgIENoZWNrRmFpbHVyZShyZXF1
ZXN0KTsKIH0KIAogLy8gVGVzdCBhIHN1Y2Nlc3NmdWwgY3Jvc3Mtb3JpZ2luIGxvYWQuCkBAIC0y
NTksNCArMjg2LDU0IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgQ3Jvc3NPcmkK
ICAgICBFWFBFQ1RfVFJVRShtX2RpZEZpbmlzaExvYWRpbmcpOwogfQogCisvLyBUZXN0IHRoYXQg
dW50cnVzdGVkIGxvYWRzIGNhbid0IHVzZSBhIGZvcmJpZGRlbiBtZXRob2QuCitURVNUX0YoQXNz
b2NpYXRlZFVSTExvYWRlclRlc3QsIFVudHJ1c3RlZENoZWNrTWV0aG9kcykKK3sKKyAgICAvLyBD
aGVjayBub24tdG9rZW4gbWV0aG9kIGZhaWxzLgorICAgIENoZWNrRm9yYmlkZGVuTWV0aG9kRmFp
bHMoIkdFVCgpIik7CisgICAgQ2hlY2tGb3JiaWRkZW5NZXRob2RGYWlscygiUE9TVFx4MGRceDBh
eC1jc3JmLXRva2VuOlx4MjB0ZXN0MTIzNCIpOworCisgICAgLy8gRm9yYmlkZGVuIG1ldGhvZHMg
c2hvdWxkIGZhaWwgcmVnYXJkbGVzcyBvZiBjYXNpbmcuCisgICAgQ2hlY2tGb3JiaWRkZW5NZXRo
b2RGYWlscygiQ29ObmVDdCIpOworICAgIENoZWNrRm9yYmlkZGVuTWV0aG9kRmFpbHMoIlRyQWNL
Iik7CisgICAgQ2hlY2tGb3JiaWRkZW5NZXRob2RGYWlscygiVHJBY0UiKTsKK30KKworLy8gVGVz
dCB0aGF0IHVudHJ1c3RlZCBsb2FkcyBjYW4ndCB1c2UgYSBmb3JiaWRkZW4gaGVhZGVyIGZpZWxk
LgorVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBVbnRydXN0ZWRDaGVja0hlYWRlcnMp
Cit7CisgICAgLy8gQ2hlY2sgbm9uLXRva2VuIGhlYWRlciBmYWlscy4KKyAgICBDaGVja0ZvcmJp
ZGRlbkhlYWRlckZhaWxzKCJmb28oKSIpOworCisgICAgLy8gQ2hlY2sgZm9yYmlkZGVuIGhlYWRl
cnMgZmFpbC4KKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJhY2NlcHQtY2hhcnNldCIp
OworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImFjY2VwdC1lbmNvZGluZyIpOworICAg
IENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImNvbm5lY3Rpb24iKTsKKyAgICBDaGVja0ZvcmJp
ZGRlbkhlYWRlckZhaWxzKCJjb250ZW50LWxlbmd0aCIpOworICAgIENoZWNrRm9yYmlkZGVuSGVh
ZGVyRmFpbHMoImNvb2tpZSIpOworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImNvb2tp
ZTIiKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJjb250ZW50LXRyYW5zZmVyLWVu
Y29kaW5nIik7CisgICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygiZGF0ZSIpOworICAgIENo
ZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoImV4cGVjdCIpOworICAgIENoZWNrRm9yYmlkZGVuSGVh
ZGVyRmFpbHMoImhvc3QiKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJrZWVwLWFs
aXZlIik7CisgICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygib3JpZ2luIik7CisgICAgQ2hl
Y2tGb3JiaWRkZW5IZWFkZXJGYWlscygicmVmZXJlciIpOworICAgIENoZWNrRm9yYmlkZGVuSGVh
ZGVyRmFpbHMoInRlIik7CisgICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygidHJhaWxlciIp
OworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoInRyYW5zZmVyLWVuY29kaW5nIik7Cisg
ICAgQ2hlY2tGb3JiaWRkZW5IZWFkZXJGYWlscygidXBncmFkZSIpOworICAgIENoZWNrRm9yYmlk
ZGVuSGVhZGVyRmFpbHMoInVzZXItYWdlbnQiKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZh
aWxzKCJ2aWEiKTsKKworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoInByb3h5LSIpOwor
ICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoInByb3h5LWZvbyIpOworICAgIENoZWNrRm9y
YmlkZGVuSGVhZGVyRmFpbHMoInNlYy0iKTsKKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxz
KCJzZWMtZm9vIik7CisKKyAgICAvLyBDaGVjayB0aGF0IHZhbGlkYXRpb24gaXMgY2FzZS1pbnNl
bnNpdGl2ZS4KKyAgICBDaGVja0ZvcmJpZGRlbkhlYWRlckZhaWxzKCJBY0NlUHQtQ2hBclNlVCIp
OworICAgIENoZWNrRm9yYmlkZGVuSGVhZGVyRmFpbHMoIlByb1h5LUZvTyIpOworfQorCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106631</attachid>
            <date>2011-09-07 13:55:28 -0700</date>
            <delta_ts>2011-09-13 14:01:11 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>12150</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NDcwNikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMDktMDcgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFBlcmZvcm0gSFRUUCBtZXRob2QgYW5kIGhlYWRlciB2YWxpZGF0aW9uIGluIEFzc29jaWF0
ZWRVUkxMb2FkZXIgZm9yCisgICAgICAgIHJlcXVlc3RzIGNvbWluZyBmcm9tIHVudHJ1c3RlZCBj
b2RlIChlZy4gTmF0aXZlIENsaWVudCBpbiBDaHJvbWUpLiBVc2UKKyAgICAgICAgdGhlIHNhbWUg
Y29kZSBhcyBYTUxIdHRwUmVxdWVzdCB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBhbmQgaGF2
ZQorICAgICAgICBiZWhhdmlvciBpZGVudGljYWwgdG8gWEhSIGluIEphdmFzY3JpcHQuIEFkZCBh
biAndW50cnVzdGVkSFRUUCcgb3B0aW9uCisgICAgICAgIHRvIFdlYlVSTExvYWRlck9wdGlvbnMs
IHdoaWNoIEFzc29jaWF0ZWRVUkxMb2FkZXIgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAgICAg
aWYgaXQgc2hvdWxkIGNoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBhbmQgaGVhZGVycy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
TG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkZXJPcHRpb25zOjpX
ZWJVUkxMb2FkZXJPcHRpb25zKToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5j
cHA6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjpTYWZlSFRUUEhlYWRl
clZhbGlkYXRvcik6CisgICAgICAgIChXVEY6OlNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjppc1Nh
ZmUpOgorICAgICAgICAoV1RGOjpTYWZlSFRUUEhlYWRlclZhbGlkYXRvcjo6dmlzaXRIZWFkZXIp
OgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOjpz
ZXREZWxheWVkRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyOjps
b2FkQXN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIHRlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRlclRlc3Q6OkNoZWNr
TWV0aG9kRmFpbHMpOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6
Q2hlY2tIZWFkZXJGYWlscyk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJU
ZXN0OjpDaGVja0ZhaWxzKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0wOS0w
NyAgRXJpYyBCb3JlbiAgPGJvcmVuZXRAZ21haWwuY29tPgogCiAgICAgICAgIFtDaHJvbWl1bV0g
TW9kaWZ5IFdlYlRvdWNoRXZlbnQgc3RydWN0dXJlIHRvIG1hdGNoIFdlYkNvcmU6OlRvdWNoRXZl
bnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlck9wdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxM
b2FkZXJPcHRpb25zLmgJKHJldmlzaW9uIDk0NTAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMTG9hZGVyT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0
MSwxNSBAQCBzdHJ1Y3QgV2ViVVJMTG9hZGVyT3B0aW9ucyB7CiAgICAgICAgIENyb3NzT3JpZ2lu
UmVxdWVzdFBvbGljeUFsbG93CiAgICAgfTsKIAotICAgIFdlYlVSTExvYWRlck9wdGlvbnMoKSA6
IHNuaWZmQ29udGVudChmYWxzZSksIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpLCBmb3JjZVByZWZs
aWdodChmYWxzZSksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShDcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3lEZW55KSB7IH0KKyAgICBXZWJVUkxMb2FkZXJPcHRpb25zKCkKKyAgICAgICAgOiB1bnRy
dXN0ZWRIVFRQKGZhbHNlKQorICAgICAgICAsIHNuaWZmQ29udGVudChmYWxzZSkKKyAgICAgICAg
LCBhbGxvd0NyZWRlbnRpYWxzKGZhbHNlKQorICAgICAgICAsIGZvcmNlUHJlZmxpZ2h0KGZhbHNl
KQorICAgICAgICAsIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShDcm9zc09yaWdpblJlcXVlc3RQ
b2xpY3lEZW55KQorICAgICAgICB7IH0KIAorICAgIGJvb2wgdW50cnVzdGVkSFRUUDsgLy8gV2hl
dGhlciB0byB2YWxpZGF0ZSB0aGUgbWV0aG9kIGFuZCBoZWFkZXJzIGFzIGlmIHRoaXMgd2FzIGFu
IFhNTEh0dHBSZXF1ZXN0LgogICAgIGJvb2wgc25pZmZDb250ZW50OyAvLyBXaGV0aGVyIHRvIHNu
aWZmIGNvbnRlbnQuCiAgICAgYm9vbCBhbGxvd0NyZWRlbnRpYWxzOyAvLyBXaGV0aGVyIHRvIHNl
bmQgSFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyB3aXRoIHRoZSByZXF1ZXN0LgogICAgIGJv
b2wgZm9yY2VQcmVmbGlnaHQ7IC8vIElmIHBvbGljeSBpcyB0byB1c2UgYWNjZXNzIGNvbnRyb2ws
IHdoZXRoZXIgdG8gZm9yY2UgYSBwcmVmbGlnaHQgZm9yIEdFVCwgSEVBRCwgYW5kIFBPU1QgcmVx
dWVzdHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lh
dGVkVVJMTG9hZGVyLmNwcAkocmV2aXNpb24gOTQ1MDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEg
KzMzLDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVFRQVmFs
aWRhdGlvbi5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldl
YkRhdGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJI
VFRQSGVhZGVyVmlzaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktp
dFBsYXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCkBAIC00NSwxMSAr
NDcsMzMgQEAKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV3JhcHBlZFJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldyYXBwZWRSZXNvdXJjZVJlc3BvbnNlLmgiCisj
aW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAorbmFtZXNwYWNl
IHsKKworY2xhc3MgU2FmZUhUVFBIZWFkZXJWYWxpZGF0b3IgOiBwdWJsaWMgV2ViSFRUUEhlYWRl
clZpc2l0b3IgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNhZmVIVFRQSGVhZGVyVmFsaWRh
dG9yKTsKK3B1YmxpYzoKKyAgICBTYWZlSFRUUEhlYWRlclZhbGlkYXRvcigpIDogbV9pc1NhZmUo
dHJ1ZSkgeyB9CisKKyAgICB2b2lkIHZpc2l0SGVhZGVyKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CisgICAgYm9vbCBpc1NhZmUoKSBjb25zdCB7IHJldHVy
biBtX2lzU2FmZTsgfQorCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1NhZmU7Cit9OworCit2b2lk
IFNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yOjp2aXNpdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCit7CisgICAgbV9pc1NhZmUgPSBtX2lzU2FmZSAm
JiBpc1ZhbGlkSFRUUFRva2VuKG5hbWUpICYmIFhNTEh0dHBSZXF1ZXN0Ojppc0FsbG93ZWRIVFRQ
SGVhZGVyKG5hbWUpICYmIGlzVmFsaWRIVFRQSGVhZGVyVmFsdWUodmFsdWUpOworfQorCit9CisK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFj
ZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4K
QEAgLTcxLDYgKzk1LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50KCkgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgLy8gU2V0cyBh
biBlcnJvciB0byBiZSByZXBvcnRlZCBiYWNrIHRvIHRoZSBjbGllbnQsIGFzeWNocm9ub3VzbHku
CisgICAgdm9pZCBzZXREZWxheWVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYpOworCiAgICAg
Ly8gRW5hYmxlcyBmb3J3YXJkaW5nIG9mIGVycm9yIG5vdGlmaWNhdGlvbnMgdG8gdGhlIFdlYlVS
TExvYWRlckNsaWVudC4gVGhlc2UgbXVzdCBiZQogICAgIC8vIGRlZmVycmVkIHVudGlsIGFmdGVy
IHRoZSBjYWxsIHRvIEFzc29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSgpIGNv
bXBsZXRlcy4KICAgICB2b2lkIGVuYWJsZUVycm9yTm90aWZpY2F0aW9ucygpOwpAQCAtMTc3LDYg
KzIwNCwxMSBAQCB2b2lkIEFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6CiAgICAg
ICAgIG5vdGlmeUVycm9yKCZtX2Vycm9yVGltZXIpOwogfQogCit2b2lkIEFzc29jaWF0ZWRVUkxM
b2FkZXI6OkNsaWVudEFkYXB0ZXI6OnNldERlbGF5ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3sKKyAgICBkaWRGYWlsKGVycm9yKTsKK30KKwogdm9pZCBBc3NvY2lhdGVkVVJM
TG9hZGVyOjpDbGllbnRBZGFwdGVyOjplbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKQogewogICAg
IG1fZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zID0gdHJ1ZTsKQEAgLTIyNSwxOCArMjU3LDM3IEBA
IHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6bG9hZEFzeW5jaHJvbm8KICAgICBtX2NsaWVudCA9
IGNsaWVudDsKICAgICBBU1NFUlQobV9jbGllbnQpOwogCi0gICAgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMgb3B0aW9uczsKLSAgICBvcHRpb25zLnNlbmRMb2FkQ2FsbGJhY2tzID0gU2VuZENhbGxi
YWNrczsgLy8gQWx3YXlzIHNlbmQgY2FsbGJhY2tzLgotICAgIG9wdGlvbnMuc25pZmZDb250ZW50
ID0gbV9vcHRpb25zLnNuaWZmQ29udGVudCA/IFNuaWZmQ29udGVudCA6IERvTm90U25pZmZDb250
ZW50OwotICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9IG1fb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50
aWFsczsKLSAgICBvcHRpb25zLnByZWZsaWdodFBvbGljeSA9IG1fb3B0aW9ucy5mb3JjZVByZWZs
aWdodCA/IEZvcmNlUHJlZmxpZ2h0IDogQ29uc2lkZXJQcmVmbGlnaHQ7Ci0gICAgb3B0aW9ucy5j
cm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDcm9zc09yaWdp
blJlcXVlc3RQb2xpY3k+KG1fb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kpOwotICAg
IG9wdGlvbnMuc2hvdWxkQnVmZmVyRGF0YSA9IERvTm90QnVmZmVyRGF0YTsKKyAgICBib29sIGFs
bG93TG9hZCA9IHRydWU7CisgICAgV2ViVVJMUmVxdWVzdCBuZXdSZXF1ZXN0KHJlcXVlc3QpOwor
ICAgIGlmIChtX29wdGlvbnMudW50cnVzdGVkSFRUUCkgeworICAgICAgICBXZWJTdHJpbmcgbWV0
aG9kID0gbmV3UmVxdWVzdC5odHRwTWV0aG9kKCk7CisgICAgICAgIGFsbG93TG9hZCA9IGlzVmFs
aWRIVFRQVG9rZW4obWV0aG9kKSAmJiBYTUxIdHRwUmVxdWVzdDo6aXNBbGxvd2VkSFRUUE1ldGhv
ZChtZXRob2QpOworICAgICAgICBpZiAoYWxsb3dMb2FkKSB7CisgICAgICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBNZXRob2QoWE1MSHR0cFJlcXVlc3Q6OnVwcGVyY2FzZUtub3duSFRUUE1ldGhv
ZChtZXRob2QpKTsKKyAgICAgICAgICAgIFNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yIHZhbGlkYXRv
cjsKKyAgICAgICAgICAgIG5ld1JlcXVlc3QudmlzaXRIVFRQSGVhZGVyRmllbGRzKCZ2YWxpZGF0
b3IpOworICAgICAgICAgICAgYWxsb3dMb2FkID0gdmFsaWRhdG9yLmlzU2FmZSgpOworICAgICAg
ICB9CisgICAgfQogCi0gICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVxdWVzdCA9
IHJlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKTsKLSAgICBEb2N1bWVudCogd2ViY29yZURvY3Vt
ZW50ID0gbV9mcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgbV9jbGllbnRBZGFw
dGVyID0gQ2xpZW50QWRhcHRlcjo6Y3JlYXRlKHRoaXMsIG1fY2xpZW50LCByZXF1ZXN0LmRvd25s
b2FkVG9GaWxlKCkpOwotICAgIG1fbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpj
cmVhdGUod2ViY29yZURvY3VtZW50LCBtX2NsaWVudEFkYXB0ZXIuZ2V0KCksIHdlYmNvcmVSZXF1
ZXN0LCBvcHRpb25zKTsKKworICAgIGlmIChhbGxvd0xvYWQpIHsKKyAgICAgICAgVGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKKyAgICAgICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNr
cyA9IFNlbmRDYWxsYmFja3M7IC8vIEFsd2F5cyBzZW5kIGNhbGxiYWNrcy4KKyAgICAgICAgb3B0
aW9ucy5zbmlmZkNvbnRlbnQgPSBtX29wdGlvbnMuc25pZmZDb250ZW50ID8gU25pZmZDb250ZW50
IDogRG9Ob3RTbmlmZkNvbnRlbnQ7CisgICAgICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA9
IG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERv
Tm90QWxsb3dTdG9yZWRDcmVkZW50aWFsczsKKyAgICAgICAgb3B0aW9ucy5wcmVmbGlnaHRQb2xp
Y3kgPSBtX29wdGlvbnMuZm9yY2VQcmVmbGlnaHQgPyBGb3JjZVByZWZsaWdodCA6IENvbnNpZGVy
UHJlZmxpZ2h0OworICAgICAgICBvcHRpb25zLmNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeSA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OkNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeT4obV9vcHRpb25zLmNy
b3NzT3JpZ2luUmVxdWVzdFBvbGljeSk7CisgICAgICAgIG9wdGlvbnMuc2hvdWxkQnVmZmVyRGF0
YSA9IERvTm90QnVmZmVyRGF0YTsKKworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHdl
YmNvcmVSZXF1ZXN0ID0gbmV3UmVxdWVzdC50b1Jlc291cmNlUmVxdWVzdCgpOworICAgICAgICBE
b2N1bWVudCogd2ViY29yZURvY3VtZW50ID0gbV9mcmFtZUltcGwtPmZyYW1lKCktPmRvY3VtZW50
KCk7CisgICAgICAgIG1fbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
d2ViY29yZURvY3VtZW50LCBtX2NsaWVudEFkYXB0ZXIuZ2V0KCksIHdlYmNvcmVSZXF1ZXN0LCBv
cHRpb25zKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGSVhNRTogcmV0dXJuIG1lYW5pbmdm
dWwgZXJyb3IgY29kZXMuCisgICAgICAgIG1fY2xpZW50QWRhcHRlci0+c2V0RGVsYXllZEVycm9y
KFJlc291cmNlRXJyb3IoKSk7CisgICAgfQogICAgIG1fY2xpZW50QWRhcHRlci0+ZW5hYmxlRXJy
b3JOb3RpZmljYXRpb25zKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRlclRlc3QuY3BwCShyZXZpc2lvbiA5
NDUwMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRl
clRlc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDQ2IEBAIHB1YmxpYzoKICAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlF1aXRNZXNzYWdlTG9vcCgpOwogICAgIH0KIAorICAgIHZv
aWQgQ2hlY2tNZXRob2RGYWlscyhjb25zdCBjaGFyKiB1bnNhZmVNZXRob2QpCisgICAgeworICAg
ICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CisgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgp
OworICAgICAgICByZXF1ZXN0LnNldFVSTChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nl
c3MuaHRtbCIpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKFdlYlN0cmluZzo6ZnJv
bVVURjgodW5zYWZlTWV0aG9kKSk7CisgICAgICAgIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9u
czsKKyAgICAgICAgb3B0aW9ucy51bnRydXN0ZWRIVFRQID0gdHJ1ZTsKKyAgICAgICAgQ2hlY2tG
YWlscyhyZXF1ZXN0LCBvcHRpb25zKTsKKyAgICB9CisKKyAgICB2b2lkIENoZWNrSGVhZGVyRmFp
bHMoY29uc3QgY2hhciogaGVhZGVyRmllbGQpCisgICAgeworICAgICAgICBDaGVja0hlYWRlckZh
aWxzKGhlYWRlckZpZWxkLCAiZm9vIik7CisgICAgfQorCisgICAgdm9pZCBDaGVja0hlYWRlckZh
aWxzKGNvbnN0IGNoYXIqIGhlYWRlckZpZWxkLCBjb25zdCBjaGFyKiBoZWFkZXJWYWx1ZSkKKyAg
ICB7CisgICAgICAgIFdlYlVSTFJlcXVlc3QgcmVxdWVzdDsKKyAgICAgICAgcmVxdWVzdC5pbml0
aWFsaXplKCk7CisgICAgICAgIHJlcXVlc3Quc2V0VVJMKEdVUkwoImh0dHA6Ly93d3cudGVzdC5j
b20vc3VjY2Vzcy5odG1sIikpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChX
ZWJTdHJpbmc6OmZyb21VVEY4KGhlYWRlckZpZWxkKSwgV2ViU3RyaW5nOjpmcm9tVVRGOChoZWFk
ZXJWYWx1ZSkpOworICAgICAgICBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7CisgICAgICAg
IG9wdGlvbnMudW50cnVzdGVkSFRUUCA9IHRydWU7CisgICAgICAgIENoZWNrRmFpbHMocmVxdWVz
dCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBDaGVja0ZhaWxzKGNvbnN0IFdlYlVSTFJl
cXVlc3QmIHJlcXVlc3QsIFdlYlVSTExvYWRlck9wdGlvbnMgb3B0aW9ucyA9IFdlYlVSTExvYWRl
ck9wdGlvbnMoKSkKKyAgICB7CisgICAgICAgIG1fZXhwZWN0ZWRMb2FkZXIgPSBjcmVhdGVBc3Nv
Y2lhdGVkVVJMTG9hZGVyKG9wdGlvbnMpOworICAgICAgICBFWFBFQ1RfVFJVRShtX2V4cGVjdGVk
TG9hZGVyKTsKKyAgICAgICAgbV9kaWRGYWlsID0gZmFsc2U7CisgICAgICAgIG1fZXhwZWN0ZWRM
b2FkZXItPmxvYWRBc3luY2hyb25vdXNseShyZXF1ZXN0LCB0aGlzKTsKKyAgICAgICAgLy8gRmFp
bHVyZSBzaG91bGQgbm90IGJlIHJlcG9ydGVkIHN5bmNocm9ub3VzbHkuCisgICAgICAgIEVYUEVD
VF9GQUxTRShtX2RpZEZhaWwpOworICAgICAgICAvLyBBbGxvdyB0aGUgbG9hZGVyIHRvIHJldHVy
biB0aGUgZXJyb3IuCisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSdW5NZXNzYWdlTG9vcCgpOwor
ICAgICAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwpOworICAgIH0KKwogcHJvdGVjdGVkOgogICAg
IFdlYlN0cmluZyBtX2ZyYW1lRmlsZVBhdGg7CiAgICAgVGVzdFdlYkZyYW1lQ2xpZW50IG1fd2Vi
RnJhbWVDbGllbnQ7CkBAIC0yMjMsMTUgKzI2Myw3IEBAIFRFU1RfRihBc3NvY2lhdGVkVVJMTG9h
ZGVyVGVzdCwgU2FtZU9yaWcKICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CiAgICAgcmVxdWVz
dC5pbml0aWFsaXplKCk7CiAgICAgcmVxdWVzdC5zZXRVUkwodXJsKTsKLQotICAgIG1fZXhwZWN0
ZWRMb2FkZXIgPSBjcmVhdGVBc3NvY2lhdGVkVVJMTG9hZGVyKCk7Ci0gICAgRVhQRUNUX1RSVUUo
bV9leHBlY3RlZExvYWRlcik7Ci0gICAgbV9leHBlY3RlZExvYWRlci0+bG9hZEFzeW5jaHJvbm91
c2x5KHJlcXVlc3QsIHRoaXMpOwotICAgIC8vIEZhaWx1cmUgc2hvdWxkIG5vdCBiZSByZXBvcnRl
ZCBzeW5jaHJvbm91c2x5LgotICAgIEVYUEVDVF9GQUxTRShtX2RpZEZhaWwpOwotICAgIC8vIEFs
bG93IHRoZSBsb2FkZXIgdG8gcmV0dXJuIHRoZSBlcnJvci4KLSAgICB3ZWJraXRfc3VwcG9ydDo6
UnVuTWVzc2FnZUxvb3AoKTsKLSAgICBFWFBFQ1RfVFJVRShtX2RpZEZhaWwpOworICAgIENoZWNr
RmFpbHMocmVxdWVzdCk7CiB9CiAKIC8vIFRlc3QgYSBzdWNjZXNzZnVsIGNyb3NzLW9yaWdpbiBs
b2FkLgpAQCAtMjU5LDQgKzI5MSw1NyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qs
IENyb3NzT3JpCiAgICAgRVhQRUNUX1RSVUUobV9kaWRGaW5pc2hMb2FkaW5nKTsKIH0KIAorLy8g
VGVzdCB0aGF0IHVudHJ1c3RlZCBsb2FkcyBjYW4ndCB1c2UgYSBmb3JiaWRkZW4gbWV0aG9kLgor
VEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBVbnRydXN0ZWRDaGVja01ldGhvZHMpCit7
CisgICAgLy8gQ2hlY2sgbm9uLXRva2VuIG1ldGhvZCBmYWlscy4KKyAgICBDaGVja01ldGhvZEZh
aWxzKCJHRVQoKSIpOworICAgIENoZWNrTWV0aG9kRmFpbHMoIlBPU1RceDBkXHgwYXgtY3NyZi10
b2tlbjpceDIwdGVzdDEyMzQiKTsKKworICAgIC8vIEZvcmJpZGRlbiBtZXRob2RzIHNob3VsZCBm
YWlsIHJlZ2FyZGxlc3Mgb2YgY2FzaW5nLgorICAgIENoZWNrTWV0aG9kRmFpbHMoIkNvTm5lQ3Qi
KTsKKyAgICBDaGVja01ldGhvZEZhaWxzKCJUckFjSyIpOworICAgIENoZWNrTWV0aG9kRmFpbHMo
IlRyQWNFIik7Cit9CisKKy8vIFRlc3QgdGhhdCB1bnRydXN0ZWQgbG9hZHMgY2FuJ3QgdXNlIGEg
Zm9yYmlkZGVuIGhlYWRlciBmaWVsZC4KK1RFU1RfRihBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwg
VW50cnVzdGVkQ2hlY2tIZWFkZXJzKQoreworICAgIC8vIENoZWNrIG5vbi10b2tlbiBoZWFkZXIg
ZmFpbHMuCisgICAgQ2hlY2tIZWFkZXJGYWlscygiZm9vKCkiKTsKKworICAgIC8vIENoZWNrIGZv
cmJpZGRlbiBoZWFkZXJzIGZhaWwuCisgICAgQ2hlY2tIZWFkZXJGYWlscygiYWNjZXB0LWNoYXJz
ZXQiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJhY2NlcHQtZW5jb2RpbmciKTsKKyAgICBDaGVj
a0hlYWRlckZhaWxzKCJjb25uZWN0aW9uIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygiY29udGVu
dC1sZW5ndGgiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJjb29raWUiKTsKKyAgICBDaGVja0hl
YWRlckZhaWxzKCJjb29raWUyIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygiY29udGVudC10cmFu
c2Zlci1lbmNvZGluZyIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoImRhdGUiKTsKKyAgICBDaGVj
a0hlYWRlckZhaWxzKCJleHBlY3QiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJob3N0Iik7Cisg
ICAgQ2hlY2tIZWFkZXJGYWlscygia2VlcC1hbGl2ZSIpOworICAgIENoZWNrSGVhZGVyRmFpbHMo
Im9yaWdpbiIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoInJlZmVyZXIiKTsKKyAgICBDaGVja0hl
YWRlckZhaWxzKCJ0ZSIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoInRyYWlsZXIiKTsKKyAgICBD
aGVja0hlYWRlckZhaWxzKCJ0cmFuc2Zlci1lbmNvZGluZyIpOworICAgIENoZWNrSGVhZGVyRmFp
bHMoInVwZ3JhZGUiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJ1c2VyLWFnZW50Iik7CisgICAg
Q2hlY2tIZWFkZXJGYWlscygidmlhIik7CisKKyAgICBDaGVja0hlYWRlckZhaWxzKCJwcm94eS0i
KTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJwcm94eS1mb28iKTsKKyAgICBDaGVja0hlYWRlckZh
aWxzKCJzZWMtIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygic2VjLWZvbyIpOworCisgICAgLy8g
Q2hlY2sgdGhhdCB2YWxpZGF0aW9uIGlzIGNhc2UtaW5zZW5zaXRpdmUuCisgICAgQ2hlY2tIZWFk
ZXJGYWlscygiQWNDZVB0LUNoQXJTZVQiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJQcm9YeS1G
b08iKTsKKworICAgIC8vIENoZWNrIGludmFsaWQgaGVhZGVyIHZhbHVlcy4KKyAgICBDaGVja0hl
YWRlckZhaWxzKCJmb28iLCAiYmFyXHgwZFx4MGF4LWNzcmYtdG9rZW46XHgyMHRlc3QxMjM0Iik7
Cit9CisKIH0K
</data>
<flag name="review"
          id="103105"
          type_id="1"
          status="+"
          setter="fishd"
    />
    <flag name="commit-queue"
          id="103106"
          type_id="3"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107222</attachid>
            <date>2011-09-13 14:01:11 -0700</date>
            <delta_ts>2011-09-19 16:01:59 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>aul.txt</filename>
            <type>text/plain</type>
            <size>12142</size>
            <attacher name="Bill Budge">bbudge</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTA0MykKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDktMTMgIEJpbGwgQnVkZ2UgIDxiYnVkZ2VAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFBlcmZvcm0gSFRUUCBtZXRob2QgYW5kIGhlYWRlciB2YWxpZGF0aW9uIGluIEFzc29jaWF0
ZWRVUkxMb2FkZXIgZm9yCisgICAgICAgIHJlcXVlc3RzIGNvbWluZyBmcm9tIHVudHJ1c3RlZCBj
b2RlIChlZy4gTmF0aXZlIENsaWVudCBpbiBDaHJvbWUpLiBVc2UKKyAgICAgICAgdGhlIHNhbWUg
Y29kZSBhcyBYTUxIdHRwUmVxdWVzdCB0byByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBhbmQgaGF2
ZQorICAgICAgICBiZWhhdmlvciBpZGVudGljYWwgdG8gWEhSIGluIEphdmFzY3JpcHQuIEFkZCBh
biAndW50cnVzdGVkSFRUUCcgb3B0aW9uCisgICAgICAgIHRvIFdlYlVSTExvYWRlck9wdGlvbnMs
IHdoaWNoIEFzc29jaWF0ZWRVUkxMb2FkZXIgY2FuIHVzZSB0byBkZXRlcm1pbmUKKyAgICAgICAg
aWYgaXQgc2hvdWxkIGNoZWNrIHRoZSByZXF1ZXN0IG1ldGhvZCBhbmQgaGVhZGVycy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJM
TG9hZGVyT3B0aW9ucy5oOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxMb2FkZXJPcHRpb25zOjpX
ZWJVUkxMb2FkZXJPcHRpb25zKToKKyAgICAgICAgKiBzcmMvQXNzb2NpYXRlZFVSTExvYWRlci5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6OkNsaWVudEFkYXB0ZXI6
OnNldERlbGF5ZWRFcnJvcik6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXI6
OmxvYWRBc3luY2hyb25vdXNseSk6CisgICAgICAgICogdGVzdHMvQXNzb2NpYXRlZFVSTExvYWRl
clRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpBc3NvY2lhdGVkVVJMTG9hZGVyVGVzdDo6Q2hl
Y2tNZXRob2RGYWlscyk6CisgICAgICAgIChXZWJLaXQ6OkFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0
OjpDaGVja0hlYWRlckZhaWxzKToKKyAgICAgICAgKFdlYktpdDo6QXNzb2NpYXRlZFVSTExvYWRl
clRlc3Q6OkNoZWNrRmFpbHMpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorCiAyMDExLTA5
LTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgRU5B
QkxFX1NWR19GT1JFSUdOX09CSkVDVCBhcyBpdCBpcyBhIHJlcXVpcmVkIHBhcnQgb2YgSFRNTDUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlVSTExvYWRlck9wdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2Fk
ZXJPcHRpb25zLmgJKHJldmlzaW9uIDk0NTAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVVJMTG9hZGVyT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSwx
NSBAQCBzdHJ1Y3QgV2ViVVJMTG9hZGVyT3B0aW9ucyB7CiAgICAgICAgIENyb3NzT3JpZ2luUmVx
dWVzdFBvbGljeUFsbG93CiAgICAgfTsKIAotICAgIFdlYlVSTExvYWRlck9wdGlvbnMoKSA6IHNu
aWZmQ29udGVudChmYWxzZSksIGFsbG93Q3JlZGVudGlhbHMoZmFsc2UpLCBmb3JjZVByZWZsaWdo
dChmYWxzZSksIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShDcm9zc09yaWdpblJlcXVlc3RQb2xp
Y3lEZW55KSB7IH0KKyAgICBXZWJVUkxMb2FkZXJPcHRpb25zKCkKKyAgICAgICAgOiB1bnRydXN0
ZWRIVFRQKGZhbHNlKQorICAgICAgICAsIHNuaWZmQ29udGVudChmYWxzZSkKKyAgICAgICAgLCBh
bGxvd0NyZWRlbnRpYWxzKGZhbHNlKQorICAgICAgICAsIGZvcmNlUHJlZmxpZ2h0KGZhbHNlKQor
ICAgICAgICAsIGNyb3NzT3JpZ2luUmVxdWVzdFBvbGljeShDcm9zc09yaWdpblJlcXVlc3RQb2xp
Y3lEZW55KQorICAgICAgICB7IH0KIAorICAgIGJvb2wgdW50cnVzdGVkSFRUUDsgLy8gV2hldGhl
ciB0byB2YWxpZGF0ZSB0aGUgbWV0aG9kIGFuZCBoZWFkZXJzIGFzIGlmIHRoaXMgd2FzIGFuIFhN
TEh0dHBSZXF1ZXN0LgogICAgIGJvb2wgc25pZmZDb250ZW50OyAvLyBXaGV0aGVyIHRvIHNuaWZm
IGNvbnRlbnQuCiAgICAgYm9vbCBhbGxvd0NyZWRlbnRpYWxzOyAvLyBXaGV0aGVyIHRvIHNlbmQg
SFRUUCBjcmVkZW50aWFscyBhbmQgY29va2llcyB3aXRoIHRoZSByZXF1ZXN0LgogICAgIGJvb2wg
Zm9yY2VQcmVmbGlnaHQ7IC8vIElmIHBvbGljeSBpcyB0byB1c2UgYWNjZXNzIGNvbnRyb2wsIHdo
ZXRoZXIgdG8gZm9yY2UgYSBwcmVmbGlnaHQgZm9yIEdFVCwgSEVBRCwgYW5kIFBPU1QgcmVxdWVz
dHMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NvY2lhdGVk
VVJMTG9hZGVyLmNwcAkocmV2aXNpb24gOTQ1MDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Bc3NvY2lhdGVkVVJMTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTEgKzMz
LDEzIEBACiAKICNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRl
ICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJIVFRQVmFsaWRh
dGlvbi5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlICJXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIldlYkRh
dGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJIVFRQ
SGVhZGVyVmlzaXRvci5oIgogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdFBs
YXRmb3JtU3VwcG9ydC5oIgogI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCkBAIC00NSwxMyArNDcs
MzQgQEAKICNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiV3JhcHBlZFJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldyYXBwZWRSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK25hbWVzcGFjZSB7CisKK2NsYXNzIFNhZmVIVFRQSGVhZGVyVmFsaWRhdG9yIDog
cHVibGljIFdlYkhUVFBIZWFkZXJWaXNpdG9yIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
YWZlSFRUUEhlYWRlclZhbGlkYXRvcik7CitwdWJsaWM6CisgICAgU2FmZUhUVFBIZWFkZXJWYWxp
ZGF0b3IoKSA6IG1faXNTYWZlKHRydWUpIHsgfQorCisgICAgdm9pZCB2aXNpdEhlYWRlcihjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOworICAgIGJvb2wgaXNT
YWZlKCkgY29uc3QgeyByZXR1cm4gbV9pc1NhZmU7IH0KKworcHJpdmF0ZToKKyAgICBib29sIG1f
aXNTYWZlOworfTsKKwordm9pZCBTYWZlSFRUUEhlYWRlclZhbGlkYXRvcjo6dmlzaXRIZWFkZXIo
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQoreworICAgIG1f
aXNTYWZlID0gbV9pc1NhZmUgJiYgaXNWYWxpZEhUVFBUb2tlbihuYW1lKSAmJiBYTUxIdHRwUmVx
dWVzdDo6aXNBbGxvd2VkSFRUUEhlYWRlcihuYW1lKSAmJiBpc1ZhbGlkSFRUUEhlYWRlclZhbHVl
KHZhbHVlKTsKK30KKworfQorCiAvLyBUaGlzIGNsYXNzIGJyaWRnZXMgdGhlIGludGVyZmFjZSBk
aWZmZXJlbmNlcyBiZXR3ZWVuIFdlYkNvcmUgYW5kIFdlYktpdCBsb2FkZXIgY2xpZW50cy4KIC8v
IEl0IGZvcndhcmRzIGl0cyBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50IG5vdGlmaWNhdGlvbnMgdG8g
YSBXZWJVUkxMb2FkZXJDbGllbnQuCiBjbGFzcyBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRB
ZGFwdGVyIDogcHVibGljIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CkBAIC03MSw2
ICs5NCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlckNsaWVudCgpIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIC8vIFNldHMgYW4gZXJyb3Ig
dG8gYmUgcmVwb3J0ZWQgYmFjayB0byB0aGUgY2xpZW50LCBhc3ljaHJvbm91c2x5LgorICAgIHZv
aWQgc2V0RGVsYXllZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKwogICAgIC8vIEVuYWJs
ZXMgZm9yd2FyZGluZyBvZiBlcnJvciBub3RpZmljYXRpb25zIHRvIHRoZSBXZWJVUkxMb2FkZXJD
bGllbnQuIFRoZXNlIG11c3QgYmUKICAgICAvLyBkZWZlcnJlZCB1bnRpbCBhZnRlciB0aGUgY2Fs
bCB0byBBc3NvY2lhdGVkVVJMTG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKSBjb21wbGV0ZXMu
CiAgICAgdm9pZCBlbmFibGVFcnJvck5vdGlmaWNhdGlvbnMoKTsKQEAgLTE3Nyw2ICsyMDMsMTEg
QEAgdm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpDbGllbnRBZGFwdGVyOgogICAgICAgICBub3Rp
ZnlFcnJvcigmbV9lcnJvclRpbWVyKTsKIH0KIAordm9pZCBBc3NvY2lhdGVkVVJMTG9hZGVyOjpD
bGllbnRBZGFwdGVyOjpzZXREZWxheWVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit7CisgICAgZGlkRmFpbChlcnJvcik7Cit9CisKIHZvaWQgQXNzb2NpYXRlZFVSTExvYWRlcjo6
Q2xpZW50QWRhcHRlcjo6ZW5hYmxlRXJyb3JOb3RpZmljYXRpb25zKCkKIHsKICAgICBtX2VuYWJs
ZUVycm9yTm90aWZpY2F0aW9ucyA9IHRydWU7CkBAIC0yMjUsMTggKzI1NiwzNyBAQCB2b2lkIEFz
c29jaWF0ZWRVUkxMb2FkZXI6OmxvYWRBc3luY2hyb25vCiAgICAgbV9jbGllbnQgPSBjbGllbnQ7
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKIAotICAgIFRocmVhZGFibGVMb2FkZXJPcHRpb25zIG9w
dGlvbnM7Ci0gICAgb3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcyA9IFNlbmRDYWxsYmFja3M7IC8v
IEFsd2F5cyBzZW5kIGNhbGxiYWNrcy4KLSAgICBvcHRpb25zLnNuaWZmQ29udGVudCA9IG1fb3B0
aW9ucy5zbmlmZkNvbnRlbnQgPyBTbmlmZkNvbnRlbnQgOiBEb05vdFNuaWZmQ29udGVudDsKLSAg
ICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscyA/
IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7Ci0g
ICAgb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPSBtX29wdGlvbnMuZm9yY2VQcmVmbGlnaHQgPyBG
b3JjZVByZWZsaWdodCA6IENvbnNpZGVyUHJlZmxpZ2h0OwotICAgIG9wdGlvbnMuY3Jvc3NPcmln
aW5SZXF1ZXN0UG9saWN5ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6Q3Jvc3NPcmlnaW5SZXF1ZXN0
UG9saWN5PihtX29wdGlvbnMuY3Jvc3NPcmlnaW5SZXF1ZXN0UG9saWN5KTsKLSAgICBvcHRpb25z
LnNob3VsZEJ1ZmZlckRhdGEgPSBEb05vdEJ1ZmZlckRhdGE7CisgICAgYm9vbCBhbGxvd0xvYWQg
PSB0cnVlOworICAgIFdlYlVSTFJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0KTsKKyAgICBpZiAo
bV9vcHRpb25zLnVudHJ1c3RlZEhUVFApIHsKKyAgICAgICAgV2ViU3RyaW5nIG1ldGhvZCA9IG5l
d1JlcXVlc3QuaHR0cE1ldGhvZCgpOworICAgICAgICBhbGxvd0xvYWQgPSBpc1ZhbGlkSFRUUFRv
a2VuKG1ldGhvZCkgJiYgWE1MSHR0cFJlcXVlc3Q6OmlzQWxsb3dlZEhUVFBNZXRob2QobWV0aG9k
KTsKKyAgICAgICAgaWYgKGFsbG93TG9hZCkgeworICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRI
VFRQTWV0aG9kKFhNTEh0dHBSZXF1ZXN0Ojp1cHBlcmNhc2VLbm93bkhUVFBNZXRob2QobWV0aG9k
KSk7CisgICAgICAgICAgICBTYWZlSFRUUEhlYWRlclZhbGlkYXRvciB2YWxpZGF0b3I7CisgICAg
ICAgICAgICBuZXdSZXF1ZXN0LnZpc2l0SFRUUEhlYWRlckZpZWxkcygmdmFsaWRhdG9yKTsKKyAg
ICAgICAgICAgIGFsbG93TG9hZCA9IHZhbGlkYXRvci5pc1NhZmUoKTsKKyAgICAgICAgfQorICAg
IH0KIAotICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgd2ViY29yZVJlcXVlc3QgPSByZXF1ZXN0
LnRvUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgRG9jdW1lbnQqIHdlYmNvcmVEb2N1bWVudCA9IG1f
ZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgpOwogICAgIG1fY2xpZW50QWRhcHRlciA9IENs
aWVudEFkYXB0ZXI6OmNyZWF0ZSh0aGlzLCBtX2NsaWVudCwgcmVxdWVzdC5kb3dubG9hZFRvRmls
ZSgpKTsKLSAgICBtX2xvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdl
YmNvcmVEb2N1bWVudCwgbV9jbGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwgb3B0
aW9ucyk7CisKKyAgICBpZiAoYWxsb3dMb2FkKSB7CisgICAgICAgIFRocmVhZGFibGVMb2FkZXJP
cHRpb25zIG9wdGlvbnM7CisgICAgICAgIG9wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPSBTZW5k
Q2FsbGJhY2tzOyAvLyBBbHdheXMgc2VuZCBjYWxsYmFja3MuCisgICAgICAgIG9wdGlvbnMuc25p
ZmZDb250ZW50ID0gbV9vcHRpb25zLnNuaWZmQ29udGVudCA/IFNuaWZmQ29udGVudCA6IERvTm90
U25pZmZDb250ZW50OworICAgICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMgPSBtX29wdGlv
bnMuYWxsb3dDcmVkZW50aWFscyA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05vdEFsbG93
U3RvcmVkQ3JlZGVudGlhbHM7CisgICAgICAgIG9wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID0gbV9v
cHRpb25zLmZvcmNlUHJlZmxpZ2h0ID8gRm9yY2VQcmVmbGlnaHQgOiBDb25zaWRlclByZWZsaWdo
dDsKKyAgICAgICAgb3B0aW9ucy5jcm9zc09yaWdpblJlcXVlc3RQb2xpY3kgPSBzdGF0aWNfY2Fz
dDxXZWJDb3JlOjpDcm9zc09yaWdpblJlcXVlc3RQb2xpY3k+KG1fb3B0aW9ucy5jcm9zc09yaWdp
blJlcXVlc3RQb2xpY3kpOworICAgICAgICBvcHRpb25zLnNob3VsZEJ1ZmZlckRhdGEgPSBEb05v
dEJ1ZmZlckRhdGE7CisKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiB3ZWJjb3JlUmVx
dWVzdCA9IG5ld1JlcXVlc3QudG9SZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgRG9jdW1lbnQq
IHdlYmNvcmVEb2N1bWVudCA9IG1fZnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgpOworICAg
ICAgICBtX2xvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdlYmNvcmVE
b2N1bWVudCwgbV9jbGllbnRBZGFwdGVyLmdldCgpLCB3ZWJjb3JlUmVxdWVzdCwgb3B0aW9ucyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IHJldHVybiBtZWFuaW5nZnVsIGVycm9y
IGNvZGVzLgorICAgICAgICBtX2NsaWVudEFkYXB0ZXItPnNldERlbGF5ZWRFcnJvcihSZXNvdXJj
ZUVycm9yKCkpOworICAgIH0KICAgICBtX2NsaWVudEFkYXB0ZXItPmVuYWJsZUVycm9yTm90aWZp
Y2F0aW9ucygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29j
aWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcAkocmV2aXNpb24gOTQ1MDApCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Fzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw0NiBAQCBwdWJsaWM6CiAgICAgICAgIHdl
YmtpdF9zdXBwb3J0OjpRdWl0TWVzc2FnZUxvb3AoKTsKICAgICB9CiAKKyAgICB2b2lkIENoZWNr
TWV0aG9kRmFpbHMoY29uc3QgY2hhciogdW5zYWZlTWV0aG9kKQorICAgIHsKKyAgICAgICAgV2Vi
VVJMUmVxdWVzdCByZXF1ZXN0OworICAgICAgICByZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICAg
ICAgcmVxdWVzdC5zZXRVUkwoR1VSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS9zdWNjZXNzLmh0bWwi
KSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUE1ldGhvZChXZWJTdHJpbmc6OmZyb21VVEY4KHVu
c2FmZU1ldGhvZCkpOworICAgICAgICBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnM7CisgICAg
ICAgIG9wdGlvbnMudW50cnVzdGVkSFRUUCA9IHRydWU7CisgICAgICAgIENoZWNrRmFpbHMocmVx
dWVzdCwgb3B0aW9ucyk7CisgICAgfQorCisgICAgdm9pZCBDaGVja0hlYWRlckZhaWxzKGNvbnN0
IGNoYXIqIGhlYWRlckZpZWxkKQorICAgIHsKKyAgICAgICAgQ2hlY2tIZWFkZXJGYWlscyhoZWFk
ZXJGaWVsZCwgImZvbyIpOworICAgIH0KKworICAgIHZvaWQgQ2hlY2tIZWFkZXJGYWlscyhjb25z
dCBjaGFyKiBoZWFkZXJGaWVsZCwgY29uc3QgY2hhciogaGVhZGVyVmFsdWUpCisgICAgeworICAg
ICAgICBXZWJVUkxSZXF1ZXN0IHJlcXVlc3Q7CisgICAgICAgIHJlcXVlc3QuaW5pdGlhbGl6ZSgp
OworICAgICAgICByZXF1ZXN0LnNldFVSTChHVVJMKCJodHRwOi8vd3d3LnRlc3QuY29tL3N1Y2Nl
c3MuaHRtbCIpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViU3RyaW5n
Ojpmcm9tVVRGOChoZWFkZXJGaWVsZCksIFdlYlN0cmluZzo6ZnJvbVVURjgoaGVhZGVyVmFsdWUp
KTsKKyAgICAgICAgV2ViVVJMTG9hZGVyT3B0aW9ucyBvcHRpb25zOworICAgICAgICBvcHRpb25z
LnVudHJ1c3RlZEhUVFAgPSB0cnVlOworICAgICAgICBDaGVja0ZhaWxzKHJlcXVlc3QsIG9wdGlv
bnMpOworICAgIH0KKworICAgIHZvaWQgQ2hlY2tGYWlscyhjb25zdCBXZWJVUkxSZXF1ZXN0JiBy
ZXF1ZXN0LCBXZWJVUkxMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBXZWJVUkxMb2FkZXJPcHRpb25z
KCkpCisgICAgeworICAgICAgICBtX2V4cGVjdGVkTG9hZGVyID0gY3JlYXRlQXNzb2NpYXRlZFVS
TExvYWRlcihvcHRpb25zKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV9leHBlY3RlZExvYWRlcik7
CisgICAgICAgIG1fZGlkRmFpbCA9IGZhbHNlOworICAgICAgICBtX2V4cGVjdGVkTG9hZGVyLT5s
b2FkQXN5bmNocm9ub3VzbHkocmVxdWVzdCwgdGhpcyk7CisgICAgICAgIC8vIEZhaWx1cmUgc2hv
dWxkIG5vdCBiZSByZXBvcnRlZCBzeW5jaHJvbm91c2x5LgorICAgICAgICBFWFBFQ1RfRkFMU0Uo
bV9kaWRGYWlsKTsKKyAgICAgICAgLy8gQWxsb3cgdGhlIGxvYWRlciB0byByZXR1cm4gdGhlIGVy
cm9yLgorICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UnVuTWVzc2FnZUxvb3AoKTsKKyAgICAgICAg
RVhQRUNUX1RSVUUobV9kaWRGYWlsKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICBXZWJTdHJp
bmcgbV9mcmFtZUZpbGVQYXRoOwogICAgIFRlc3RXZWJGcmFtZUNsaWVudCBtX3dlYkZyYW1lQ2xp
ZW50OwpAQCAtMjIzLDE1ICsyNjMsNyBAQCBURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3Qs
IFNhbWVPcmlnCiAgICAgV2ViVVJMUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3QuaW5pdGlh
bGl6ZSgpOwogICAgIHJlcXVlc3Quc2V0VVJMKHVybCk7Ci0KLSAgICBtX2V4cGVjdGVkTG9hZGVy
ID0gY3JlYXRlQXNzb2NpYXRlZFVSTExvYWRlcigpOwotICAgIEVYUEVDVF9UUlVFKG1fZXhwZWN0
ZWRMb2FkZXIpOwotICAgIG1fZXhwZWN0ZWRMb2FkZXItPmxvYWRBc3luY2hyb25vdXNseShyZXF1
ZXN0LCB0aGlzKTsKLSAgICAvLyBGYWlsdXJlIHNob3VsZCBub3QgYmUgcmVwb3J0ZWQgc3luY2hy
b25vdXNseS4KLSAgICBFWFBFQ1RfRkFMU0UobV9kaWRGYWlsKTsKLSAgICAvLyBBbGxvdyB0aGUg
bG9hZGVyIHRvIHJldHVybiB0aGUgZXJyb3IuCi0gICAgd2Via2l0X3N1cHBvcnQ6OlJ1bk1lc3Nh
Z2VMb29wKCk7Ci0gICAgRVhQRUNUX1RSVUUobV9kaWRGYWlsKTsKKyAgICBDaGVja0ZhaWxzKHJl
cXVlc3QpOwogfQogCiAvLyBUZXN0IGEgc3VjY2Vzc2Z1bCBjcm9zcy1vcmlnaW4gbG9hZC4KQEAg
LTI1OSw0ICsyOTEsNTcgQEAgVEVTVF9GKEFzc29jaWF0ZWRVUkxMb2FkZXJUZXN0LCBDcm9zc09y
aQogICAgIEVYUEVDVF9UUlVFKG1fZGlkRmluaXNoTG9hZGluZyk7CiB9CiAKKy8vIFRlc3QgdGhh
dCB1bnRydXN0ZWQgbG9hZHMgY2FuJ3QgdXNlIGEgZm9yYmlkZGVuIG1ldGhvZC4KK1RFU1RfRihB
c3NvY2lhdGVkVVJMTG9hZGVyVGVzdCwgVW50cnVzdGVkQ2hlY2tNZXRob2RzKQoreworICAgIC8v
IENoZWNrIG5vbi10b2tlbiBtZXRob2QgZmFpbHMuCisgICAgQ2hlY2tNZXRob2RGYWlscygiR0VU
KCkiKTsKKyAgICBDaGVja01ldGhvZEZhaWxzKCJQT1NUXHgwZFx4MGF4LWNzcmYtdG9rZW46XHgy
MHRlc3QxMjM0Iik7CisKKyAgICAvLyBGb3JiaWRkZW4gbWV0aG9kcyBzaG91bGQgZmFpbCByZWdh
cmRsZXNzIG9mIGNhc2luZy4KKyAgICBDaGVja01ldGhvZEZhaWxzKCJDb05uZUN0Iik7CisgICAg
Q2hlY2tNZXRob2RGYWlscygiVHJBY0siKTsKKyAgICBDaGVja01ldGhvZEZhaWxzKCJUckFjRSIp
OworfQorCisvLyBUZXN0IHRoYXQgdW50cnVzdGVkIGxvYWRzIGNhbid0IHVzZSBhIGZvcmJpZGRl
biBoZWFkZXIgZmllbGQuCitURVNUX0YoQXNzb2NpYXRlZFVSTExvYWRlclRlc3QsIFVudHJ1c3Rl
ZENoZWNrSGVhZGVycykKK3sKKyAgICAvLyBDaGVjayBub24tdG9rZW4gaGVhZGVyIGZhaWxzLgor
ICAgIENoZWNrSGVhZGVyRmFpbHMoImZvbygpIik7CisKKyAgICAvLyBDaGVjayBmb3JiaWRkZW4g
aGVhZGVycyBmYWlsLgorICAgIENoZWNrSGVhZGVyRmFpbHMoImFjY2VwdC1jaGFyc2V0Iik7Cisg
ICAgQ2hlY2tIZWFkZXJGYWlscygiYWNjZXB0LWVuY29kaW5nIik7CisgICAgQ2hlY2tIZWFkZXJG
YWlscygiY29ubmVjdGlvbiIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoImNvbnRlbnQtbGVuZ3Ro
Iik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygiY29va2llIik7CisgICAgQ2hlY2tIZWFkZXJGYWls
cygiY29va2llMiIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoImNvbnRlbnQtdHJhbnNmZXItZW5j
b2RpbmciKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJkYXRlIik7CisgICAgQ2hlY2tIZWFkZXJG
YWlscygiZXhwZWN0Iik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygiaG9zdCIpOworICAgIENoZWNr
SGVhZGVyRmFpbHMoImtlZXAtYWxpdmUiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJvcmlnaW4i
KTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJyZWZlcmVyIik7CisgICAgQ2hlY2tIZWFkZXJGYWls
cygidGUiKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJ0cmFpbGVyIik7CisgICAgQ2hlY2tIZWFk
ZXJGYWlscygidHJhbnNmZXItZW5jb2RpbmciKTsKKyAgICBDaGVja0hlYWRlckZhaWxzKCJ1cGdy
YWRlIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygidXNlci1hZ2VudCIpOworICAgIENoZWNrSGVh
ZGVyRmFpbHMoInZpYSIpOworCisgICAgQ2hlY2tIZWFkZXJGYWlscygicHJveHktIik7CisgICAg
Q2hlY2tIZWFkZXJGYWlscygicHJveHktZm9vIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygic2Vj
LSIpOworICAgIENoZWNrSGVhZGVyRmFpbHMoInNlYy1mb28iKTsKKworICAgIC8vIENoZWNrIHRo
YXQgdmFsaWRhdGlvbiBpcyBjYXNlLWluc2Vuc2l0aXZlLgorICAgIENoZWNrSGVhZGVyRmFpbHMo
IkFjQ2VQdC1DaEFyU2VUIik7CisgICAgQ2hlY2tIZWFkZXJGYWlscygiUHJvWHktRm9PIik7CisK
KyAgICAvLyBDaGVjayBpbnZhbGlkIGhlYWRlciB2YWx1ZXMuCisgICAgQ2hlY2tIZWFkZXJGYWls
cygiZm9vIiwgImJhclx4MGRceDBheC1jc3JmLXRva2VuOlx4MjB0ZXN0MTIzNCIpOworfQorCiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>