<?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>38844</bug_id>
          
          <creation_ts>2010-05-10 07:02:50 -0700</creation_ts>
          <short_desc>[GTK] Add support for DOM events in the GObject DOM bindings</short_desc>
          <delta_ts>2010-05-26 03:54:30 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>38576</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>tevaum</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>223296</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-10 07:02:50 -0700</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223308</commentid>
    <comment_count>1</comment_count>
      <attachid>55553</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-10 07:48:06 -0700</bug_when>
    <thetext>Created attachment 55553
events.diff

First patch, expose the DOM events as GObject signals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223313</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-10 07:52:06 -0700</bug_when>
    <thetext>Attachment 55553 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:764:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:766:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:767:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/gobject/GObjectEventListener.cpp:39:  One line control clauses should not use braces.  [whitespace/braces] [4]
WebCore/bindings/gobject/GObjectEventListener.h:25:  Alphabetical sorting problem.  [build/include_order] [4]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:124:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:126:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:127:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:171:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:173:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:174:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 11 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223855</commentid>
    <comment_count>3</comment_count>
      <attachid>55687</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-11 03:44:16 -0700</bug_when>
    <thetext>Created attachment 55687
domevents.diff

This fixes the style issues that are possible to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223856</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-11 03:47:49 -0700</bug_when>
    <thetext>Attachment 55687 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:766:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestInterface.cpp:126:  Use 0 instead of NULL.  [readability/null] [5]
WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:173:  Use 0 instead of NULL.  [readability/null] [5]
Total errors found: 3 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223874</commentid>
    <comment_count>5</comment_count>
      <attachid>55690</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-11 05:31:53 -0700</bug_when>
    <thetext>Created attachment 55690
signalnames.diff

GObject-ify signal names for DOM events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223899</commentid>
    <comment_count>6</comment_count>
      <attachid>55698</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-11 06:43:48 -0700</bug_when>
    <thetext>Created attachment 55698
testsignals.diff

Add the infrastructure to test the DOM event signals and test the one signal in DOMWindow which does not require interactivity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230263</commentid>
    <comment_count>7</comment_count>
      <attachid>57017</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-25 07:44:35 -0700</bug_when>
    <thetext>Created attachment 57017
eventobject.diff

This patch creates a WebKitDOMEvent class to go with every event signal, and the WebKitDOMEventTarget interface to be implemented by all classes that can be the target of an event. Still no support for the event subclasses in the DOM spec, or for userCapture events, those will come in future patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230575</commentid>
    <comment_count>8</comment_count>
      <attachid>55687</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-25 21:38:23 -0700</bug_when>
    <thetext>Comment on attachment 55687
domevents.diff

WebCore/bindings/gobject/GObjectEventListener.h:31
 +          static PassRefPtr&lt;GObjectEventListener&gt; create(GObject* object, const char* signalName) { return adoptRef(new GObjectEventListener(object, signalName)); }
Indentation looks weird here.

WebCore/bindings/gobject/GObjectEventListener.h:49
 +      virtual void handleEvent(ScriptExecutionContext*, Event*); /*  */
What&apos;s the /*  */ for? =)

WebCore/bindings/scripts/test/GObject/WebKitDOMTestCallback.cpp:184
 +  
One too many empty lines here, for my taste.

A good first step IMO. And good improvement on style conformance, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230576</commentid>
    <comment_count>9</comment_count>
      <attachid>55690</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-25 21:41:53 -0700</bug_when>
    <thetext>Comment on attachment 55690
signalnames.diff

WebCore/bindings/scripts/CodeGeneratorGObject.pm:494
 +      my ${listenerName} =  $domSignalName . &quot;Listener&quot;;
there&apos;s an additional space that seems unnecessary here

Clever idea, the breakWords one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230577</commentid>
    <comment_count>10</comment_count>
      <attachid>55698</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-25 21:48:20 -0700</bug_when>
    <thetext>Comment on attachment 55698
testsignals.diff

 56     g_idle_add((GSourceFunc)finish_loading, fixture);
 57     g_main_loop_run(fixture-&gt;loop);

Why are you doing this here? I would expect the string to be loaded synchronously, as it is now. Also, I think this test is lacking an assertion that fixture-&gt;counter has been incremented at all. I don&apos;t think this test is really testing what it&apos;s supposed to test, so I&apos;ll r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230578</commentid>
    <comment_count>11</comment_count>
      <attachid>57017</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-05-25 21:56:13 -0700</bug_when>
    <thetext>Comment on attachment 57017
eventobject.diff

Looks good to me. And this is more like it, test-wise. I recommend bringing the creation of the test to this patch, with the changes this one contains already in place, instead of cooking up a separate patch for the test. r=me with this change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230652</commentid>
    <comment_count>12</comment_count>
      <attachid>55687</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 03:52:50 -0700</bug_when>
    <thetext>Comment on attachment 55687
domevents.diff

Pushed with the suggested changes in r60225.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230653</commentid>
    <comment_count>13</comment_count>
      <attachid>55690</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 03:53:19 -0700</bug_when>
    <thetext>Comment on attachment 55690
signalnames.diff

Pushed with the suggested change in r60226.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230654</commentid>
    <comment_count>14</comment_count>
      <attachid>55698</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 03:53:41 -0700</bug_when>
    <thetext>Comment on attachment 55698
testsignals.diff

This is an ex-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230655</commentid>
    <comment_count>15</comment_count>
      <attachid>57017</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 03:54:10 -0700</bug_when>
    <thetext>Comment on attachment 57017
eventobject.diff

Pushed together with previous patch as r60229.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230656</commentid>
    <comment_count>16</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-05-26 03:54:30 -0700</bug_when>
    <thetext>All patches committed, closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55553</attachid>
            <date>2010-05-10 07:48:06 -0700</date>
            <delta_ts>2010-05-11 03:44:16 -0700</delta_ts>
            <desc>events.diff</desc>
            <filename>events.diff</filename>
            <type>text/plain</type>
            <size>21502</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiN2Y1ZjNhMjk2NzJmYmJmNDg4MDE2Y2NmZWNjMmQ3MzY1ZTU1ODhkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDEwIE1heSAyMDEwIDE2OjE0OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNS0x
MCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50cyBp
biB0aGUgR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKCiAgICAgICAgRmlyc3Qgc3RlcCB0b3dhcmRzIERPTSBl
dmVudHMgc3VwcG9ydC4gV2UgY3JlYXRlIG9uZSBzaWduYWwgcGVyCiAgICAgICAgZXZlbnQgc3Vw
cG9ydGVkIGluIHRoZSBET00gY2xhc3NlcywgYW5kIGNyZWF0ZSBhIGN1c3RvbQogICAgICAgIEdP
YmplY3RFdmVudExpc3RlbmVyIHRoYXQgd2lsbCBlbWl0IGEgR09iamVjdCBzaWduYWwgd2hlbiBh
biBldmVudAogICAgICAgIGlzIGRpc3BhdGNoZWQgdG8gdGhlIG9iamVjdC4gVGhlcmUgaXMgbm8g
ZXZlbnQgb2JqZWN0IGF0IHRoZQogICAgICAgIG1vbWVudCAod2UganVzdCBwYXNzIE5VTEwpLCBh
bmQgbm8gc3VwcG9ydCBmb3IgaG9va2luZyBpbnRvIHRoZQogICAgICAgIGNhcHR1cmUgcGhhc2Uu
CgogICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RFdmVudExpc3RlbmVyLmNwcDogQWRkZWQuCiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVu
dExpc3RlbmVyOjpvcGVyYXRvcj09KToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVj
dEV2ZW50TGlzdGVuZXIuaDogQWRkZWQuCiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExp
c3RlbmVyOjpjcmVhdGUpOgogICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCk6CiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpHT2JqZWN0RXZl
bnRMaXN0ZW5lcik6CiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtOgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcDoKICAgICAgICAoV2ViS2l0Ojpjb3JlKToKICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX2ZpbmFsaXplKToKICAgICAgICAod2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NsYXNzX2luaXQpOgogICAgICAgIChXZWJLaXQ6OndyYXBUZXN0Q2FsbGJhY2spOgog
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVy
ZmFjZS5jcHA6CiAgICAgICAgKFdlYktpdDo6Y29yZSk6CiAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2VfZmluYWxpemUpOgogICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2NsYXNzX2luaXQpOgogICAgICAgIChXZWJLaXQ6OndyYXBUZXN0SW50ZXJmYWNlKToKICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgog
ICAgICAgIChXZWJLaXQ6OmNvcmUpOgogICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2ZpbmFs
aXplKToKICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKICAgICAgICAo
V2ViS2l0Ojp3cmFwVGVzdE9iaik6CiAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOgogICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyOjopOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrKysrKysKIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBXZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwICB8ICAgNDQgKysr
KysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmgg
ICAgfCAgIDU2ICsrKysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JHT2JqZWN0LnBtICAgfCAgIDkwICsrKysrKysrKysrKysrLS0tLS0tCiAuLi4vc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCB8ICAgNDMgKysrKystLS0t
LQogLi4uL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcCAgICAgICAgfCAg
IDQzICsrKysrLS0tLS0KIC4uLi9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmNwcCAgICAgIHwgICA0MyArKysrKy0tLS0tCiBXZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIDkgZmlsZXMgY2hhbmdlZCwgMjc0IGlu
c2VydGlvbnMoKyksIDkxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUv
YmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaAoKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRi
NzdiYS4uNWJmNGY0NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNS0xMCAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIERPTSBldmVudHMgaW4gdGhlIEdPYmplY3Qg
RE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODg0NAorCisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyBET00gZXZlbnRzIHN1cHBv
cnQuIFdlIGNyZWF0ZSBvbmUgc2lnbmFsIHBlcgorICAgICAgICBldmVudCBzdXBwb3J0ZWQgaW4g
dGhlIERPTSBjbGFzc2VzLCBhbmQgY3JlYXRlIGEgY3VzdG9tCisgICAgICAgIEdPYmplY3RFdmVu
dExpc3RlbmVyIHRoYXQgd2lsbCBlbWl0IGEgR09iamVjdCBzaWduYWwgd2hlbiBhbiBldmVudAor
ICAgICAgICBpcyBkaXNwYXRjaGVkIHRvIHRoZSBvYmplY3QuIFRoZXJlIGlzIG5vIGV2ZW50IG9i
amVjdCBhdCB0aGUKKyAgICAgICAgbW9tZW50ICh3ZSBqdXN0IHBhc3MgTlVMTCksIGFuZCBubyBz
dXBwb3J0IGZvciBob29raW5nIGludG8gdGhlCisgICAgICAgIGNhcHR1cmUgcGhhc2UuCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dPYmpl
Y3RFdmVudExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZl
bnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R09iamVjdEV2ZW50
TGlzdGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVj
dEV2ZW50TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRM
aXN0ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVy
OjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpHT2JqZWN0
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
R09iamVjdC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAg
KHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3RfY2FsbGJhY2tfY2xhc3NfaW5pdCk6CisgICAgICAgIChXZWJLaXQ6OndyYXBUZXN0Q2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90
ZXN0X2ludGVyZmFjZV9jbGFzc19pbml0KToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RJbnRl
cmZhY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RPYmouY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdlYmtpdF9k
b21fdGVzdF9vYmpfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFz
c19pbml0KToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RPYmopOgorICAgICAgICAqIGRvbS9F
dmVudExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyOjopOgorCiAy
MDEwLTA1LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBOb3QgcmV2aWV3ZWQ6IHJvbGxiYWNrIHRoZSBjb21taXQgcjU5MDYyCmRpZmYgLS1naXQg
YS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBl
YTdhMDFiLi4zNTE0ZTdlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMxNyw2ICszMTcsOCBAQCBJRExfQklORElOR1Mg
Kz0gXAogd2ViY29yZWd0a19kb21fc291cmNlcyA9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvQ29udmVydFRvVVRGOFN0cmluZy5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9D
b252ZXJ0VG9VVEY4U3RyaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0
RXZlbnRMaXN0ZW5lci5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGlu
Zy5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5
LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50
TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3Rl
bmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2YwMmI0Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3Rl
bmVyLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2Fs
aWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkdPYmplY3RFdmVudExpc3RlbmVyLmgiCisKKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIEdPYmplY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgRXZlbnQqIGV2ZW50KQoreworICAgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV9vYmplY3QsIG1fc2lnbmFsTmFtZS51dGY4KCku
ZGF0YSgpLCAwLCAmaGFuZGxlZCk7Cit9CisKK2Jvb2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCit7CisgICAgaWYgKGNvbnN0
IEdPYmplY3RFdmVudExpc3RlbmVyKiBnb2JqZWN0RXZlbnRMaXN0ZW5lciA9IEdPYmplY3RFdmVu
dExpc3RlbmVyOjpjYXN0KCZsaXN0ZW5lcikpIHsKKyAgICAgICAgcmV0dXJuIG1fc2lnbmFsTmFt
ZSA9PSBnb2JqZWN0RXZlbnRMaXN0ZW5lci0+bV9zaWduYWxOYW1lICYmIG1fb2JqZWN0ID09IGdv
YmplY3RFdmVudExpc3RlbmVyLT5tX29iamVjdDsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3Rl
bmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZiZjg3MQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5l
ci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIEdPYmplY3RFdmVu
dExpc3RlbmVyX2gKKyNkZWZpbmUgR09iamVjdEV2ZW50TGlzdGVuZXJfaAorCisjaW5jbHVkZSAi
RXZlbnRMaXN0ZW5lci5oIgorCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGdsaWItb2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgR09iamVjdEV2ZW50TGlzdGVuZXIgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7Citw
dWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdPYmplY3RFdmVudExpc3RlbmVyPiBj
cmVhdGUoR09iamVjdCogb2JqZWN0LCBjb25zdCBjaGFyKiBzaWduYWxOYW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgR09iamVjdEV2ZW50TGlzdGVuZXIob2JqZWN0LCBzaWduYWxOYW1lKSk7IH0K
KyAgICBzdGF0aWMgY29uc3QgR09iamVjdEV2ZW50TGlzdGVuZXIqIGNhc3QoY29uc3QgRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIpCisgICAgeworICAgICAgICByZXR1cm4gbGlzdGVuZXItPnR5cGUo
KSA9PSBHT2JqZWN0RXZlbnRMaXN0ZW5lclR5cGUKKyAgICAgICAgICAgID8gc3RhdGljX2Nhc3Q8
Y29uc3QgR09iamVjdEV2ZW50TGlzdGVuZXIqPihsaXN0ZW5lcikKKyAgICAgICAgICAgIDogMDsK
KyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVy
JiBvdGhlcik7CisKK3ByaXZhdGU6CisgICAgR09iamVjdEV2ZW50TGlzdGVuZXIoR09iamVjdCog
b2JqZWN0LCBjb25zdCBjaGFyKiBzaWduYWxOYW1lKQorICAgICAgICA6IEV2ZW50TGlzdGVuZXIo
R09iamVjdEV2ZW50TGlzdGVuZXJUeXBlKQorICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKKyAg
ICAgICAgLCBtX3NpZ25hbE5hbWUoc2lnbmFsTmFtZSkKKyAgICB7CisgICAgfQorCisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwor
CisgICAgR09iamVjdCogbV9vYmplY3Q7CisgICAgU3RyaW5nIG1fc2lnbmFsTmFtZTsKK307Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmluZGV4IDFkMDNmMDguLmQwM2Q2ZTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5w
bQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0K
QEAgLTI2LDYgKzI2LDkgQEAgcGFja2FnZSBDb2RlR2VuZXJhdG9yR09iamVjdDsKIG15ICVpbXBs
SW5jbHVkZXMgPSAoKTsKIG15ICVoZHJJbmNsdWRlcyA9ICgpOwogCitteSBAdHh0RXZlbnRMaXN0
ZW5lcnMgPSAoKTsKK215IEB0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcnMgPSAoKTsKK215IEB0eHRJ
bnN0YWxsU2lnbmFscyA9ICgpOwogbXkgQHR4dEluc3RhbGxQcm9wcyA9ICgpOwogbXkgQHR4dFNl
dFByb3BzID0gKCk7CiBteSBAdHh0R2V0UHJvcHMgPSAoKTsKQEAgLTE1MywxMCArMTU2LDYgQEAg
c3ViIFNraXBBdHRyaWJ1dGUgewogICAgIH0KICAgICAKICAgICBteSAkcHJvcFR5cGUgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgaWYgKCRwcm9wVHlwZSBlcSAiRXZlbnRMaXN0
ZW5lciIpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotCiAgICAgaWYgKCRwcm9wVHlwZSA9
fiAvQ29uc3RydWN0b3IkLykgewogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC00NDYsNiAr
NDQ1LDM4IEBAIEVPRgogICAgIHB1c2goQHR4dEluc3RhbGxQcm9wcywgJHR4dEluc3RhbGxQcm9w
KTsKIH0KIAorc3ViIEdlbmVyYXRlRXZlbnRMaXN0ZW5lciB7CisgICAgbXkgJGF0dHJpYnV0ZSA9
IHNoaWZ0OworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkaW50ZXJmYWNlTmFtZSA9
IHNoaWZ0OworCisgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7Cisg
ICAgbXkgJHNpZ25hbE5hbWUgPSBzdWJzdHIoJG5hbWUsIDIpOworCisgICAgbXkgJHR4dEluc3Rh
bGxTaWduYWwgPSA8PCAiRU9GIjsKKyAgICBnX3NpZ25hbF9uZXcoIiR7c2lnbmFsTmFtZX0iLAor
ICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhnb2JqZWN0Q2xhc3MpLAorICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9oYW5kbGVkLCBOVUxMLAorICAg
ICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19PQkpFQ1QsCisgICAgICAgICAg
ICAgICAgIEdfVFlQRV9CT09MRUFOLCAxLAorICAgICAgICAgICAgICAgICBHX1RZUEVfUE9JTlRF
UiB8IEdfU0lHTkFMX1RZUEVfU1RBVElDX1NDT1BFKTsKKworRU9GCisgICAgcHVzaChAdHh0SW5z
dGFsbFNpZ25hbHMsICR0eHRJbnN0YWxsU2lnbmFsKTsKKworICAgIG15ICR7bGlzdGVuZXJOYW1l
fSA9ICRzaWduYWxOYW1lIC4gIkxpc3RlbmVyIjsKKworICAgIG15ICR0eHRJbnN0YWxsRXZlbnRM
aXN0ZW5lciA9IDw8ICJFT0YiOworICAgIFJlZlB0cjxXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcj4gJHtsaXN0ZW5lck5hbWV9ID0gV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PEdPYmplY3QqPih3cmFwcGVyKSwgIiR7c2lnbmFsTmFtZX0i
KTsKKyAgICBjb3JlT2JqZWN0LT5hZGRFdmVudExpc3RlbmVyKCIke3NpZ25hbE5hbWV9IiwgJHts
aXN0ZW5lck5hbWV9LCBmYWxzZSk7CitFT0YKKyAgICBwdXNoKEB0eHRJbnN0YWxsRXZlbnRMaXN0
ZW5lcnMsICR0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcik7CisKKyAgICAkaW1wbEluY2x1ZGVzeyJH
T2JqZWN0RXZlbnRMaXN0ZW5lci5oIn0gPSAxOworfQorCiBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVz
IHsKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU5hbWUsICRkYXRhTm9kZSkgPSBAXzsKIApA
QCAtNTA2LDcgKzUzNywxMSBAQCBFT0YKICAgICBwdXNoKEB0eHRTZXRQcm9wcywgJHR4dFNldFBy
b3BzKTsKIAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHJlYWRhYmxlUHJvcGVydGllcykg
ewotICAgICAgICBHZW5lcmF0ZVByb3BlcnR5KCRhdHRyaWJ1dGUsICRpbnRlcmZhY2VOYW1lLCBc
QHdyaXRlYWJsZVByb3BlcnRpZXMpOworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlIGVxICJFdmVudExpc3RlbmVyIikgeworICAgICAgICAgICAgR2VuZXJhdGVFdmVudExp
c3RlbmVyKCRhdHRyaWJ1dGUsICRvYmplY3QsICRpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIEdlbmVyYXRlUHJvcGVydHkoJGF0dHJpYnV0ZSwgJGludGVyZmFj
ZU5hbWUsIFxAd3JpdGVhYmxlUHJvcGVydGllcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBw
dXNoKEBjQm9keVByaXYsICJ9O1xuXG4iKTsKQEAgLTUyOSwxMCArNTY0LDYgQEAgRU9GCiBFT0YK
ICAgICBwdXNoKEB0eHRTZXRQcm9wcywgJHR4dFNldFByb3BzKTsKIAotICAgICMgVE9ETzogd29y
ayBvdXQgaWYgaXQncyBhcHByb3ByaWF0ZSB0byBzcGxpdCB0aGlzIGludG8gbWFueSBkaWZmZXJl
bnQKLSAgICAjIHNpZ25hbHMgZS5nLiAiY2xpY2siIGV0Yy4KLSAgICBteSAkdHh0SW5zdGFsbFNp
Z25hbHMgPSAiIjsKLQogICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOwogCiBzdGF0aWMgdm9p
ZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZmluYWxpemUoR09iamVjdCogb2JqZWN0KQpAQCAtNTYz
LDggKzU5NCw3IEBAIHN0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9jbGFzc19pbml0
KCR7Y2xhc3NOYW1lfUNsYXNzKiByZXF1ZXN0Q2xhc3MpCiAgICAgZ29iamVjdENsYXNzLT5nZXRf
cHJvcGVydHkgPSAke2xvd2VyQ2FzZUlmYWNlTmFtZX1fZ2V0X3Byb3BlcnR5OwogCiBAdHh0SW5z
dGFsbFByb3BzCi0KLSR0eHRJbnN0YWxsU2lnbmFscworQHR4dEluc3RhbGxTaWduYWxzCiB9CiAK
IHN0YXRpYyB2b2lkICR7bG93ZXJDYXNlSWZhY2VOYW1lfV9pbml0KCR7Y2xhc3NOYW1lfSogcmVx
dWVzdCkKQEAgLTkyNCw3ICs5NTQsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbnMgewogCiAgICAg
VE9QOgogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9
KSB7Ci0gICAgICAgIGlmIChTa2lwQXR0cmlidXRlKCRhdHRyaWJ1dGUpKSB7CisgICAgICAgIGlm
IChTa2lwQXR0cmlidXRlKCRhdHRyaWJ1dGUpIHx8ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKICAgICAgICAgICAgIG5leHQgVE9QOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtOTkyLDYgKzEwMjIsMjUgQEAgR19ERUZJTkVfVFlQRSgke2NsYXNzTmFt
ZX0sICR7bG93ZXJDYXNlSWZhY2VOYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0pCiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCitXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3JlKCR7Y2xhc3NOYW1l
fSogcmVxdWVzdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0ICE9IDAsIDAp
OworCisgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0
KS0+Y29yZU9iamVjdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAw
LCAwKTsKKworICAgIHJldHVybiBjb3JlT2JqZWN0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKK0VPRgorCisgICAgcHVzaChAY0JvZHlQcml2LCAkaW1wbENvbnRlbnQpOworICAgICRvYmpl
Y3QtPkdlbmVyYXRlUHJvcGVydGllcygkaW50ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKTsKKyAgICAk
b2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9ucygkaW50ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKTsKKwor
ICAgIG15ICR3cmFwTWV0aG9kID0gPDwgIkVPRiI7CituYW1lc3BhY2UgV2ViS2l0IHsKICR7Y2xh
c3NOYW1lfSogd3JhcCR7aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSog
Y29yZU9iamVjdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0ICE9IDAs
IDApOwpAQCAtMTAwNiwyNiArMTA1NSwxMyBAQCAke2NsYXNzTmFtZX0qIHdyYXAke2ludGVyZmFj
ZU5hbWV9KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QpCiAKICAgICBjb3Jl
T2JqZWN0LT5yZWYoKTsKICAgICBXRUJLSVRfRE9NX09CSkVDVCh3cmFwcGVyKS0+Y29yZU9iamVj
dCA9IGNvcmVPYmplY3Q7CitAdHh0SW5zdGFsbEV2ZW50TGlzdGVuZXJzCiAKICAgICByZXR1cm4g
d3JhcHBlcjsKIH0KLQotV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZSgke2NsYXNzTmFt
ZX0qIHJlcXVlc3QpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCAhPSAwLCAw
KTsKLSAgICAKLSAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3JlT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KFdFQktJVF9ET01fT0JKRUNUKHJl
cXVlc3QpLT5jb3JlT2JqZWN0KTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0
ICE9IDAsIDApOwotICAgIAotICAgIHJldHVybiBjb3JlT2JqZWN0OwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIEVPRgotCi0gICAgcHVzaChAY0JvZHlQcml2LCAkaW1wbENvbnRlbnQpOwot
ICAgICRvYmplY3QtPkdlbmVyYXRlUHJvcGVydGllcygkaW50ZXJmYWNlTmFtZSwgJGRhdGFOb2Rl
KTsKLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUZ1bmN0aW9ucygkaW50ZXJmYWNlTmFtZSwgJGRhdGFO
b2RlKTsKKyAgICBwdXNoKEBjQm9keVByaXYsICR3cmFwTWV0aG9kKTsKIH0KIAogc3ViIEdlbmVy
YXRlRW5kSGVhZGVyIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxiYWNrLmNwcAppbmRleCA2Y2ZlYzc0
Li4yZWIzMzQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCkBAIC05OCwzMSArOTgs
MTMgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0Q2FsbGJhY2ssIHdlYmtpdF9kb21fdGVz
dF9jYWxsYmFjaywgV0VCS0lUX1RZUEVfRE9NX08KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdl
YktpdERPTVRlc3RDYWxsYmFjayogd3JhcFRlc3RDYWxsYmFjayhXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqIGNvcmVPYmplY3QpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAh
PSAwLCAwKTsKLSAgICAKLSAgICBXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHdyYXBwZXIgPSBXRUJL
SVRfRE9NX1RFU1RfQ0FMTEJBQ0soZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NB
TExCQUNLLCBOVUxMKSk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAwLCAw
KTsKLQotICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQg
cG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAotICAgICAqIGluIGEg
Qy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBm
b3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KLSAgICAgKi8KLQotICAgIGNvcmVPYmpl
Y3QtPnJlZigpOwotICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0g
Y29yZU9iamVjdDsKLQotICAgIHJldHVybiB3cmFwcGVyOwotfQotCiBXZWJDb3JlOjpUZXN0Q2Fs
bGJhY2sqIGNvcmUoV2ViS2l0RE9NVGVzdENhbGxiYWNrKiByZXF1ZXN0KQogewogICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QgIT0gMCwgMCk7Ci0gICAgCisKICAgICBXZWJDb3JlOjpU
ZXN0Q2FsbGJhY2sqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJh
Y2sqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CiAgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAKKwogICAgIHJldHVybiBj
b3JlT2JqZWN0OwogfQogCkBAIC0xNzcsMTAgKzE1OSwyOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3RfY2FsbGJhY2tfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0Q2FsbGJhY2tDbGFzcyog
cmVxdQogCiAKIAotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFja19p
bml0KFdlYktpdERPTVRlc3RDYWxsYmFjayogcmVxdWVzdCkKIHsKIH0KIAorbmFtZXNwYWNlIFdl
YktpdCB7CitXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHdyYXBUZXN0Q2FsbGJhY2soV2ViQ29yZTo6
VGVzdENhbGxiYWNrKiBjb3JlT2JqZWN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNv
cmVPYmplY3QgIT0gMCwgMCk7CisgICAgCisgICAgV2ViS2l0RE9NVGVzdENhbGxiYWNrKiB3cmFw
cGVyID0gV0VCS0lUX0RPTV9URVNUX0NBTExCQUNLKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9E
T01fVEVTVF9DQUxMQkFDSywgTlVMTCkpOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHdyYXBw
ZXIgIT0gMCwgMCk7CisKKyAgICAvKiBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEg
QysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAg
ICAgKiBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3RydWN0dXJlLiAgU2VlIHRoZSBmaW5hbGl6
ZSgpIGNvZGUgZm9yIHRoZQorICAgICAqIG1hdGNoaW5nIGRlcmVmKCkuCisgICAgICovCisKKyAg
ICBjb3JlT2JqZWN0LT5yZWYoKTsKKyAgICBXRUJLSVRfRE9NX09CSkVDVCh3cmFwcGVyKS0+Y29y
ZU9iamVjdCA9IGNvcmVPYmplY3Q7CisKKworICAgIHJldHVybiB3cmFwcGVyOworfQorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCAyYmUw
Mjc3Li5hYTM3MzVkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTUxLDMx
ICs1MSwxMyBAQCBHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RJbnRlcmZhY2UsIHdlYmtpdF9k
b21fdGVzdF9pbnRlcmZhY2UsIFdFQktJVF9UWVBFX0RPTQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotV2ViS2l0RE9NVGVzdEludGVyZmFjZSogd3JhcFRlc3RJbnRlcmZhY2UoV2ViQ29yZTo6VGVz
dEludGVyZmFjZSogY29yZU9iamVjdCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3Jl
T2JqZWN0ICE9IDAsIDApOwotICAgIAotICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHdyYXBw
ZXIgPSBXRUJLSVRfRE9NX1RFU1RfSU5URVJGQUNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9E
T01fVEVTVF9JTlRFUkZBQ0UsIE5VTEwpKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3cmFw
cGVyICE9IDAsIDApOwotCi0gICAgLyogV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBh
IEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0g
ICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxp
emUoKSBjb2RlIGZvciB0aGUKLSAgICAgKiBtYXRjaGluZyBkZXJlZigpLgotICAgICAqLwotCi0g
ICAgY29yZU9iamVjdC0+cmVmKCk7Ci0gICAgV0VCS0lUX0RPTV9PQkpFQ1Qod3JhcHBlciktPmNv
cmVPYmplY3QgPSBjb3JlT2JqZWN0OwotCi0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KIFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVzdCkK
IHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0ICE9IDAsIDApOwotICAgIAorCiAg
ICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlRlc3RJbnRlcmZhY2UqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVj
dCk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAK
KwogICAgIHJldHVybiBjb3JlT2JqZWN0OwogfQogCkBAIC0xMzAsMTAgKzExMiwyOSBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNlX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVz
dEludGVyZmFjZUNsYXNzKiByZQogCiAKIAotCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9pbnRlcmZhY2VfaW5pdChXZWJLaXRET01UZXN0SW50ZXJmYWNlKiByZXF1ZXN0KQogewog
fQogCituYW1lc3BhY2UgV2ViS2l0IHsKK1dlYktpdERPTVRlc3RJbnRlcmZhY2UqIHdyYXBUZXN0
SW50ZXJmYWNlKFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVPYmplY3QpCit7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKKyAgICAKKyAgICBXZWJLaXRE
T01UZXN0SW50ZXJmYWNlKiB3cmFwcGVyID0gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFDRShnX29i
amVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFLCBOVUxMKSk7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAwLCAwKTsKKworICAgIC8qIFdlIGNhbGwgcmVm
KCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0
IHN0b3JlIGEgQysrIG9iamVjdAorICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1
Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCisgICAgICogbWF0Y2hpbmcg
ZGVyZWYoKS4KKyAgICAgKi8KKworICAgIGNvcmVPYmplY3QtPnJlZigpOworICAgIFdFQktJVF9E
T01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0gY29yZU9iamVjdDsKKworCisgICAgcmV0
dXJuIHdyYXBwZXI7Cit9Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
CmluZGV4IDhjMWJhZTIuLjYxNmI0NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtNDg0LDMx
ICs0ODQsMTMgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRET01UZXN0T2JqLCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
V2ViS2l0RE9NVGVzdE9iaiogd3JhcFRlc3RPYmooV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVj
dCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0ICE9IDAsIDApOwotICAg
IAotICAgIFdlYktpdERPTVRlc3RPYmoqIHdyYXBwZXIgPSBXRUJLSVRfRE9NX1RFU1RfT0JKKGdf
b2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIE5VTEwpKTsKLSAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCh3cmFwcGVyICE9IDAsIDApOwotCi0gICAgLyogV2UgY2FsbCByZWYoKSBy
YXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFydCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3Rv
cmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4gYSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVy
ZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUKLSAgICAgKiBtYXRjaGluZyBkZXJl
ZigpLgotICAgICAqLwotCi0gICAgY29yZU9iamVjdC0+cmVmKCk7Ci0gICAgV0VCS0lUX0RPTV9P
QkpFQ1Qod3JhcHBlciktPmNvcmVPYmplY3QgPSBjb3JlT2JqZWN0OwotCi0gICAgcmV0dXJuIHdy
YXBwZXI7Ci19Ci0KIFdlYkNvcmU6OlRlc3RPYmoqIGNvcmUoV2ViS2l0RE9NVGVzdE9iaiogcmVx
dWVzdCkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0ICE9IDAsIDApOwotICAg
IAorCiAgICAgV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OlRlc3RPYmoqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAKKwogICAg
IHJldHVybiBjb3JlT2JqZWN0OwogfQogCkBAIC03NzAsMTAgKzc1MiwyOSBAQCBHX01BWExPTkcs
IC8qIG1heCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKIAogCi0KIH0KIAogc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktpdERPTVRlc3RPYmoqIHJlcXVlc3Qp
CiB7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdE9iaiogd3JhcFRlc3RP
YmooV2ViQ29yZTo6VGVzdE9iaiogY29yZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChjb3JlT2JqZWN0ICE9IDAsIDApOworICAgIAorICAgIFdlYktpdERPTVRlc3RPYmoqIHdy
YXBwZXIgPSBXRUJLSVRfRE9NX1RFU1RfT0JKKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01f
VEVTVF9PQkosIE5VTEwpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3cmFwcGVyICE9IDAs
IDApOworCisgICAgLyogV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFy
dCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0CisgICAgICogaW4g
YSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2Rl
IGZvciB0aGUKKyAgICAgKiBtYXRjaGluZyBkZXJlZigpLgorICAgICAqLworCisgICAgY29yZU9i
amVjdC0+cmVmKCk7CisgICAgV0VCS0lUX0RPTV9PQkpFQ1Qod3JhcHBlciktPmNvcmVPYmplY3Qg
PSBjb3JlT2JqZWN0OworCisKKyAgICByZXR1cm4gd3JhcHBlcjsKK30KK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oIGIvV2ViQ29y
ZS9kb20vRXZlbnRMaXN0ZW5lci5oCmluZGV4IGQ3Yzk1MGYuLjNlY2ZhZTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAorKysgYi9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyLmgKQEAgLTQxLDcgKzQxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JET01BZ2VudFR5cGUsCiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgIE9iakNFdmVu
dExpc3RlbmVyVHlwZSwgCi0gICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbkV2ZW50TGlzdGVu
ZXJUeXBlIH07CisgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbkV2ZW50TGlzdGVuZXJUeXBl
LAorICAgICAgICAgICAgICAgICAgICBHT2JqZWN0RXZlbnRMaXN0ZW5lclR5cGUgfTsKICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgfkV2ZW50TGlzdGVuZXIoKSB7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYpID0gMDsK
LS0gCjEuNi42LjEKCg==
</data>
<flag name="commit-queue"
          id="39766"
          type_id="3"
          status="-"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55687</attachid>
            <date>2010-05-11 03:44:16 -0700</date>
            <delta_ts>2010-05-26 03:52:50 -0700</delta_ts>
            <desc>domevents.diff</desc>
            <filename>domevents.diff</filename>
            <type>text/plain</type>
            <size>24521</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA1Y2I5Y2JhZDI5Y2ExNDI3MWYxOThlODIxN2Q5OWYxOTUxY2IwYmZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBN
b24sIDEwIE1heSAyMDEwIDE2OjE0OjQ3ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNS0x
MCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50cyBp
biB0aGUgR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKCiAgICAgICAgRmlyc3Qgc3RlcCB0b3dhcmRzIERPTSBl
dmVudHMgc3VwcG9ydC4gV2UgY3JlYXRlIG9uZSBzaWduYWwgcGVyCiAgICAgICAgZXZlbnQgc3Vw
cG9ydGVkIGluIHRoZSBET00gY2xhc3NlcywgYW5kIGNyZWF0ZSBhIGN1c3RvbQogICAgICAgIEdP
YmplY3RFdmVudExpc3RlbmVyIHRoYXQgd2lsbCBlbWl0IGEgR09iamVjdCBzaWduYWwgd2hlbiBh
biBldmVudAogICAgICAgIGlzIGRpc3BhdGNoZWQgdG8gdGhlIG9iamVjdC4gVGhlcmUgaXMgbm8g
ZXZlbnQgb2JqZWN0IGF0IHRoZQogICAgICAgIG1vbWVudCAod2UganVzdCBwYXNzIE5VTEwpLCBh
bmQgbm8gc3VwcG9ydCBmb3IgaG9va2luZyBpbnRvIHRoZQogICAgICAgIGNhcHR1cmUgcGhhc2Uu
CgogICAgICAgICogR05VbWFrZWZpbGUuYW06CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dP
YmplY3RFdmVudExpc3RlbmVyLmNwcDogQWRkZWQuCiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVu
dExpc3RlbmVyOjpvcGVyYXRvcj09KToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVj
dEV2ZW50TGlzdGVuZXIuaDogQWRkZWQuCiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExp
c3RlbmVyOjpjcmVhdGUpOgogICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6
Y2FzdCk6CiAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpHT2JqZWN0RXZl
bnRMaXN0ZW5lcik6CiAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtOgogICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdENhbGxiYWNrLmNwcDoKICAgICAgICAoV2ViS2l0Ojpjb3JlKToKICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2NhbGxiYWNrX2ZpbmFsaXplKToKICAgICAgICAod2Via2l0X2RvbV90ZXN0X2Nh
bGxiYWNrX2NsYXNzX2luaXQpOgogICAgICAgIChXZWJLaXQ6OndyYXBUZXN0Q2FsbGJhY2spOgog
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEludGVy
ZmFjZS5jcHA6CiAgICAgICAgKFdlYktpdDo6Y29yZSk6CiAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9pbnRlcmZhY2VfZmluYWxpemUpOgogICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfaW50ZXJmYWNl
X2NsYXNzX2luaXQpOgogICAgICAgIChXZWJLaXQ6OndyYXBUZXN0SW50ZXJmYWNlKToKICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgog
ICAgICAgIChXZWJLaXQ6OmNvcmUpOgogICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2ZpbmFs
aXplKToKICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19pbml0KToKICAgICAgICAo
V2ViS2l0Ojp3cmFwVGVzdE9iaik6CiAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5oOgogICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyOjopOgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrKysrKwogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyICsKIFdlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAgIHwgICA0MyArKysr
KysrKysKIFdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oICAg
IHwgICA1NiArKysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JHT2JqZWN0LnBtICAgfCAgIDk4ICsrKysrKysrKysrKystLS0tLS0KIC4uLi9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwIHwgICA1MSArKysrKy0tLS0tCiAu
Li4vdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RJbnRlcmZhY2UuY3BwICAgICAgICB8ICAgNTEg
KysrKystLS0tLQogLi4uL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
ICAgICAgfCAgIDUxICsrKysrLS0tLS0KIFdlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogOSBmaWxlcyBjaGFuZ2VkLCAyODkgaW5zZXJ0
aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaAoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWZlNzAw
Ni4uNTkyYjcwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMC0wNS0xMCAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIERPTSBldmVudHMgaW4gdGhlIEdPYmplY3QgRE9N
IGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zODg0NAorCisgICAgICAgIEZpcnN0IHN0ZXAgdG93YXJkcyBET00gZXZlbnRzIHN1cHBvcnQu
IFdlIGNyZWF0ZSBvbmUgc2lnbmFsIHBlcgorICAgICAgICBldmVudCBzdXBwb3J0ZWQgaW4gdGhl
IERPTSBjbGFzc2VzLCBhbmQgY3JlYXRlIGEgY3VzdG9tCisgICAgICAgIEdPYmplY3RFdmVudExp
c3RlbmVyIHRoYXQgd2lsbCBlbWl0IGEgR09iamVjdCBzaWduYWwgd2hlbiBhbiBldmVudAorICAg
ICAgICBpcyBkaXNwYXRjaGVkIHRvIHRoZSBvYmplY3QuIFRoZXJlIGlzIG5vIGV2ZW50IG9iamVj
dCBhdCB0aGUKKyAgICAgICAgbW9tZW50ICh3ZSBqdXN0IHBhc3MgTlVMTCksIGFuZCBubyBzdXBw
b3J0IGZvciBob29raW5nIGludG8gdGhlCisgICAgICAgIGNhcHR1cmUgcGhhc2UuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RF
dmVudExpc3RlbmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R09iamVjdEV2ZW50TGlz
dGVuZXI6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2
ZW50TGlzdGVuZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpj
YXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpHT2JqZWN0RXZl
bnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09i
amVjdC5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9jYWxsYmFja19maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfY2FsbGJhY2tfY2xhc3NfaW5pdCk6CisgICAgICAgIChXZWJLaXQ6OndyYXBUZXN0Q2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdlYmtp
dF9kb21fdGVzdF9pbnRlcmZhY2VfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X2ludGVyZmFjZV9jbGFzc19pbml0KToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RJbnRlcmZh
Y2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb3JlKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vYmpfZmluYWxpemUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19p
bml0KToKKyAgICAgICAgKFdlYktpdDo6d3JhcFRlc3RPYmopOgorICAgICAgICAqIGRvbS9FdmVu
dExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyOjopOgorCiAyMDEw
LTA1LTEwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IEZpeCBhc3NlcnRpbmcgR1RLIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNzQ5OGJhYi4uNGM2YzE1ZSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCkBAIC0zMTcsNiArMzE3LDggQEAgSURMX0JJTkRJTkdTICs9IFwKIHdlYmNvcmVndGtfZG9t
X3NvdXJjZXMgPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0NvbnZlcnRUb1VURjhTdHJp
bmcuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvQ29udmVydFRvVVRGOFN0cmluZy5o
IFwKKwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwIFwK
KwlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyYmUxOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAy
MTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5oIgorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVu
dExpc3RlbmVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBHT2JqZWN0RXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVu
dCkKK3sKKyAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7CisgICAgZ19zaWduYWxfZW1pdF9i
eV9uYW1lKG1fb2JqZWN0LCBtX3NpZ25hbE5hbWUudXRmOCgpLmRhdGEoKSwgMCwgJmhhbmRsZWQp
OworfQorCitib29sIEdPYmplY3RFdmVudExpc3RlbmVyOjpvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyKQoreworICAgIGlmIChjb25zdCBHT2JqZWN0RXZlbnRMaXN0ZW5l
ciogZ29iamVjdEV2ZW50TGlzdGVuZXIgPSBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Y2FzdCgmbGlz
dGVuZXIpKQorICAgICAgICByZXR1cm4gbV9zaWduYWxOYW1lID09IGdvYmplY3RFdmVudExpc3Rl
bmVyLT5tX3NpZ25hbE5hbWUgJiYgbV9vYmplY3QgPT0gZ29iamVjdEV2ZW50TGlzdGVuZXItPm1f
b2JqZWN0OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmEzMGIxY2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICog
IENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg
R2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2lmbmRlZiBHT2JqZWN0RXZlbnRMaXN0ZW5lcl9oCisjZGVmaW5lIEdPYmplY3RF
dmVudExpc3RlbmVyX2gKKworI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKworI2luY2x1ZGUg
PGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEdPYmplY3RFdmVudExpc3RlbmVy
IDogcHVibGljIEV2ZW50TGlzdGVuZXIgeworcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEdPYmplY3QqIG9iamVjdCwgY29uc3Qg
Y2hhciogc2lnbmFsTmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdPYmplY3RFdmVudExpc3Rl
bmVyKG9iamVjdCwgc2lnbmFsTmFtZSkpOyB9CisgICAgc3RhdGljIGNvbnN0IEdPYmplY3RFdmVu
dExpc3RlbmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gR09iamVjdEV2ZW50TGlzdGVuZXJUeXBl
CisgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGNvbnN0IEdPYmplY3RFdmVudExpc3RlbmVyKj4o
bGlzdGVuZXIpCisgICAgICAgICAgICA6IDA7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIG9w
ZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgb3RoZXIpOworCitwcml2YXRlOgorICAgIEdP
YmplY3RFdmVudExpc3RlbmVyKEdPYmplY3QqIG9iamVjdCwgY29uc3QgY2hhciogc2lnbmFsTmFt
ZSkKKyAgICAgICAgOiBFdmVudExpc3RlbmVyKEdPYmplY3RFdmVudExpc3RlbmVyVHlwZSkKKyAg
ICAgICAgLCBtX29iamVjdChvYmplY3QpCisgICAgICAgICwgbV9zaWduYWxOYW1lKHNpZ25hbE5h
bWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsgLyogICovCisKKyAgICBHT2JqZWN0KiBtX29iamVj
dDsKKyAgICBTdHJpbmcgbV9zaWduYWxOYW1lOworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckdPYmplY3QucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckdP
YmplY3QucG0KaW5kZXggMWQwM2YwOC4uYWI4YTI4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQpAQCAtMjYsNiArMjYsOSBAQCBwYWNr
YWdlIENvZGVHZW5lcmF0b3JHT2JqZWN0OwogbXkgJWltcGxJbmNsdWRlcyA9ICgpOwogbXkgJWhk
ckluY2x1ZGVzID0gKCk7CiAKK215IEB0eHRFdmVudExpc3RlbmVycyA9ICgpOworbXkgQHR4dElu
c3RhbGxFdmVudExpc3RlbmVycyA9ICgpOworbXkgQHR4dEluc3RhbGxTaWduYWxzID0gKCk7CiBt
eSBAdHh0SW5zdGFsbFByb3BzID0gKCk7CiBteSBAdHh0U2V0UHJvcHMgPSAoKTsKIG15IEB0eHRH
ZXRQcm9wcyA9ICgpOwpAQCAtMTUzLDEwICsxNTYsNiBAQCBzdWIgU2tpcEF0dHJpYnV0ZSB7CiAg
ICAgfQogICAgIAogICAgIG15ICRwcm9wVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZTsKLSAgICBpZiAoJHByb3BUeXBlIGVxICJFdmVudExpc3RlbmVyIikgewotICAgICAgICByZXR1
cm4gMTsKLSAgICB9Ci0KICAgICBpZiAoJHByb3BUeXBlID1+IC9Db25zdHJ1Y3RvciQvKSB7CiAg
ICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTQ0Niw2ICs0NDUsMzggQEAgRU9GCiAgICAgcHVz
aChAdHh0SW5zdGFsbFByb3BzLCAkdHh0SW5zdGFsbFByb3ApOwogfQogCitzdWIgR2VuZXJhdGVF
dmVudExpc3RlbmVyIHsKKyAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CisgICAgbXkgJG9iamVj
dCA9IHNoaWZ0OworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CisKKyAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkc2lnbmFsTmFtZSA9IHN1
YnN0cigkbmFtZSwgMik7CisKKyAgICBteSAkdHh0SW5zdGFsbFNpZ25hbCA9IDw8ICJFT0YiOwor
ICAgIGdfc2lnbmFsX25ldygiJHtzaWduYWxOYW1lfSIsCisgICAgICAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKGdvYmplY3RDbGFzcyksCisgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JV
Tl9MQVNULAorICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCisgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEs
CisgICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNf
U0NPUEUpOworCitFT0YKKyAgICBwdXNoKEB0eHRJbnN0YWxsU2lnbmFscywgJHR4dEluc3RhbGxT
aWduYWwpOworCisgICAgbXkgJHtsaXN0ZW5lck5hbWV9ID0gJHNpZ25hbE5hbWUgLiAiTGlzdGVu
ZXIiOworCisgICAgbXkgJHR4dEluc3RhbGxFdmVudExpc3RlbmVyID0gPDwgIkVPRiI7CisgICAg
UmVmUHRyPFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyPiAke2xpc3RlbmVyTmFtZX0gPSBX
ZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8R09i
amVjdCo+KHdyYXBwZXIpLCAiJHtzaWduYWxOYW1lfSIpOworICAgIGNvcmVPYmplY3QtPmFkZEV2
ZW50TGlzdGVuZXIoIiR7c2lnbmFsTmFtZX0iLCAke2xpc3RlbmVyTmFtZX0sIGZhbHNlKTsKK0VP
RgorICAgIHB1c2goQHR4dEluc3RhbGxFdmVudExpc3RlbmVycywgJHR4dEluc3RhbGxFdmVudExp
c3RlbmVyKTsKKworICAgICRpbXBsSW5jbHVkZXN7IkdPYmplY3RFdmVudExpc3RlbmVyLmgifSA9
IDE7Cit9CisKIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXMgewogICAgIG15ICgkb2JqZWN0LCAkaW50
ZXJmYWNlTmFtZSwgJGRhdGFOb2RlKSA9IEBfOwogCkBAIC01MDYsNyArNTM3LDExIEBAIEVPRgog
ICAgIHB1c2goQHR4dFNldFByb3BzLCAkdHh0U2V0UHJvcHMpOwogCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAcmVhZGFibGVQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIEdlbmVyYXRlUHJvcGVy
dHkoJGF0dHJpYnV0ZSwgJGludGVyZmFjZU5hbWUsIFxAd3JpdGVhYmxlUHJvcGVydGllcyk7Cisg
ICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIi
KSB7CisgICAgICAgICAgICBHZW5lcmF0ZUV2ZW50TGlzdGVuZXIoJGF0dHJpYnV0ZSwgJG9iamVj
dCwgJGludGVyZmFjZU5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgR2VuZXJh
dGVQcm9wZXJ0eSgkYXR0cmlidXRlLCAkaW50ZXJmYWNlTmFtZSwgXEB3cml0ZWFibGVQcm9wZXJ0
aWVzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1c2goQGNCb2R5UHJpdiwgIn07XG5cbiIp
OwpAQCAtNTI5LDE3ICs1NjQsMTMgQEAgRU9GCiBFT0YKICAgICBwdXNoKEB0eHRTZXRQcm9wcywg
JHR4dFNldFByb3BzKTsKIAotICAgICMgVE9ETzogd29yayBvdXQgaWYgaXQncyBhcHByb3ByaWF0
ZSB0byBzcGxpdCB0aGlzIGludG8gbWFueSBkaWZmZXJlbnQKLSAgICAjIHNpZ25hbHMgZS5nLiAi
Y2xpY2siIGV0Yy4KLSAgICBteSAkdHh0SW5zdGFsbFNpZ25hbHMgPSAiIjsKLQogICAgICRpbXBs
Q29udGVudCA9IDw8ICJFT0YiOwogCiBzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1f
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdERPTU9iamVjdCogZG9tX29i
amVjdCA9IFdFQktJVF9ET01fT0JKRUNUKG9iamVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmpl
Y3QtPmNvcmVPYmplY3QgIT0gTlVMTCkgeworICAgIGlmIChkb21fb2JqZWN0LT5jb3JlT2JqZWN0
KSB7CiAgICAgICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmplY3QgPSBzdGF0
aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9ICo+KGRvbV9vYmplY3QtPmNvcmVPYmpl
Y3QpOwogCiAgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0
KTsKQEAgLTU2Myw4ICs1OTQsNyBAQCBzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1f
Y2xhc3NfaW5pdCgke2NsYXNzTmFtZX1DbGFzcyogcmVxdWVzdENsYXNzKQogICAgIGdvYmplY3RD
bGFzcy0+Z2V0X3Byb3BlcnR5ID0gJHtsb3dlckNhc2VJZmFjZU5hbWV9X2dldF9wcm9wZXJ0eTsK
IAogQHR4dEluc3RhbGxQcm9wcwotCi0kdHh0SW5zdGFsbFNpZ25hbHMKK0B0eHRJbnN0YWxsU2ln
bmFscwogfQogCiBzdGF0aWMgdm9pZCAke2xvd2VyQ2FzZUlmYWNlTmFtZX1faW5pdCgke2NsYXNz
TmFtZX0qIHJlcXVlc3QpCkBAIC05MjQsNyArOTU0LDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25z
IHsKIAogICAgIFRPUDoKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGRhdGFOb2RlLT5h
dHRyaWJ1dGVzfSkgewotICAgICAgICBpZiAoU2tpcEF0dHJpYnV0ZSgkYXR0cmlidXRlKSkgewor
ICAgICAgICBpZiAoU2tpcEF0dHJpYnV0ZSgkYXR0cmlidXRlKSB8fCAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPnR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CiAgICAgICAgICAgICBuZXh0IFRPUDsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTk5MiwxMiArMTAyMiwzMSBAQCBHX0RFRklORV9UWVBF
KCR7Y2xhc3NOYW1lfSwgJHtsb3dlckNhc2VJZmFjZU5hbWV9LCAke3BhcmVudEdPYmpUeXBlfSkK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK1dlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmUo
JHtjbGFzc05hbWV9KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVl
c3QsIDApOworCisgICAgV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCA9IHN0
YXRpY19jYXN0PFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qPihXRUJLSVRfRE9NX09CSkVDVChy
ZXF1ZXN0KS0+Y29yZU9iamVjdCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVj
dCwgMCk7CisKKyAgICByZXR1cm4gY29yZU9iamVjdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CitFT0YKKworICAgIHB1c2goQGNCb2R5UHJpdiwgJGltcGxDb250ZW50KTsKKyAgICAkb2Jq
ZWN0LT5HZW5lcmF0ZVByb3BlcnRpZXMoJGludGVyZmFjZU5hbWUsICRkYXRhTm9kZSk7CisgICAg
JG9iamVjdC0+R2VuZXJhdGVGdW5jdGlvbnMoJGludGVyZmFjZU5hbWUsICRkYXRhTm9kZSk7CisK
KyAgICBteSAkd3JhcE1ldGhvZCA9IDw8ICJFT0YiOworbmFtZXNwYWNlIFdlYktpdCB7CiAke2Ns
YXNzTmFtZX0qIHdyYXAke2ludGVyZmFjZU5hbWV9KFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0q
IGNvcmVPYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAw
LCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKICAgICAKICAg
ICAke2NsYXNzTmFtZX0qIHdyYXBwZXIgPSBXRUJLSVRfRE9NXyR7Y2xzQ2Fwc30oZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX0RPTV8ke2Nsc0NhcHN9LCBOVUxMKSk7Ci0gICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwod3JhcHBlciAhPSAwLCAwKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3cmFw
cGVyLCAwKTsKIAogICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysg
c21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAogICAgICAq
IGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkg
Y29kZSBmb3IgdGhlCkBAIC0xMDA2LDI2ICsxMDU1LDEzIEBAICR7Y2xhc3NOYW1lfSogd3JhcCR7
aW50ZXJmYWNlTmFtZX0oV2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSogY29yZU9iamVjdCkKIAog
ICAgIGNvcmVPYmplY3QtPnJlZigpOwogICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5j
b3JlT2JqZWN0ID0gY29yZU9iamVjdDsKK0B0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcnMKIAogICAg
IHJldHVybiB3cmFwcGVyOwogfQotCi1XZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9KiBjb3JlKCR7
Y2xhc3NOYW1lfSogcmVxdWVzdCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0
ICE9IDAsIDApOwotICAgIAotICAgIFdlYkNvcmU6OiR7aW50ZXJmYWNlTmFtZX0qIGNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9Kj4oV0VCS0lUX0RPTV9P
QkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNv
cmVPYmplY3QgIT0gMCwgMCk7Ci0gICAgCi0gICAgcmV0dXJuIGNvcmVPYmplY3Q7Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogRU9GCi0KLSAgICBwdXNoKEBjQm9keVByaXYsICRpbXBsQ29u
dGVudCk7Ci0gICAgJG9iamVjdC0+R2VuZXJhdGVQcm9wZXJ0aWVzKCRpbnRlcmZhY2VOYW1lLCAk
ZGF0YU5vZGUpOwotICAgICRvYmplY3QtPkdlbmVyYXRlRnVuY3Rpb25zKCRpbnRlcmZhY2VOYW1l
LCAkZGF0YU5vZGUpOworICAgIHB1c2goQGNCb2R5UHJpdiwgJHdyYXBNZXRob2QpOwogfQogCiBz
dWIgR2VuZXJhdGVFbmRIZWFkZXIgewpAQCAtMTEzOCw3ICsxMTc0LDcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAgICAgCiBncG9pbnRlciBraXQoV2ViQ29yZTo6JGludGVyZmFjZU5hbWUqIG9iaikK
IHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmogIT0gMCwgMCk7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwob2JqLCAwKTsKIAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RD
YWNoZTo6Z2V0KG9iaikpCiAgICAgICAgIHJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxsYmFjay5jcHAg
Yi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RDYWxs
YmFjay5jcHAKaW5kZXggNmNmZWM3NC4uNTA1YjU5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Q2FsbGJhY2suY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdENhbGxi
YWNrLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAKIGdwb2lu
dGVyIGtpdChXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIG9iaikKIHsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChvYmogIT0gMCwgMCk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsK
IAogICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCiAgICAg
ICAgIHJldHVybiByZXQ7CkBAIC05OCwzMSArOTgsMTMgQEAgR19ERUZJTkVfVFlQRShXZWJLaXRE
T01UZXN0Q2FsbGJhY2ssIHdlYmtpdF9kb21fdGVzdF9jYWxsYmFjaywgV0VCS0lUX1RZUEVfRE9N
X08KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVdlYktpdERPTVRlc3RDYWxsYmFjayogd3JhcFRl
c3RDYWxsYmFjayhXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmVPYmplY3QpCi17Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAKLSAgICBXZWJLaXRE
T01UZXN0Q2FsbGJhY2sqIHdyYXBwZXIgPSBXRUJLSVRfRE9NX1RFU1RfQ0FMTEJBQ0soZ19vYmpl
Y3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NBTExCQUNLLCBOVUxMKSk7Ci0gICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAwLCAwKTsKLQotICAgIC8qIFdlIGNhbGwgcmVmKCkg
cmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0
b3JlIGEgQysrIG9iamVjdAotICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1
cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcgZGVy
ZWYoKS4KLSAgICAgKi8KLQotICAgIGNvcmVPYmplY3QtPnJlZigpOwotICAgIFdFQktJVF9ET01f
T0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0gY29yZU9iamVjdDsKLQotICAgIHJldHVybiB3
cmFwcGVyOwotfQotCiBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmUoV2ViS2l0RE9NVGVzdENh
bGxiYWNrKiByZXF1ZXN0KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHJlcXVlc3QgIT0g
MCwgMCk7Ci0gICAgCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCwgMCk7CisKICAg
ICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpUZXN0Q2FsbGJhY2sqPihXRUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7
Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAKKyAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKwogICAgIHJldHVybiBjb3Jl
T2JqZWN0OwogfQogCkBAIC0xMzYsNyArMTE4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90
ZXN0X2NhbGxiYWNrX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRET01P
YmplY3QqIGRvbV9vYmplY3QgPSBXRUJLSVRfRE9NX09CSkVDVChvYmplY3QpOwogICAgIAotICAg
IGlmIChkb21fb2JqZWN0LT5jb3JlT2JqZWN0ICE9IE5VTEwpIHsKKyAgICBpZiAoZG9tX29iamVj
dC0+Y29yZU9iamVjdCkgewogICAgICAgICBXZWJDb3JlOjpUZXN0Q2FsbGJhY2sqIGNvcmVPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0Q2FsbGJhY2sgKj4oZG9tX29iamVjdC0+Y29y
ZU9iamVjdCk7CiAKICAgICAgICAgV2ViS2l0OjpET01PYmplY3RDYWNoZTo6Zm9yZ2V0KGNvcmVP
YmplY3QpOwpAQCAtMTc3LDEwICsxNTksMjkgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2NhbGxiYWNrX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVzdENhbGxiYWNrQ2xhc3MqIHJlcXUKIAog
CiAKLQogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfY2FsbGJhY2tfaW5pdChXZWJL
aXRET01UZXN0Q2FsbGJhY2sqIHJlcXVlc3QpCiB7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgewor
V2ViS2l0RE9NVGVzdENhbGxiYWNrKiB3cmFwVGVzdENhbGxiYWNrKFdlYkNvcmU6OlRlc3RDYWxs
YmFjayogY29yZU9iamVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0
LCAwKTsKKyAgICAKKyAgICBXZWJLaXRET01UZXN0Q2FsbGJhY2sqIHdyYXBwZXIgPSBXRUJLSVRf
RE9NX1RFU1RfQ0FMTEJBQ0soZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0RPTV9URVNUX0NBTExC
QUNLLCBOVUxMKSk7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciwgMCk7CisKKyAg
ICAvKiBXZSBjYWxsIHJlZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIg
YmVjYXVzZSB3ZSBjYW4ndCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAgKiBpbiBhIEMtYWxsb2Nh
dGVkIEdPYmplY3Qgc3RydWN0dXJlLiAgU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZQor
ICAgICAqIG1hdGNoaW5nIGRlcmVmKCkuCisgICAgICovCisKKyAgICBjb3JlT2JqZWN0LT5yZWYo
KTsKKyAgICBXRUJLSVRfRE9NX09CSkVDVCh3cmFwcGVyKS0+Y29yZU9iamVjdCA9IGNvcmVPYmpl
Y3Q7CisKKworICAgIHJldHVybiB3cmFwcGVyOworfQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RJbnRlcmZhY2UuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0SW50ZXJmYWNlLmNwcAppbmRleCAyYmUwMjc3Li4xNzU0OGQ5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RJbnRlcmZhY2UuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEludGVyZmFjZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgCiBncG9pbnRlciBraXQoV2ViQ29yZTo6VGVzdEludGVyZmFjZSogb2Jq
KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiAhPSAwLCAwKTsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChvYmosIDApOwogCiAgICAgaWYgKGdwb2ludGVyIHJldCA9IERPTU9iamVj
dENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTUxLDMxICs1MSwxMyBA
QCBHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RJbnRlcmZhY2UsIHdlYmtpdF9kb21fdGVzdF9p
bnRlcmZhY2UsIFdFQktJVF9UWVBFX0RPTQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotV2ViS2l0
RE9NVGVzdEludGVyZmFjZSogd3JhcFRlc3RJbnRlcmZhY2UoV2ViQ29yZTo6VGVzdEludGVyZmFj
ZSogY29yZU9iamVjdCkKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0ICE9
IDAsIDApOwotICAgIAotICAgIFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHdyYXBwZXIgPSBXRUJL
SVRfRE9NX1RFU1RfSU5URVJGQUNFKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9ET01fVEVTVF9J
TlRFUkZBQ0UsIE5VTEwpKTsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3cmFwcGVyICE9IDAs
IDApOwotCi0gICAgLyogV2UgY2FsbCByZWYoKSByYXRoZXIgdGhhbiB1c2luZyBhIEMrKyBzbWFy
dCBwb2ludGVyIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYSBDKysgb2JqZWN0Ci0gICAgICogaW4g
YSBDLWFsbG9jYXRlZCBHT2JqZWN0IHN0cnVjdHVyZS4gIFNlZSB0aGUgZmluYWxpemUoKSBjb2Rl
IGZvciB0aGUKLSAgICAgKiBtYXRjaGluZyBkZXJlZigpLgotICAgICAqLwotCi0gICAgY29yZU9i
amVjdC0+cmVmKCk7Ci0gICAgV0VCS0lUX0RPTV9PQkpFQ1Qod3JhcHBlciktPmNvcmVPYmplY3Qg
PSBjb3JlT2JqZWN0OwotCi0gICAgcmV0dXJuIHdyYXBwZXI7Ci19Ci0KIFdlYkNvcmU6OlRlc3RJ
bnRlcmZhY2UqIGNvcmUoV2ViS2l0RE9NVGVzdEludGVyZmFjZSogcmVxdWVzdCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0ICE9IDAsIDApOwotICAgIAorICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKHJlcXVlc3QsIDApOworCiAgICAgV2ViQ29yZTo6VGVzdEludGVyZmFjZSog
Y29yZU9iamVjdCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqPihXRUJLSVRf
RE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoY29yZU9iamVjdCAhPSAwLCAwKTsKLSAgICAKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChj
b3JlT2JqZWN0LCAwKTsKKwogICAgIHJldHVybiBjb3JlT2JqZWN0OwogfQogCkBAIC04OSw3ICs3
MSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfZmluYWxpemUoR09i
amVjdCogb2JqZWN0KQogewogICAgIFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9IFdFQktJ
VF9ET01fT0JKRUNUKG9iamVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmplY3QtPmNvcmVPYmpl
Y3QgIT0gTlVMTCkgeworICAgIGlmIChkb21fb2JqZWN0LT5jb3JlT2JqZWN0KSB7CiAgICAgICAg
IFdlYkNvcmU6OlRlc3RJbnRlcmZhY2UqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3QpOwogCiAgICAgICAgIFdl
YktpdDo6RE9NT2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKQEAgLTEzMCwxMCArMTEy
LDI5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9pbnRlcmZhY2VfY2xhc3NfaW5pdChX
ZWJLaXRET01UZXN0SW50ZXJmYWNlQ2xhc3MqIHJlCiAKIAogCi0KIH0KIAogc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2ludGVyZmFjZV9pbml0KFdlYktpdERPTVRlc3RJbnRlcmZhY2UqIHJl
cXVlc3QpCiB7CiB9CiAKK25hbWVzcGFjZSBXZWJLaXQgeworV2ViS2l0RE9NVGVzdEludGVyZmFj
ZSogd3JhcFRlc3RJbnRlcmZhY2UoV2ViQ29yZTo6VGVzdEludGVyZmFjZSogY29yZU9iamVjdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKyAgICAKKyAgICBX
ZWJLaXRET01UZXN0SW50ZXJmYWNlKiB3cmFwcGVyID0gV0VCS0lUX0RPTV9URVNUX0lOVEVSRkFD
RShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfSU5URVJGQUNFLCBOVUxMKSk7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciwgMCk7CisKKyAgICAvKiBXZSBjYWxsIHJl
ZigpIHJhdGhlciB0aGFuIHVzaW5nIGEgQysrIHNtYXJ0IHBvaW50ZXIgYmVjYXVzZSB3ZSBjYW4n
dCBzdG9yZSBhIEMrKyBvYmplY3QKKyAgICAgKiBpbiBhIEMtYWxsb2NhdGVkIEdPYmplY3Qgc3Ry
dWN0dXJlLiAgU2VlIHRoZSBmaW5hbGl6ZSgpIGNvZGUgZm9yIHRoZQorICAgICAqIG1hdGNoaW5n
IGRlcmVmKCkuCisgICAgICovCisKKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKyAgICBXRUJLSVRf
RE9NX09CSkVDVCh3cmFwcGVyKS0+Y29yZU9iamVjdCA9IGNvcmVPYmplY3Q7CisKKworICAgIHJl
dHVybiB3cmFwcGVyOworfQorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNw
cAppbmRleCA4YzFiYWUyLi42MTg5NmE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgCiBncG9pbnRlciBraXQoV2ViQ29yZTo6
VGVzdE9iaiogb2JqKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKG9iaiAhPSAwLCAwKTsK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChvYmosIDApOwogCiAgICAgaWYgKGdwb2ludGVyIHJl
dCA9IERPTU9iamVjdENhY2hlOjpnZXQob2JqKSkKICAgICAgICAgcmV0dXJuIHJldDsKQEAgLTQ4
NCwzMSArNDg0LDEzIEBAIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdE9iaiwgd2Via2l0X2Rv
bV90ZXN0X29iaiwgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVdlYktpdERPTVRlc3RPYmoqIHdyYXBUZXN0T2JqKFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVP
YmplY3QpCi17Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoY29yZU9iamVjdCAhPSAwLCAwKTsK
LSAgICAKLSAgICBXZWJLaXRET01UZXN0T2JqKiB3cmFwcGVyID0gV0VCS0lUX0RPTV9URVNUX09C
SihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCBOVUxMKSk7Ci0gICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwod3JhcHBlciAhPSAwLCAwKTsKLQotICAgIC8qIFdlIGNhbGwgcmVm
KCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBiZWNhdXNlIHdlIGNhbid0
IHN0b3JlIGEgQysrIG9iamVjdAotICAgICAqIGluIGEgQy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1
Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBmb3IgdGhlCi0gICAgICogbWF0Y2hpbmcg
ZGVyZWYoKS4KLSAgICAgKi8KLQotICAgIGNvcmVPYmplY3QtPnJlZigpOwotICAgIFdFQktJVF9E
T01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0gY29yZU9iamVjdDsKLQotICAgIHJldHVy
biB3cmFwcGVyOwotfQotCiBXZWJDb3JlOjpUZXN0T2JqKiBjb3JlKFdlYktpdERPTVRlc3RPYmoq
IHJlcXVlc3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocmVxdWVzdCAhPSAwLCAwKTsK
LSAgICAKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKKwogICAgIFdlYkNv
cmU6OlRlc3RPYmoqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0T2JqKj4o
V0VCS0lUX0RPTV9PQkpFQ1QocmVxdWVzdCktPmNvcmVPYmplY3QpOwotICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGNvcmVPYmplY3QgIT0gMCwgMCk7Ci0gICAgCisgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoY29yZU9iamVjdCwgMCk7CisKICAgICByZXR1cm4gY29yZU9iamVjdDsKIH0KIApAQCAt
NTM1LDcgKzUxNyw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdERPTU9iamVjdCogZG9tX29iamVjdCA9IFdF
QktJVF9ET01fT0JKRUNUKG9iamVjdCk7CiAgICAgCi0gICAgaWYgKGRvbV9vYmplY3QtPmNvcmVP
YmplY3QgIT0gTlVMTCkgeworICAgIGlmIChkb21fb2JqZWN0LT5jb3JlT2JqZWN0KSB7CiAgICAg
ICAgIFdlYkNvcmU6OlRlc3RPYmoqIGNvcmVPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpU
ZXN0T2JqICo+KGRvbV9vYmplY3QtPmNvcmVPYmplY3QpOwogCiAgICAgICAgIFdlYktpdDo6RE9N
T2JqZWN0Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKQEAgLTc3MCwxMCArNzUyLDI5IEBAIEdf
TUFYTE9ORywgLyogbWF4ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwogCiAKLQogfQog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2luaXQoV2ViS2l0RE9NVGVzdE9iaiog
cmVxdWVzdCkKIHsKIH0KIAorbmFtZXNwYWNlIFdlYktpdCB7CitXZWJLaXRET01UZXN0T2JqKiB3
cmFwVGVzdE9iaihXZWJDb3JlOjpUZXN0T2JqKiBjb3JlT2JqZWN0KQoreworICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGNvcmVPYmplY3QsIDApOworICAgIAorICAgIFdlYktpdERPTVRlc3RPYmoq
IHdyYXBwZXIgPSBXRUJLSVRfRE9NX1RFU1RfT0JKKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9E
T01fVEVTVF9PQkosIE5VTEwpKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3cmFwcGVyLCAw
KTsKKworICAgIC8qIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQg
cG9pbnRlciBiZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgICAqIGluIGEg
Qy1hbGxvY2F0ZWQgR09iamVjdCBzdHJ1Y3R1cmUuICBTZWUgdGhlIGZpbmFsaXplKCkgY29kZSBm
b3IgdGhlCisgICAgICogbWF0Y2hpbmcgZGVyZWYoKS4KKyAgICAgKi8KKworICAgIGNvcmVPYmpl
Y3QtPnJlZigpOworICAgIFdFQktJVF9ET01fT0JKRUNUKHdyYXBwZXIpLT5jb3JlT2JqZWN0ID0g
Y29yZU9iamVjdDsKKworCisgICAgcmV0dXJuIHdyYXBwZXI7Cit9Cit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNvcmUv
ZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCBkN2M5NTBmLi4zZWNmYWU3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5l
ci5oCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yRE9NQWdlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2VUeXBlLAogICAgICAgICAgICAgICAgICAgICBPYmpDRXZlbnRM
aXN0ZW5lclR5cGUsIAotICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25FdmVudExpc3RlbmVy
VHlwZSB9OworICAgICAgICAgICAgICAgICAgICBDb25kaXRpb25FdmVudExpc3RlbmVyVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgR09iamVjdEV2ZW50TGlzdGVuZXJUeXBlIH07CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSA9IDA7Ci0t
IAoxLjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55690</attachid>
            <date>2010-05-11 05:31:53 -0700</date>
            <delta_ts>2010-05-26 03:53:19 -0700</delta_ts>
            <desc>signalnames.diff</desc>
            <filename>signalnames.diff</filename>
            <type>text/plain</type>
            <size>3820</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiNGI0NjI0ZGFlMjJkZTNkOTNkNTk0ODY3MDhhYjY1MmE5OThjMmFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDExIE1heSAyMDEwIDE0OjMwOjIzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNS0x
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50cyBp
biB0aGUgR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKCiAgICAgICAgVXNlIEdPYmplY3QtbGlrZSBuYW1lcyBm
b3IgdGhlIERPTSBldmVudCBzaWduYWxzLiBCYXNpY2FsbHkgZ28KICAgICAgICBmcm9tICdtb3Vz
ZXdoZWVsJyB0byAnbW91c2Utd2hlZWwtZXZlbnQnLgoKICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMiArKysrKysrCiBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG0gfCAgIDM1ICsrKysrKysrKysrKysrKysr
Ky0tLQogMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTkyYjcwZC4uYTk5OTkzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNS0xMSAgWGFuIExvcGV6ICA8
eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIERPTSBldmVudHMgaW4gdGhlIEdPYmpl
Y3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zODg0NAorCisgICAgICAgIFVzZSBHT2JqZWN0LWxpa2UgbmFtZXMgZm9yIHRoZSBE
T00gZXZlbnQgc2lnbmFscy4gQmFzaWNhbGx5IGdvCisgICAgICAgIGZyb20gJ21vdXNld2hlZWwn
IHRvICdtb3VzZS13aGVlbC1ldmVudCcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JHT2JqZWN0LnBtOgorCiAyMDEwLTA1LTEwICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSBi
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQppbmRleCBh
YjhhMjg0Li5jMWZiODRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckdPYmplY3QucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JHT2JqZWN0LnBtCkBAIC00NDUsMTYgKzQ0NSw0MSBAQCBFT0YKICAgICBwdXNoKEB0
eHRJbnN0YWxsUHJvcHMsICR0eHRJbnN0YWxsUHJvcCk7CiB9CiAKK215ICVicmVha1dvcmRzID0g
KCJiZWZvcmUiID0+IDEsICJjYW4iID0+IDEsICJjb250ZXh0IiA9PiAxLCAiZGJsIiA9PiAxLCAi
ZHJhZyIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICJkcmFnIiA9PiAxLCAiZHVyYXRpb24iID0+
IDEsICJoYXMiID0+IDEsICJrZXkiID0+IDEsICJsb2FkZWQiID0+IDEsCisgICAgICAgICAgICAg
ICAgICAibW91c2UiID0+IDEsICJwYWdlIiA9PiAxLCAicG9wIiA9PiAxLCAicmF0ZSIgPT4gMSwg
InNlbGVjdCIgPT4gMSwKKyAgICAgICAgICAgICAgICAgICJ0aW1lIiA9PiAxLCAidG91Y2giID0+
IDEsICJ2b2x1bWUiID0+IDEpOworCitzdWIgU3BsaXRFdmVudExpc3RlbmVyQXR0ck5hbWUgewor
ICAgIG15ICRhdHRyTmFtZSA9IHNoaWZ0OworCisgICAgbXkgQG1hdGNoZXMgPSBncmVwIHsgJGF0
dHJOYW1lID1+IC9eJF8vIH0ga2V5cyAoJWJyZWFrV29yZHMpOworCisgICAgaWYgKEBtYXRjaGVz
ICYmIChsZW5ndGggJG1hdGNoZXNbMF0gPCBsZW5ndGggJGF0dHJOYW1lKSkgeworICAgICAgICAk
YXR0ck5hbWUgPSAkbWF0Y2hlc1swXSAuICItIiAuIHN1YnN0cigkYXR0ck5hbWUsIGxlbmd0aCAk
bWF0Y2hlc1swXSk7CisgICAgfQorCisgICAgcmV0dXJuICRhdHRyTmFtZTsKK30KKworc3ViIEV2
ZW50U2lnbmFsTmFtZSB7CisgICAgbXkgJGF0dHJOYW1lID0gc2hpZnQ7CisgICAgbXkgJG5hbWUg
PSBTcGxpdEV2ZW50TGlzdGVuZXJBdHRyTmFtZSgkYXR0ck5hbWUpIC4gIi1ldmVudCI7CisKKyAg
ICByZXR1cm4gJG5hbWU7Cit9CisKIHN1YiBHZW5lcmF0ZUV2ZW50TGlzdGVuZXIgewogICAgIG15
ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkb2JqZWN0ID0gc2hpZnQ7CiAgICAgbXkgJGlu
dGVyZmFjZU5hbWUgPSBzaGlmdDsKIAogICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lOwotICAgIG15ICRzaWduYWxOYW1lID0gc3Vic3RyKCRuYW1lLCAyKTsKKyAgICBt
eSAkZG9tU2lnbmFsTmFtZSA9IHN1YnN0cigkbmFtZSwgMik7CisgICAgbXkgJGdvYmplY3RTaWdu
YWxOYW1lID0gRXZlbnRTaWduYWxOYW1lKCRkb21TaWduYWxOYW1lKTsKIAogICAgIG15ICR0eHRJ
bnN0YWxsU2lnbmFsID0gPDwgIkVPRiI7Ci0gICAgZ19zaWduYWxfbmV3KCIke3NpZ25hbE5hbWV9
IiwKKyAgICBnX3NpZ25hbF9uZXcoIiR7Z29iamVjdFNpZ25hbE5hbWV9IiwKICAgICAgICAgICAg
ICAgICAgR19UWVBFX0ZST01fQ0xBU1MoZ29iamVjdENsYXNzKSwKICAgICAgICAgICAgICAgICAg
R19TSUdOQUxfUlVOX0xBU1QsCiAgICAgICAgICAgICAgICAgIDAsCkBAIC00NjYsMTEgKzQ5MSwx
MSBAQCBzdWIgR2VuZXJhdGVFdmVudExpc3RlbmVyIHsKIEVPRgogICAgIHB1c2goQHR4dEluc3Rh
bGxTaWduYWxzLCAkdHh0SW5zdGFsbFNpZ25hbCk7CiAKLSAgICBteSAke2xpc3RlbmVyTmFtZX0g
PSAkc2lnbmFsTmFtZSAuICJMaXN0ZW5lciI7CisgICAgbXkgJHtsaXN0ZW5lck5hbWV9ID0gICRk
b21TaWduYWxOYW1lIC4gIkxpc3RlbmVyIjsKIAogICAgIG15ICR0eHRJbnN0YWxsRXZlbnRMaXN0
ZW5lciA9IDw8ICJFT0YiOwotICAgIFJlZlB0cjxXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5l
cj4gJHtsaXN0ZW5lck5hbWV9ID0gV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PEdPYmplY3QqPih3cmFwcGVyKSwgIiR7c2lnbmFsTmFtZX0iKTsK
LSAgICBjb3JlT2JqZWN0LT5hZGRFdmVudExpc3RlbmVyKCIke3NpZ25hbE5hbWV9IiwgJHtsaXN0
ZW5lck5hbWV9LCBmYWxzZSk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3Rl
bmVyPiAke2xpc3RlbmVyTmFtZX0gPSBXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8R09iamVjdCo+KHdyYXBwZXIpLCAiJHtnb2JqZWN0U2lnbmFs
TmFtZX0iKTsKKyAgICBjb3JlT2JqZWN0LT5hZGRFdmVudExpc3RlbmVyKCIke2RvbVNpZ25hbE5h
bWV9IiwgJHtsaXN0ZW5lck5hbWV9LCBmYWxzZSk7CiBFT0YKICAgICBwdXNoKEB0eHRJbnN0YWxs
RXZlbnRMaXN0ZW5lcnMsICR0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcik7CiAKLS0gCjEuNi42LjEK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55698</attachid>
            <date>2010-05-11 06:43:48 -0700</date>
            <delta_ts>2010-05-26 03:53:41 -0700</delta_ts>
            <desc>testsignals.diff</desc>
            <filename>testsignals.diff</filename>
            <type>text/plain</type>
            <size>7190</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAwNTJiMjI5OTUzODVlODRkNjRhZTYzYjk4NGQxMTQ5NmQyZGE0MjE0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
dWUsIDExIE1heSAyMDEwIDE1OjQxOjMyICswMjAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0wNS0x
MSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50cyBp
biB0aGUgR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKCiAgICAgICAgQWRkIG5ldyB0ZXN0IHRvIHRoZSBidWls
ZC4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKCldlYktpdC9ndGs6CgoyMDEwLTA1LTExICBY
YW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCgogICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBET00gZXZlbnRzIGluIHRo
ZSBHT2JqZWN0IERPTSBiaW5kaW5ncwogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zODg0NAoKICAgICAgICBUZXN0IERPTVdpbmRvdyBzaWduYWxzLgoKICAg
ICAgICAqIHRlc3RzL3Rlc3Rkb21kb213aW5kb3cuYzogQWRkZWQuCiAgICAgICAgKGZpbmlzaF9s
b2FkaW5nKToKICAgICAgICAoZG9tX2RvbXZpZXdfZml4dHVyZV9zZXR1cCk6CiAgICAgICAgKGRv
bV9kb212aWV3X2ZpeHR1cmVfdGVhcmRvd24pOgogICAgICAgIChldmVudENhbGxiYWNrKToKICAg
ICAgICAodGVzdF9kb21fZG9tdmlld19zaWduYWxzKToKICAgICAgICAobWFpbik6Ci0tLQogQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsrKysKIEdOVW1ha2VmaWxl
LmFtICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArKwogV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgfCAgIDE3ICsrKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb213
aW5kb3cuYyB8ICAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQgZmls
ZXMgY2hhbmdlZCwgMTQ2IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9td2luZG93LmMKCmRpZmYgLS1naXQg
YS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNzIzODdiYi4uODEwYzIzNyAxMDA2NDQKLS0t
IGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEwLTA1LTEx
ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50
cyBpbiB0aGUgR09iamVjdCBET00gYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODQ0CisKKyAgICAgICAgQWRkIG5ldyB0ZXN0IHRvIHRo
ZSBidWlsZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorCiAyMDEwLTA1LTA4ICBMYXN6
bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxl
LmFtIGIvR05VbWFrZWZpbGUuYW0KaW5kZXggYjBhZDllOS4uM2UzYzVkNyAxMDA2NDQKLS0tIGEv
R05VbWFrZWZpbGUuYW0KKysrIGIvR05VbWFrZWZpbGUuYW0KQEAgLTYzNCw2ICs2MzQsNyBAQCB3
ZWJraXRfdGVzdHNfbGRmbGFncyA9IFwKIAogVEVTVF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvdW5p
dHRlc3RzL3Rlc3Rkb21kb2N1bWVudCBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3Rkb21kb213
aW5kb3cgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAogCVByb2dyYW1z
L3VuaXR0ZXN0cy90ZXN0bG9hZGluZyBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RnbG9iYWxz
IFwKQEAgLTY2MCw2ICs2NjEsMTEgQEAgUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rkb21kb2N1bWVu
dF9DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVz
dGRvbWRvY3VtZW50X0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191bml0
dGVzdHNfdGVzdGRvbWRvY3VtZW50X0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQog
CitQcm9ncmFtc191bml0dGVzdHNfdGVzdGRvbWRvbXdpbmRvd19TT1VSQ0VTID0gV2ViS2l0L2d0
ay90ZXN0cy90ZXN0ZG9tZG9td2luZG93LmMKK1Byb2dyYW1zX3VuaXR0ZXN0c190ZXN0ZG9tZG9t
d2luZG93X0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKK1Byb2dyYW1zX3VuaXR0ZXN0
c190ZXN0ZG9tZG9td2luZG93X0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFt
c191bml0dGVzdHNfdGVzdGRvbWRvbXdpbmRvd19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRm
bGFncykKKwogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3RodHRwYmFja2VuZF9TT1VSQ0VTID0gV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0aHR0cGJhY2tlbmQuYwogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Ro
dHRwYmFja2VuZF9DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0
dGVzdHNfdGVzdGh0dHBiYWNrZW5kX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4
IDI0YzcwMjMuLmM1OWM0NTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDUtMTEgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBET00gZXZlbnRzIGluIHRo
ZSBHT2JqZWN0IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKKworICAgICAgICBUZXN0IERPTVdpbmRvdyBzaWduYWxzLgor
CisgICAgICAgICogdGVzdHMvdGVzdGRvbWRvbXdpbmRvdy5jOiBBZGRlZC4KKyAgICAgICAgKGZp
bmlzaF9sb2FkaW5nKToKKyAgICAgICAgKGRvbV9kb212aWV3X2ZpeHR1cmVfc2V0dXApOgorICAg
ICAgICAoZG9tX2RvbXZpZXdfZml4dHVyZV90ZWFyZG93bik6CisgICAgICAgIChldmVudENhbGxi
YWNrKToKKyAgICAgICAgKHRlc3RfZG9tX2RvbXZpZXdfc2lnbmFscyk6CisgICAgICAgIChtYWlu
KToKKwogMjAxMC0wNS0wNiAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0ZG9tZG9td2luZG93LmMgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb213
aW5kb3cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzY5NTg3Ci0tLSAv
ZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0ZG9tZG9td2luZG93LmMKQEAgLTAs
MCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgInRlc3RfdXRpbHMuaCIKKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxnbGliL2dz
dGRpby5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+
CisKKyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9O
KDIsIDE0LCAwKQorCisjZGVmaW5lIEhUTUxfRE9DVU1FTlQgIjxodG1sPjxoZWFkPjx0aXRsZT5U
aGlzIGlzIHRoZSB0aXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5PjwvYm9keT48L2h0bWw+IgorCit0
eXBlZGVmIHN0cnVjdCB7CisgICAgR3RrV2lkZ2V0KiB3ZWJWaWV3OworICAgIEdNYWluTG9vcCog
bG9vcDsKKworICAgIGd1aW50IGNvdW50ZXI7Cit9IERvbURvbXZpZXdGaXh0dXJlOworCitzdGF0
aWMgZ2Jvb2xlYW4gZmluaXNoX2xvYWRpbmcoRG9tRG9tdmlld0ZpeHR1cmUqIGZpeHR1cmUpCit7
CisgICAgaWYgKGdfbWFpbl9sb29wX2lzX3J1bm5pbmcoZml4dHVyZS0+bG9vcCkpCisgICAgICAg
IGdfbWFpbl9sb29wX3F1aXQoZml4dHVyZS0+bG9vcCk7CisKKyAgICByZXR1cm4gRkFMU0U7Cit9
CisKK3N0YXRpYyB2b2lkIGRvbV9kb212aWV3X2ZpeHR1cmVfc2V0dXAoRG9tRG9tdmlld0ZpeHR1
cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKK3sKKyAgICBmaXh0dXJlLT5sb29wID0g
Z19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIGZpeHR1cmUtPndlYlZpZXcgPSB3ZWJr
aXRfd2ViX3ZpZXdfbmV3KCk7CisgICAgZml4dHVyZS0+Y291bnRlciA9IDA7CisgICAgZ19vYmpl
Y3RfcmVmX3NpbmsoZml4dHVyZS0+d2ViVmlldyk7CisKKyAgICBpZiAoZGF0YSAhPSBOVUxMKQor
ICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9zdHJpbmcoV0VCS0lUX1dFQl9WSUVXIChmaXh0
dXJlLT53ZWJWaWV3KSwgKGNvbnN0IGNoYXIqKSBkYXRhLCBOVUxMLCBOVUxMLCBOVUxMKTsKKwor
ICAgIGdfaWRsZV9hZGQoKEdTb3VyY2VGdW5jKWZpbmlzaF9sb2FkaW5nLCBmaXh0dXJlKTsKKyAg
ICBnX21haW5fbG9vcF9ydW4oZml4dHVyZS0+bG9vcCk7Cit9CisKK3N0YXRpYyB2b2lkIGRvbV9k
b212aWV3X2ZpeHR1cmVfdGVhcmRvd24oRG9tRG9tdmlld0ZpeHR1cmUqIGZpeHR1cmUsIGdjb25z
dHBvaW50ZXIgZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihmaXh0dXJlLT53ZWJWaWV3KTsK
KyAgICBnX21haW5fbG9vcF91bnJlZihmaXh0dXJlLT5sb29wKTsKK30KKworc3RhdGljIGdib29s
ZWFuIGV2ZW50Q2FsbGJhY2soV2ViS2l0RE9NRE9NV2luZG93KiB2aWV3LCBncG9pbnRlciBldmVu
dCwgRG9tRG9tdmlld0ZpeHR1cmUqIGZpeHR1cmUpCit7CisgICAgZ19hc3NlcnQoZml4dHVyZS0+
Y291bnRlciA9PSAwKTsKKyAgICBmaXh0dXJlLT5jb3VudGVyKys7CisKKyAgICByZXR1cm4gRkFM
U0U7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RfZG9tX2RvbXZpZXdfc2lnbmFscyhEb21Eb212aWV3
Rml4dHVyZSogZml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQoreworICAgIGdfYXNzZXJ0KGZp
eHR1cmUpOworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSAoV2ViS2l0V2ViVmlldyopZml4dHVy
ZS0+d2ViVmlldzsKKyAgICBnX2Fzc2VydCh2aWV3KTsKKyAgICBXZWJLaXRET01Eb2N1bWVudCog
ZG9jdW1lbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2RvbV9kb2N1bWVudCh2aWV3KTsKKyAgICBn
X2Fzc2VydChkb2N1bWVudCk7CisgICAgV2ViS2l0RE9NRE9NV2luZG93KiB3aW5kb3cgPSB3ZWJr
aXRfZG9tX2RvY3VtZW50X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOworICAgIGdfYXNzZXJ0
KHdpbmRvdyk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgImxvYWQtZXZlbnQiLCBH
X0NBTExCQUNLKGV2ZW50Q2FsbGJhY2spLCBmaXh0dXJlKTsKK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIGlmICghZ190aHJlYWRfc3VwcG9ydGVkKCkpCisgICAg
ICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisKKyAgICBndGtfdGVzdF9pbml0KCZhcmdjLCAmYXJn
diwgTlVMTCk7CisKKyAgICBnX3Rlc3RfYnVnX2Jhc2UoImh0dHBzOi8vYnVncy53ZWJraXQub3Jn
LyIpOworCisgICAgZ190ZXN0X2FkZCgiL3dlYmtpdC9kb21kb212aWV3L3NpZ25hbHMiLAorICAg
ICAgICAgICAgICAgRG9tRG9tdmlld0ZpeHR1cmUsIEhUTUxfRE9DVU1FTlQsCisgICAgICAgICAg
ICAgICBkb21fZG9tdmlld19maXh0dXJlX3NldHVwLAorICAgICAgICAgICAgICAgdGVzdF9kb21f
ZG9tdmlld19zaWduYWxzLAorICAgICAgICAgICAgICAgZG9tX2RvbXZpZXdfZml4dHVyZV90ZWFy
ZG93bik7CisKKyAgICByZXR1cm4gZ190ZXN0X3J1bigpOworfQorCisjZWxzZQoraW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfY3JpdGljYWwoIllvdSB3aWxsIG5lZWQg
YXQgbGVhc3QgZ2xpYi0yLjE2LjAgYW5kIGd0ay0yLjE0LjAgdG8gcnVuIHRoZSB1bml0IHRlc3Rz
LiBEb2luZyBub3RoaW5nIG5vdy4iKTsKKyAgICByZXR1cm4gMDsKK30KKworI2VuZGlmCi0tIAox
LjYuNi4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57017</attachid>
            <date>2010-05-25 07:44:35 -0700</date>
            <delta_ts>2010-05-26 03:54:10 -0700</delta_ts>
            <desc>eventobject.diff</desc>
            <filename>eventobject.diff</filename>
            <type>text/plain</type>
            <size>25283</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBiNTdhYTJiMGE0Y2Y5YmMzZjBjOWQxYjNiYTllODY0MTk3MjNlNzBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBU
aHUsIDIwIE1heSAyMDEwIDE2OjE4OjIzICswMjAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQ29yZToK
CjIwMTAtMDUtMjAgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIERP
TSBldmVudHMgaW4gdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzCiAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODQ0CgogICAgICAgIEFkZCBhY3R1YWwgR09i
amVjdCBldmVudCBvYmplY3RzIHRvIHRoZSBET00gZXZlbnQgc2lnbmFscy4KCiAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlz
dGVuZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQpOgogICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDoK
ICAgICAgICAoV2ViS2l0Ojp3cmFwRXZlbnRUYXJnZXQpOgogICAgICAgIChXZWJLaXQ6OmtpdCk6
CiAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDoKICAgICAgICAq
IGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRXZlbnRUYXJnZXQuY3BwOiBBZGRlZC4KICAgICAg
ICAod2Via2l0X2RvbV9ldmVudF90YXJnZXRfZGVmYXVsdF9pbml0KToKICAgICAgICAod2Via2l0
X2RvbV9ldmVudF90YXJnZXRfZGlzcGF0Y2hfZXZlbnQpOgogICAgICAgICogYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oOiBBZGRlZC4KICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckdPYmplY3QucG06CgpXZWJLaXQvZ3RrOgoKMjAxMC0wNS0yNSAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKICAgICAgICBbR1RLXSBBZGQgc3VwcG9ydCBmb3IgRE9NIGV2ZW50cyBpbiB0
aGUgR09iamVjdCBET00gYmluZGluZ3MKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKCiAgICAgICAgTW9kaWZ5IHRoZSB0ZXN0cyB0byB0YWtlIGlu
dG8gYWNjb3VudCB0aGUgbmV3IGV2ZW50IG9iamVjdCBhbmQKICAgICAgICB0ZXN0IG9uZSBpbnRl
cmFjdGl2ZSBzaWduYWwuCgogICAgICAgICogdGVzdHMvdGVzdGRvbWRvbXdpbmRvdy5jOgogICAg
ICAgIChkb21fZG9tdmlld19maXh0dXJlX3NldHVwKToKICAgICAgICAoZG9tX2RvbXZpZXdfZml4
dHVyZV90ZWFyZG93bik6CiAgICAgICAgKGxvYWRlZENhbGxiYWNrKToKICAgICAgICAoY2xpY2tl
ZENhbGxiYWNrKToKICAgICAgICAobWFwX2V2ZW50X2NiKToKICAgICAgICAobG9hZF9ldmVudF9j
YWxsYmFjayk6CiAgICAgICAgKHRlc3RfZG9tX2RvbXZpZXdfc2lnbmFscyk6Ci0tLQogV2ViQ29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKysr
CiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx
NSArKystCiBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3Bw
IHwgICAgNCArLQogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3Bw
ICAgICB8ICAgMjggKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJp
bmRpbmcuaCAgICAgICB8ICAgIDIgKwogV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUV2ZW50VGFyZ2V0LmNwcCB8ICAgNTUgKysrKysrKysrKysrKysKIFdlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oICAgfCAgIDU0ICsrKysrKysrKysrKysKIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAgfCAgIDY0ICsr
KysrKysrKysrKystLS0KIFdlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE5ICsrKysrCiBXZWJLaXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb213aW5kb3cu
YyAgICAgICAgICAgICAgIHwgICA4NCArKysrKysrKysrKysrKysrKy0tLS0KIDEwIGZpbGVzIGNo
YW5nZWQsIDMxNyBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRXZlbnRUYXJnZXQuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50
VGFyZ2V0LmgKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDQxM2MzOGMuLmM2ZDc0ZjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDUtMjAgIFhh
biBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBET00gZXZlbnRzIGlu
IHRoZSBHT2JqZWN0IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg4NDQKKworICAgICAgICBBZGQgYWN0dWFsIEdPYmplY3QgZXZl
bnQgb2JqZWN0cyB0byB0aGUgRE9NIGV2ZW50IHNpZ25hbHMuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdPYmplY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6d3JhcEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYktpdDo6a2l0KToK
KyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcDogQWRkZWQuCisgICAg
ICAgICh3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9kZWZhdWx0X2luaXQpOgorICAgICAgICAod2Vi
a2l0X2RvbV9ldmVudF90YXJnZXRfZGlzcGF0Y2hfZXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2dvYmplY3QvV2ViS2l0RE9NRXZlbnRUYXJnZXQuaDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbToKKwogMjAxMC0wNS0xMSAgWGFuIExv
cGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQppbmRleCA2OTMwMGFhLi42NDE0MWI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMyNyw2ICszMjcs
OCBAQCB3ZWJjb3JlZ3RrX2RvbV9zb3VyY2VzID0gXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NQmluZGluZy5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01C
aW5kaW5nLmggXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdl
dC5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5o
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFj
dG9yeS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdy
YXBwZXJGYWN0b3J5LmggXAogCVdlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmpl
Y3QuY3BwIFwKQEAgLTM4OTIsOCArMzg5NCwxMSBAQCBEZXJpdmVkU291cmNlcy93ZWJraXQvd2Vi
a2l0ZG9tZHVtbXkuYzoKICMgRGVyaXZlZFNvdXJjZXMvd2Via2l0IGRpcmVjdG9yeS4gIFRoZSBy
ZWFzb24gaXMgdGhhdCB3ZSB3YW50IGFsbCBoZWFkZXIgZmlsZXMgZGlzdHJpYnV0ZWQgaW4gdGhl
CiAjIGluY2x1ZGUvd2Via2l0LXgueS93ZWJraXQgZGlyZWN0b3J5LCBidXQgZG8gbm90IHdhbnQg
dG8gbmFtZSB0aGUgV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0IGRpcmVjdG9yeSAKICMgIndlYmtp
dCIsIGFzIHRoYXQncyBhIGJpdCBwcmVzdW1wdHVvdXMgZm9yIGEgR1RLIGJpbmRpbmcuCi0kKHRv
cF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTU9iamVjdC5oOgotCWNw
IC1mICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3QuaCAkQAorJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC9XZWJLaXRET01PYmplY3QuaDogJChX
ZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTU9iamVjdC5oCisJJChBTV9WX0dFTilj
cCAtZiAkPCAkQAorCiskKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktp
dERPTUV2ZW50VGFyZ2V0Lmg6ICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01F
dmVudFRhcmdldC5oCisJJChBTV9WX0dFTiljcCAtZiAkPCAkQAogCiAjIFN0YXJ0IHdpdGggYSBz
dWJzZXQgb2YgYWxsIHRoZSBET00gYmluZGluZ3MKIElETF9CSU5ESU5HU19HRE9NICs9IFwKQEAg
LTM5MTcsNiArMzkyMiw3IEBAIElETF9CSU5ESU5HU19HRE9NICs9IFwKIAlXZWJDb3JlL2RvbS9E
T01TdHJpbmdMaXN0LmlkbCBcCiAJV2ViQ29yZS9kb20vRWxlbWVudC5pZGwgXAogCVdlYkNvcmUv
ZG9tL0VudGl0eVJlZmVyZW5jZS5pZGwgXAorCVdlYkNvcmUvZG9tL0V2ZW50LmlkbCBcCiAJV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuaWRsIFwKIAlXZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuaWRs
IFwKIAlXZWJDb3JlL2RvbS9Ob2RlLmlkbCBcCkBAIC00MDE2LDcgKzQwMjIsNyBAQCBJRExfQklO
RElOR1NfR0RPTSArPSBcCiBHRE9NX0FVVE9fQ0xBU1NFUyArPSAkKGJhc2VuYW1lICQobm90ZGly
ICQoSURMX0JJTkRJTkdTX0dET00pKSkKIAogIyBUaGUgY2xhc3NlcyBpbXBsZW1lbnRlZCBtYW51
YWxseQotR0RPTV9GSVhFRF9DTEFTU0VTICs9IE9iamVjdAorR0RPTV9GSVhFRF9DTEFTU0VTICs9
IE9iamVjdCBFdmVudFRhcmdldAogCiBHRE9NX0NMQVNTRVMgKz0gJChHRE9NX0FVVE9fQ0xBU1NF
UykgJChHRE9NX0ZJWEVEX0NMQVNTRVMpCiAKQEAgLTQwMjcsNiArNDAzMyw3IEBAIEZFQVRVUkVf
REVGSU5FU19HRE9NIDo9ICQoZmlsdGVyLW91dCBFTkFCTEUtU1ZHJSwgJChGRUFUVVJFX0RFRklO
RVMpKQogR0RPTV9IRUFERVJTX0JVSUxUICs9ICQocGF0c3Vic3QgJSwkKHRvcF9idWlsZGRpcikv
RGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTSUuaCwkKEdET01fQVVUT19DTEFTU0VTKSkg
XAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvd2Via2l0ZG9tLmggXAog
CSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5o
IFwKKwkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0L1dlYktpdERPTUV2ZW50
VGFyZ2V0LmggXAogCSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXQvV2ViS2l0
RE9NT2JqZWN0LmgKIAogIyBBdXRvZ2VuZXJhdGVkIHNvdXJjZSBmaWxlcwpAQCAtNDAzOCw3ICs0
MDQ1LDcgQEAgR0RPTV9IRUFERVJTX0ZJWEVEICs9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTSUKICMgQWxsIGhlYWRlciBmaWxlcyB0aGF0
IGdldCBpbnN0YWxsZWQKIGxpYmdkb21faF9hcGkgKz0gJChHRE9NX0hFQURFUlNfRklYRUQpICQo
R0RPTV9IRUFERVJTX0JVSUxUKQogCi1EZXJpdmVkU291cmNlcy93ZWJraXQvd2Via2l0ZG9tLmg6
ICQoV2ViQ29yZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwK
K0Rlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb20uaDogJChXZWJDb3JlKS9iaW5kaW5ncy9z
Y3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5wbCAkKFdlYkNvcmUpL0dOVW1ha2VmaWxl
LmFtCiAJJChBTV9WX0dFTillY2hvICQoR0RPTV9DTEFTU0VTKSB8ICQoUEVSTCkgJDwgZ2RvbSA+
ICRACiAKIERlcml2ZWRTb3VyY2VzL3dlYmtpdC93ZWJraXRkb21kZWZpbmVzLmg6ICQoV2ViQ29y
ZSkvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChJRExfQklO
RElOR1NfR0RPTSkgJChXZWJDb3JlKS9HTlVtYWtlZmlsZS5hbQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYTcyYmUxOS4uMWE0
ZjY4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVudExp
c3RlbmVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlz
dGVuZXIuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1
ZGUgIkV2ZW50TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NRXZlbnRQcml2
YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKQEAgLTI5LDcgKzMwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9pZCBHT2Jq
ZWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2
ZW50KiBldmVudCkKIHsKICAgICBnYm9vbGVhbiBoYW5kbGVkID0gRkFMU0U7Ci0gICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fb2JqZWN0LCBtX3NpZ25hbE5hbWUudXRmOCgpLmRhdGEoKSwgMCwg
JmhhbmRsZWQpOworICAgIFdlYktpdERPTUV2ZW50KiBnb2JqZWN0RXZlbnQgPSBXZWJLaXQ6Ondy
YXBFdmVudChldmVudCk7CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fb2JqZWN0LCBtX3Np
Z25hbE5hbWUudXRmOCgpLmRhdGEoKSwgZ29iamVjdEV2ZW50LCAmaGFuZGxlZCk7CiB9CiAKIGJv
b2wgR09iamVjdEV2ZW50TGlzdGVuZXI6Om9wZXJhdG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
QmluZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQmluZGluZy5j
cHAKaW5kZXggYjhmYmRkYS4uYWE0NjEwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTUJpbmRpbmcuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRET01CaW5kaW5nLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkV2ZW50
LmgiCiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJXZWJLaXRET01ET01XaW5kb3dQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NRWxlbWVudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKQEAgLTExOCw0ICsxMTksMzEgQEAgZ3BvaW50ZXIg
a2l0KEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcmV0dXJuIERPTU9iamVjdENhY2hlOjpwdXQoZWxl
bWVudCwgd3JhcHBlZEVsZW1lbnQpOwogfQogCitzdGF0aWMgZ3BvaW50ZXIgd3JhcEV2ZW50VGFy
Z2V0KEV2ZW50VGFyZ2V0KiB0YXJnZXQpCit7CisgICAgQVNTRVJUKHRhcmdldCk7CisKKyAgICBn
cG9pbnRlciB3cmFwcGVkVGFyZ2V0ID0gMDsKKworICAgIGlmICh0YXJnZXQtPnRvTm9kZSgpKSB7
CisgICAgICAgIE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgpOworICAgICAgICB3cmFwcGVk
VGFyZ2V0ID0gd3JhcE5vZGUobm9kZSk7CisgICAgfSBlbHNlIGlmICh0YXJnZXQtPnRvRE9NV2lu
ZG93KCkpIHsKKyAgICAgICAgRE9NV2luZG93KiB3aW5kb3cgPSB0YXJnZXQtPnRvRE9NV2luZG93
KCk7CisgICAgICAgIHdyYXBwZWRUYXJnZXQgPSB3cmFwRE9NV2luZG93KHdpbmRvdyk7CisgICAg
fQorCisgICAgcmV0dXJuIERPTU9iamVjdENhY2hlOjpwdXQodGFyZ2V0LCB3cmFwcGVkVGFyZ2V0
KTsKK30KKworZ3BvaW50ZXIga2l0KFdlYkNvcmU6OkV2ZW50VGFyZ2V0KiBvYmopCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwob2JqLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBE
T01PYmplY3RDYWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByZXR1
cm4gRE9NT2JqZWN0Q2FjaGU6OnB1dChvYmosIFdlYktpdDo6d3JhcEV2ZW50VGFyZ2V0KG9iaikp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NQmluZGluZy5oCmluZGV4IGQyN2JkZGEuLjIzNmM0NTAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01CaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUJpbmRpbmcuaApAQCAtMjksMTEgKzI5LDEzIEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBOb2RlOwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIEV2
ZW50VGFyZ2V0OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGdwb2ludGVyIGtpdChXZWJDb3JlOjpOb2RlKiBub2RlKTsKIGdwb2ludGVyIGtpdChXZWJDb3Jl
OjpFbGVtZW50KiBlbGVtZW50KTsKK2dwb2ludGVyIGtpdChXZWJDb3JlOjpFdmVudFRhcmdldCog
dGFyZ2V0KTsKIAogY2xhc3MgRE9NT2JqZWN0Q2FjaGUgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcCBiL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVhMWUxNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5jcHAKQEAgLTAsMCArMSw1
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMg
ZmlsZSBpcyBkZXJpdmVkIGJ5IGhhbmQgZnJvbSBhbiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBm
aWxlLgorICogS2VlcGluZyBpdCB1cC10by1kYXRlIGNvdWxkIHBvdGVudGlhbGx5IGJlIGRvbmUg
YnkgYWRkaW5nCisgKiBhIG1ha2VfbmFtZXMucGwgZ2VuZXJhdG9yLCBvciBieSB3cml0aW5nIGEg
c2VwYXJhdGUKKyAqIGdlbmVyYXRlciB3aGljaCB0YWtlcyBKU0hUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuaCBhcyBpbnB1dC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0RE9NRXZlbnRUYXJnZXQuaCIKKworI2luY2x1ZGUgIldlYktpdERPTUV2ZW50LmgiCisK
K3R5cGVkZWYgV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSBXZWJLaXRET01FdmVudFRhcmdldElu
dGVyZmFjZTsKK0dfREVGSU5FX0lOVEVSRkFDRShXZWJLaXRET01FdmVudFRhcmdldCwgd2Via2l0
X2RvbV9ldmVudF90YXJnZXQsIEdfVFlQRV9PQkpFQ1QpCisKK3N0YXRpYyB2b2lkCit3ZWJraXRf
ZG9tX2V2ZW50X3RhcmdldF9kZWZhdWx0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSog
aWZhY2UpCit7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV9ldmVudF90YXJnZXRfZGlzcGF0Y2hfZXZl
bnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBH
RXJyb3IqKiBlcnJvcikKK3sKKyAgICBXZWJLaXRET01FdmVudFRhcmdldElmYWNlKiBpZmFjZTsK
KworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19FVkVOVF9UQVJHRVQodGFyZ2V0
KSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX0VWRU5UKGV2ZW50KSk7CisK
KyAgICBpZmFjZSA9IFdFQktJVF9ET01fRVZFTlRfVEFSR0VUX0dFVF9JRkFDRSh0YXJnZXQpOwor
CisgICAgaWYgKGlmYWNlLT5kaXNwYXRjaF9ldmVudCkKKyAgICAgICAgaWZhY2UtPmRpc3BhdGNo
X2V2ZW50KHRhcmdldCwgZXZlbnQsIGVycm9yKTsKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oIGIvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMjA2YWJjNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg
d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAq
LworCisjaWZuZGVmIFdlYktpdERPTUV2ZW50VGFyZ2V0X2gKKyNkZWZpbmUgV2ViS2l0RE9NRXZl
bnRUYXJnZXRfaAorCisjaW5jbHVkZSAid2Via2l0L3dlYmtpdGRvbWRlZmluZXMuaCIKKyNpbmNs
dWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC93ZWJraXRkZWZpbmVzLmg+CisK
K0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBXRUJLSVRfVFlQRV9ET01fRVZFTlRfVEFSR0VUICAg
ICAgICAgICAgKHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2dldF90eXBlICgpKQorI2RlZmluZSBX
RUJLSVRfRE9NX0VWRU5UX1RBUkdFVChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX0VWRU5UX1RBUkdFVCwgV2ViS2l0RE9N
RXZlbnRUYXJnZXQpKQorI2RlZmluZSBXRUJLSVRfRE9NX0VWRU5UX1RBUkdFVF9DTEFTUyhvYmop
ICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgob2JqKSwgV0VCS0lUX1RZUEVfRE9NX0VW
RU5UX1RBUkdFVCwgV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSkpCisjZGVmaW5lIFdFQktJVF9E
T01fSVNfRVZFTlRfVEFSR0VUKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ
UEUgKChvYmopLCBXRUJLSVRfVFlQRV9ET01fRVZFTlRfVEFSR0VUKSkKKyNkZWZpbmUgV0VCS0lU
X0RPTV9FVkVOVF9UQVJHRVRfR0VUX0lGQUNFKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0lO
VEVSRkFDRSAoKG9iaiksIFdFQktJVF9UWVBFX0RPTV9FVkVOVF9UQVJHRVQsIFdlYktpdERPTUV2
ZW50VGFyZ2V0SWZhY2UpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NRXZlbnRUYXJnZXRJ
ZmFjZSBXZWJLaXRET01FdmVudFRhcmdldElmYWNlOworCitzdHJ1Y3QgX1dlYktpdERPTUV2ZW50
VGFyZ2V0SWZhY2UgeworICAgIEdUeXBlSW50ZXJmYWNlIGdJZmFjZTsKKworICAgIC8qIHZpcnR1
YWwgdGFibGUgKi8KKyAgICB2b2lkICAgICAgICAgICgqIGRpc3BhdGNoX2V2ZW50KShXZWJLaXRE
T01FdmVudFRhcmdldCogdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdERPTUV2ZW50KiAgICAgICBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHRXJyb3IqKiAgICAgICAgICAgICAgZXJyb3IpOworfTsKKworCitXRUJL
SVRfQVBJIEdUeXBlICAgICB3ZWJraXRfZG9tX2V2ZW50X3RhcmdldF9nZXRfdHlwZSh2b2lkKSBH
X0dOVUNfQ09OU1Q7CisKK1dFQktJVF9BUEkgdm9pZCAgICAgIHdlYmtpdF9kb21fZXZlbnRfdGFy
Z2V0X2Rpc3BhdGNoX2V2ZW50KFdlYktpdERPTUV2ZW50VGFyZ2V0ICp0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXRET01FdmVudCAgICAgICAqZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAgICAgICoqZXJyb3Ip
OworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogV2ViS2l0RE9NRXZlbnRUYXJnZXRfaCAqLwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0
LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2JqZWN0LnBtCmlu
ZGV4IGMxZmI4NGQuLjFmN2RhNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckdPYmplY3QucG0KQEAgLTI2LDYgKzI2LDggQEAgcGFja2FnZSBDb2RlR2Vu
ZXJhdG9yR09iamVjdDsKIG15ICVpbXBsSW5jbHVkZXMgPSAoKTsKIG15ICVoZHJJbmNsdWRlcyA9
ICgpOwogCitteSAkZGVmaW5lVHlwZU1hY3JvID0gIkdfREVGSU5FX1RZUEUiOworbXkgJGRlZmlu
ZVR5cGVJbnRlcmZhY2VJbXBsZW1lbnRhdGlvbiA9ICIpIjsKIG15IEB0eHRFdmVudExpc3RlbmVy
cyA9ICgpOwogbXkgQHR4dEluc3RhbGxFdmVudExpc3RlbmVycyA9ICgpOwogbXkgQHR4dEluc3Rh
bGxTaWduYWxzID0gKCk7CkBAIC0xOTcsMTAgKzE5OSw2IEBAIHN1YiBTa2lwRnVuY3Rpb24gewog
ICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PnR5cGUgZXEgIkV2ZW50IikgewotICAgICAgICByZXR1cm4gMTsKLSAgICB9Ci0KICAgICBpZiAo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImdldFNWR0RvY3VtZW50IikgewogICAgICAg
ICByZXR1cm4gMTsKICAgICB9CkBAIC0yMTcsNiArMjE1LDcgQEAgc3ViIEdldEdWYWx1ZVR5cGVO
YW1lIHsKICAgICBteSAkdHlwZSA9IHNoaWZ0OwogCiAgICAgbXkgJXR5cGVzID0gKCJET01TdHJp
bmciLCAic3RyaW5nIiwKKyAgICAgICAgICAgICAgICAgIkRPTVRpbWVTdGFtcCIsICJ1aW50IiwK
ICAgICAgICAgICAgICAgICAgImZsb2F0IiwgImZsb2F0IiwKICAgICAgICAgICAgICAgICAgImRv
dWJsZSIsICJkb3VibGUiLAogICAgICAgICAgICAgICAgICAiYm9vbGVhbiIsICJib29sZWFuIiwK
QEAgLTI0MSw2ICsyNDAsNyBAQCBzdWIgR2V0R2xpYlR5cGVOYW1lIHsKICAgICBteSAkbmFtZSA9
IEdldENsYXNzTmFtZSgkdHlwZSk7CiAKICAgICBteSAldHlwZXMgPSAoIkRPTVN0cmluZyIsICJn
Y2hhciogIiwKKyAgICAgICAgICAgICAgICAgIkRPTVRpbWVTdGFtcCIsICJndWludDMyIiwKICAg
ICAgICAgICAgICAgICAgIkNvbXBhcmVIb3ciLCAiZ3VzaG9ydCIsCiAgICAgICAgICAgICAgICAg
ICJmbG9hdCIsICJnZmxvYXQiLAogICAgICAgICAgICAgICAgICAiZG91YmxlIiwgImdkb3VibGUi
LApAQCAtMzE4LDkgKzMxOCw2IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnR5IHsKIAogICAgIG15ICRw
cm9wVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICBteSAke3Byb3BHVHlw
ZX0gPSBkZWNhbWVsaXplKCRwcm9wVHlwZSk7Ci0gICAgaWYgKCRwcm9wR1R5cGUgZXEgImV2ZW50
X3RhcmdldCIpIHsKLSAgICAgICAgJHByb3BHVHlwZSA9ICJldmVudF90YXJnZXRfbm9kZSI7Ci0g
ICAgfQogICAgIG15ICR7dWNQcm9wR1R5cGV9ID0gdWMoJHByb3BHVHlwZSk7CiAKICAgICBteSAk
Z3R5cGUgPSBHZXRHVmFsdWVUeXBlTmFtZSgkcHJvcFR5cGUpOwpAQCAtNDg2LDcgKzQ4Myw3IEBA
IHN1YiBHZW5lcmF0ZUV2ZW50TGlzdGVuZXIgewogICAgICAgICAgICAgICAgICBnX3NpZ25hbF9h
Y2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCiAgICAgICAgICAgICAgICAgIHdlYmtpdF9tYXJz
aGFsX0JPT0xFQU5fX09CSkVDVCwKICAgICAgICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEs
Ci0gICAgICAgICAgICAgICAgIEdfVFlQRV9QT0lOVEVSIHwgR19TSUdOQUxfVFlQRV9TVEFUSUNf
U0NPUEUpOworICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fRVZFTlQgfCBHX1NJR05B
TF9UWVBFX1NUQVRJQ19TQ09QRSk7CiAKIEVPRgogICAgIHB1c2goQHR4dEluc3RhbGxTaWduYWxz
LCAkdHh0SW5zdGFsbFNpZ25hbCk7CkBAIC00OTksNiArNDk2LDcgQEAgRU9GCiBFT0YKICAgICBw
dXNoKEB0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcnMsICR0eHRJbnN0YWxsRXZlbnRMaXN0ZW5lcik7
CiAKKyAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2ViS2l0RE9NRXZlbnQuaCJ9ID0gMTsKICAg
ICAkaW1wbEluY2x1ZGVzeyJHT2JqZWN0RXZlbnRMaXN0ZW5lci5oIn0gPSAxOwogfQogCkBAIC03
NTQsNyArNzUyLDcgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogCiAgICAgZm9yZWFjaCBteSAk
cGFyYW0gKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewogICAgICAgICBteSAkcGFyYW1JRExU
eXBlID0gJHBhcmFtLT50eXBlOwotICAgICAgICBpZiAoJHBhcmFtSURMVHlwZSBlcSAiRXZlbnQi
IHx8ICRwYXJhbUlETFR5cGUgZXEgIkV2ZW50TGlzdGVuZXIiKSB7CisgICAgICAgIGlmICgkcGFy
YW1JRExUeXBlIGVxICJFdmVudExpc3RlbmVyIikgewogICAgICAgICAgICAgcHVzaChAaEJvZHks
ICJcbi8qIFRPRE86IGV2ZW50IGZ1bmN0aW9uICR7ZnVuY3Rpb25OYW1lfSAqL1xuXG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGNCb2R5LCAiXG4vKiBUT0RPOiBldmVudCBmdW5jdGlvbiAke2Z1bmN0
aW9uTmFtZX0gKi9cblxuIik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03ODUsNiArNzgzLDgg
QEAgc3ViIEdlbmVyYXRlRnVuY3Rpb24gewogICAgICAgICBpZiAoJGZ1bmN0aW9uU2lnVHlwZSBu
ZSAiRXZlbnRUYXJnZXQiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJ3ZWJraXQvV2Vi
S2l0RE9NJHtmdW5jdGlvblNpZ1R5cGV9UHJpdmF0ZS5oIn0gPSAxOwogICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3sid2Via2l0L1dlYktpdERPTSR7ZnVuY3Rpb25TaWdUeXBlfS5oIn0gPSAxOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siV2ViS2l0RE9NJHtm
dW5jdGlvblNpZ1R5cGV9LmgifSA9IDE7CiAgICAgICAgIH0KIAogICAgICAgICAkaW1wbEluY2x1
ZGVzeyIke2Z1bmN0aW9uU2lnVHlwZX0uaCJ9ID0gMTsKQEAgLTEwMzcsMTMgKzEwMzcsMTggQEAg
c3ViIEdlbmVyYXRlRnVuY3Rpb25zIHsKIAogc3ViIEdlbmVyYXRlQ0ZpbGUgewogICAgIG15ICgk
b2JqZWN0LCAkaW50ZXJmYWNlTmFtZSwgJHBhcmVudENsYXNzTmFtZSwgJHBhcmVudEdPYmpUeXBl
LCAkZGF0YU5vZGUpID0gQF87CisKKyAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRXZlbnRUYXJnZXQifSkgeworICAgICAgICAkb2JqZWN0LT5HZW5lcmF0ZUV2ZW50VGFy
Z2V0SWZhY2UoJGRhdGFOb2RlKTsKKyAgICB9CisKICAgICBteSAkaW1wbENvbnRlbnQgPSAiIjsK
IAogICAgIG15ICRjbHNDYXBzID0gdWMoRml4VXBEZWNhbWVsaXplZE5hbWUoZGVjYW1lbGl6ZSgk
aW50ZXJmYWNlTmFtZSkpKTsKICAgICBteSAkbG93ZXJDYXNlSWZhY2VOYW1lID0gIndlYmtpdF9k
b21fIiAuIEZpeFVwRGVjYW1lbGl6ZWROYW1lKGRlY2FtZWxpemUoJGludGVyZmFjZU5hbWUpKTsK
IAogICAgICRpbXBsQ29udGVudCA9IDw8ICJFT0YiOwotR19ERUZJTkVfVFlQRSgke2NsYXNzTmFt
ZX0sICR7bG93ZXJDYXNlSWZhY2VOYW1lfSwgJHtwYXJlbnRHT2JqVHlwZX0pCiske2RlZmluZVR5
cGVNYWNyb30oJHtjbGFzc05hbWV9LCAke2xvd2VyQ2FzZUlmYWNlTmFtZX0sICR7cGFyZW50R09i
alR5cGV9JHtkZWZpbmVUeXBlSW50ZXJmYWNlSW1wbGVtZW50YXRpb259CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCkBAIC0xMTY4LDYgKzExNzMsNDQgQEAgc3ViIFVzZXNNYW51YWxLaXRJbXBsZW1l
bnRhdGlvbiB7CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBHZW5lcmF0ZUV2ZW50VGFyZ2V0SWZh
Y2UgeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsK
KworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGRhdGFOb2RlLT5uYW1lOworICAgIG15ICRkZWNh
bWVsaXplID0gRml4VXBEZWNhbWVsaXplZE5hbWUoZGVjYW1lbGl6ZSgkaW50ZXJmYWNlTmFtZSkp
OworCisgICAgJGltcGxJbmNsdWRlc3siV2ViS2l0RE9NRXZlbnRUYXJnZXQuaCJ9ID0gMTsKKyAg
ICAkaW1wbEluY2x1ZGVzeyJXZWJLaXRET01FdmVudFByaXZhdGUuaCJ9ID0gMTsKKworICAgIG15
ICRpbXBsID0gPDwgIkVPRiI7CitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tXyR7ZGVjYW1lbGl6ZX1f
ZGlzcGF0Y2hfZXZlbnQoV2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9NRXZl
bnQqIGV2ZW50LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2
ZW50ID0gV2ViS2l0Ojpjb3JlKGV2ZW50KTsKKyAgICBXZWJDb3JlOjoke2ludGVyZmFjZU5hbWV9
KiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6JHtpbnRlcmZhY2VOYW1lfSo+KFdF
QktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOworCisgICAgV2ViQ29yZTo6RXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgY29yZVRhcmdldC0+ZGlzcGF0Y2hFdmVudChjb3JlRXZl
bnQsIGVjKTsKKyAgICBpZiAoZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURl
c2NyaXB0aW9uIGRlc2NyaXB0aW9uOworICAgICAgICBXZWJDb3JlOjpnZXRFeGNlcHRpb25Db2Rl
RGVzY3JpcHRpb24oZWMsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJh
bChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBkZXNjcmlwdGlvbi5j
b2RlLCBkZXNjcmlwdGlvbi5uYW1lKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9k
b21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZlbnRUYXJnZXRJZmFjZSogaWZhY2UpCit7
CisgICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Via2l0X2RvbV8ke2RlY2FtZWxpemV9X2Rp
c3BhdGNoX2V2ZW50OworfQorCitFT0YKKworICAgIHB1c2goQGNCb2R5LCAkaW1wbCk7CisKKyAg
ICAkZGVmaW5lVHlwZU1hY3JvID0gIkdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIjsKKyAgICAkZGVm
aW5lVHlwZUludGVyZmFjZUltcGxlbWVudGF0aW9uID0gIiwgR19JTVBMRU1FTlRfSU5URVJGQUNF
KFdFQktJVF9UWVBFX0RPTV9FVkVOVF9UQVJHRVQsIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2lu
aXQpKSI7Cit9CisKIHN1YiBHZW5lcmF0ZSB7CiAgICAgbXkgKCRvYmplY3QsICRkYXRhTm9kZSkg
PSBAXzsKIApAQCAtMTIxNyw2ICsxMjYwLDcgQEAgRU9GCiAgICAgJG9iamVjdC0+R2VuZXJhdGVD
RmlsZSgkaW50ZXJmYWNlTmFtZSwgJHBhcmVudENsYXNzTmFtZSwgJHBhcmVudEdPYmpUeXBlLCAk
ZGF0YU5vZGUpOwogICAgICRvYmplY3QtPkdlbmVyYXRlRW5kSGVhZGVyKCk7CiAgICAgJG9iamVj
dC0+R2VuZXJhdGVQcml2YXRlSGVhZGVyKCRkYXRhTm9kZSk7CisKIH0KIAogIyBJbnRlcm5hbCBo
ZWxwZXIKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggNmIwOTEyNS4uZmQ0MDA4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0w
NS0yNSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIHN1cHBvcnQgZm9yIERPTSBl
dmVudHMgaW4gdGhlIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODg0NAorCisgICAgICAgIE1vZGlmeSB0aGUgdGVz
dHMgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBldmVudCBvYmplY3QgYW5kCisgICAgICAg
IHRlc3Qgb25lIGludGVyYWN0aXZlIHNpZ25hbC4KKworICAgICAgICAqIHRlc3RzL3Rlc3Rkb21k
b213aW5kb3cuYzoKKyAgICAgICAgKGRvbV9kb212aWV3X2ZpeHR1cmVfc2V0dXApOgorICAgICAg
ICAoZG9tX2RvbXZpZXdfZml4dHVyZV90ZWFyZG93bik6CisgICAgICAgIChsb2FkZWRDYWxsYmFj
ayk6CisgICAgICAgIChjbGlja2VkQ2FsbGJhY2spOgorICAgICAgICAobWFwX2V2ZW50X2NiKToK
KyAgICAgICAgKGxvYWRfZXZlbnRfY2FsbGJhY2spOgorICAgICAgICAodGVzdF9kb21fZG9tdmll
d19zaWduYWxzKToKKwogMjAxMC0wNS0xMSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3Rkb21kb213aW5kb3cuYyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRv
bWRvbXdpbmRvdy5jCmluZGV4IGFjNjk1ODcuLjE3OTYwNTcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGRvbWRvbXdpbmRvdy5jCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdGRv
bWRvbXdpbmRvdy5jCkBAIC0zMCw5ICszMCwxMyBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAg
R3RrV2lkZ2V0KiB3ZWJWaWV3OworICAgIEd0a1dpZGdldCogd2luZG93OworICAgIFdlYktpdERP
TURPTVdpbmRvdyogZG9tV2luZG93OwogICAgIEdNYWluTG9vcCogbG9vcDsKIAotICAgIGd1aW50
IGNvdW50ZXI7CisgICAgZ2Jvb2xlYW4gbG9hZGVkOworICAgIGdib29sZWFuIGNsaWNrZWQ7Cisg
ICAgZ2NvbnN0cG9pbnRlciBkYXRhOwogfSBEb21Eb212aWV3Rml4dHVyZTsKIAogc3RhdGljIGdi
b29sZWFuIGZpbmlzaF9sb2FkaW5nKERvbURvbXZpZXdGaXh0dXJlKiBmaXh0dXJlKQpAQCAtNDYs
MzEgKzUwLDY5IEBAIHN0YXRpYyBnYm9vbGVhbiBmaW5pc2hfbG9hZGluZyhEb21Eb212aWV3Rml4
dHVyZSogZml4dHVyZSkKIHN0YXRpYyB2b2lkIGRvbV9kb212aWV3X2ZpeHR1cmVfc2V0dXAoRG9t
RG9tdmlld0ZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKIHsKICAgICBmaXh0
dXJlLT5sb29wID0gZ19tYWluX2xvb3BfbmV3KE5VTEwsIFRSVUUpOworICAgIGZpeHR1cmUtPndp
bmRvdyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfVE9QTEVWRUwpOwogICAgIGZpeHR1cmUt
PndlYlZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7Ci0gICAgZml4dHVyZS0+Y291bnRlciA9
IDA7Ci0gICAgZ19vYmplY3RfcmVmX3NpbmsoZml4dHVyZS0+d2ViVmlldyk7CisgICAgZml4dHVy
ZS0+ZGF0YSA9IGRhdGE7CiAKLSAgICBpZiAoZGF0YSAhPSBOVUxMKQotICAgICAgICB3ZWJraXRf
d2ViX3ZpZXdfbG9hZF9zdHJpbmcoV0VCS0lUX1dFQl9WSUVXIChmaXh0dXJlLT53ZWJWaWV3KSwg
KGNvbnN0IGNoYXIqKSBkYXRhLCBOVUxMLCBOVUxMLCBOVUxMKTsKLQotICAgIGdfaWRsZV9hZGQo
KEdTb3VyY2VGdW5jKWZpbmlzaF9sb2FkaW5nLCBmaXh0dXJlKTsKLSAgICBnX21haW5fbG9vcF9y
dW4oZml4dHVyZS0+bG9vcCk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihm
aXh0dXJlLT53aW5kb3cpLCBHVEtfV0lER0VUKGZpeHR1cmUtPndlYlZpZXcpKTsKIH0KIAogc3Rh
dGljIHZvaWQgZG9tX2RvbXZpZXdfZml4dHVyZV90ZWFyZG93bihEb21Eb212aWV3Rml4dHVyZSog
Zml4dHVyZSwgZ2NvbnN0cG9pbnRlciBkYXRhKQogewotICAgIGdfb2JqZWN0X3VucmVmKGZpeHR1
cmUtPndlYlZpZXcpOworICAgIGd0a193aWRnZXRfZGVzdHJveShmaXh0dXJlLT53aW5kb3cpOwog
ICAgIGdfbWFpbl9sb29wX3VucmVmKGZpeHR1cmUtPmxvb3ApOwogfQogCi1zdGF0aWMgZ2Jvb2xl
YW4gZXZlbnRDYWxsYmFjayhXZWJLaXRET01ET01XaW5kb3cqIHZpZXcsIGdwb2ludGVyIGV2ZW50
LCBEb21Eb212aWV3Rml4dHVyZSogZml4dHVyZSkKK3N0YXRpYyBnYm9vbGVhbiBsb2FkZWRDYWxs
YmFjayhXZWJLaXRET01ET01XaW5kb3cqIHZpZXcsIFdlYktpdERPTUV2ZW50KiBldmVudCwgRG9t
RG9tdmlld0ZpeHR1cmUqIGZpeHR1cmUpCiB7Ci0gICAgZ19hc3NlcnQoZml4dHVyZS0+Y291bnRl
ciA9PSAwKTsKLSAgICBmaXh0dXJlLT5jb3VudGVyKys7CisgICAgZ19hc3NlcnQoZml4dHVyZS0+
bG9hZGVkID09IEZBTFNFKTsKKyAgICBmaXh0dXJlLT5sb2FkZWQgPSBUUlVFOwogCiAgICAgcmV0
dXJuIEZBTFNFOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gY2xpY2tlZENhbGxiYWNrKFdlYktpdERP
TURPTVdpbmRvdyogdmlldywgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBEb21Eb212aWV3Rml4dHVy
ZSogZml4dHVyZSkKK3sKKyAgICBXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0OworICAgIGd1
c2hvcnQgcGhhc2U7CisKKyAgICBnX2Fzc2VydChldmVudCk7CisgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19FVkVOVChldmVudCkpOworCisgICAgLy8gV2Ugc2hvdWxkIGNhdGNoIHRoaXMgaW4g
dGhlIGJ1YmJsaW5nIHVwIHBoYXNlLCBzaW5jZSB3ZSBhcmUgY29ubmVjdGluZyB0byB0aGUgdG9w
bGV2ZWwgb2JqZWN0CisgICAgcGhhc2UgPSB3ZWJraXRfZG9tX2V2ZW50X2dldF9ldmVudF9waGFz
ZShldmVudCk7CisgICAgZ19hc3NlcnRfY21waW50KHBoYXNlLCA9PSwgMyk7CisKKyAgICB0YXJn
ZXQgPSB3ZWJraXRfZG9tX2V2ZW50X2dldF9jdXJyZW50X3RhcmdldChldmVudCk7CisgICAgZ19h
c3NlcnQodGFyZ2V0ID09IFdFQktJVF9ET01fRVZFTlRfVEFSR0VUKHZpZXcpKTsKKworICAgIGdf
YXNzZXJ0KGZpeHR1cmUtPmNsaWNrZWQgPT0gRkFMU0UpOworICAgIGZpeHR1cmUtPmNsaWNrZWQg
PSBUUlVFOworCisgICAgZmluaXNoX2xvYWRpbmcoZml4dHVyZSk7CisKKyAgICByZXR1cm4gRkFM
U0U7Cit9CisKK2dib29sZWFuIG1hcF9ldmVudF9jYihHdGtXaWRnZXQgKndpZGdldCwgR2RrRXZl
bnQqIGV2ZW50LCBEb21Eb212aWV3Rml4dHVyZSogZml4dHVyZSkKK3sKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF9zdHJpbmcoV0VCS0lUX1dFQl9WSUVXIChmaXh0dXJlLT53ZWJWaWV3KSwgKGNv
bnN0IGNoYXIqKWZpeHR1cmUtPmRhdGEsIE5VTEwsIE5VTEwsIE5VTEwpOworCisgICAgcmV0dXJu
IEZBTFNFOworfQorCitzdGF0aWMgdm9pZCBsb2FkX2V2ZW50X2NhbGxiYWNrKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEdQYXJhbVNwZWMqIHNwZWMsIERvbURvbXZpZXdGaXh0dXJlKiBmaXh0dXJl
KQoreworICAgIFdlYktpdExvYWRTdGF0dXMgc3RhdHVzID0gd2Via2l0X3dlYl92aWV3X2dldF9s
b2FkX3N0YXR1cyh3ZWJWaWV3KTsKKyAgICBpZiAoc3RhdHVzID09IFdFQktJVF9MT0FEX0ZJTklT
SEVEKSB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QoZml4dHVyZS0+ZG9tV2luZG93LCAiY2xp
Y2stZXZlbnQiLCBHX0NBTExCQUNLKGNsaWNrZWRDYWxsYmFjayksIGZpeHR1cmUpOworCisgICAg
ICAgIGdfYXNzZXJ0KGZpeHR1cmUtPmNsaWNrZWQgPT0gRkFMU0UpOworICAgICAgICBndGtfdGVz
dF93aWRnZXRfY2xpY2sgKEdUS19XSURHRVQoZml4dHVyZS0+d2ViVmlldyksIDEsIDApOworICAg
IH0KKworfQorCiBzdGF0aWMgdm9pZCB0ZXN0X2RvbV9kb212aWV3X3NpZ25hbHMoRG9tRG9tdmll
d0ZpeHR1cmUqIGZpeHR1cmUsIGdjb25zdHBvaW50ZXIgZGF0YSkKIHsKICAgICBnX2Fzc2VydChm
aXh0dXJlKTsKQEAgLTc4LDEwICsxMjAsMjIgQEAgc3RhdGljIHZvaWQgdGVzdF9kb21fZG9tdmll
d19zaWduYWxzKERvbURvbXZpZXdGaXh0dXJlKiBmaXh0dXJlLCBnY29uc3Rwb2ludGVyIGQKICAg
ICBnX2Fzc2VydCh2aWV3KTsKICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2RvbV9kb2N1bWVudCh2aWV3KTsKICAgICBnX2Fzc2VydChkb2N1bWVu
dCk7Ci0gICAgV2ViS2l0RE9NRE9NV2luZG93KiB3aW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50
X2dldF9kZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOwotICAgIGdfYXNzZXJ0KHdpbmRvdyk7CisgICAg
V2ViS2l0RE9NRE9NV2luZG93KiBkb21XaW5kb3cgPSB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF9k
ZWZhdWx0X3ZpZXcoZG9jdW1lbnQpOworICAgIGdfYXNzZXJ0KGRvbVdpbmRvdyk7CisKKyAgICBm
aXh0dXJlLT5kb21XaW5kb3cgPSBkb21XaW5kb3c7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0KGZp
eHR1cmUtPmRvbVdpbmRvdywgImxvYWQtZXZlbnQiLCBHX0NBTExCQUNLKGxvYWRlZENhbGxiYWNr
KSwgZml4dHVyZSk7CisgICAgZ19zaWduYWxfY29ubmVjdChmaXh0dXJlLT53aW5kb3csICJtYXAt
ZXZlbnQiLCBHX0NBTExCQUNLKG1hcF9ldmVudF9jYiksIGZpeHR1cmUpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QoZml4dHVyZS0+d2ViVmlldywgIm5vdGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NBTExC
QUNLKGxvYWRfZXZlbnRfY2FsbGJhY2spLCBmaXh0dXJlKTsKKworICAgIGd0a193aWRnZXRfc2hv
d19hbGwoZml4dHVyZS0+d2luZG93KTsKKyAgICBndGtfd2luZG93X3ByZXNlbnQoR1RLX1dJTkRP
VyhmaXh0dXJlLT53aW5kb3cpKTsKKworICAgIGdfbWFpbl9sb29wX3J1biAoZml4dHVyZS0+bG9v
cCk7CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdywgImxvYWQtZXZlbnQiLCBHX0NBTExC
QUNLKGV2ZW50Q2FsbGJhY2spLCBmaXh0dXJlKTsKKyAgICBnX2Fzc2VydChmaXh0dXJlLT5sb2Fk
ZWQpOworICAgIGdfYXNzZXJ0KGZpeHR1cmUtPmNsaWNrZWQpOwogfQogCiBpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCi0tIAoxLjYuNi4xCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>