<?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>99011</bug_id>
          
          <creation_ts>2012-10-11 01:12:33 -0700</creation_ts>
          <short_desc>[EFL][GTK]Sharing accessibility support in WebKitTestRunner</short_desc>
          <delta_ts>2012-11-20 02:25:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>99156</dependson>
          <blocked>98895</blocked>
    
    <blocked>100757</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mateusz Leszko">m.leszko</reporter>
          <assigned_to name="Mateusz Leszko">m.leszko</assigned_to>
          <cc>apinheiro</cc>
    
    <cc>cgarcia</cc>
    
    <cc>g.czajkowski</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mario</cc>
    
    <cc>m.leszko</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>739690</commentid>
    <comment_count>0</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-10-11 01:12:33 -0700</bug_when>
    <thetext>Extending WebKitTestRunner by adding classes needed to support WAI-ARIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748520</commentid>
    <comment_count>1</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-10-23 05:12:06 -0700</bug_when>
    <thetext>WebKit-EFL implementation seems to be similar to WebKit-GTK. To eliminate code duplication I propose to share those in one directory, like
./Tools/WebKitTestRunner/InjectionBundle/a11y
Core implementation should be common and any differences should be dealed with platform specific macros.

I propose to move implementation from 
./Tools/WebKitTestRunner/InjectionBundle/gtk/Accessiblity*
to
./Tools/WebKitTestRunner/InjectionBundle/a11y/Accessiblity*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754127</commentid>
    <comment_count>2</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-10-30 02:45:03 -0700</bug_when>
    <thetext>Due to depend bug 99578 I think &quot;atk&quot; folder name would be better. The question is what with other files from folders gtk and efl:
ActivateFontsGtk.cpp
InjectedBundleGtk.cpp
TestRunnerGtk.cpp

We can left it where it is or create:
atk/efl
atk/gtk
folders. Which is better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755444</commentid>
    <comment_count>3</comment_count>
      <attachid>171683</attachid>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-10-31 10:33:58 -0700</bug_when>
    <thetext>Created attachment 171683
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761456</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-11-08 01:15:52 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Due to depend bug 99578 I think &quot;atk&quot; folder name would be better. The question is what with other files from folders gtk and efl:
&gt; ActivateFontsGtk.cpp
&gt; InjectedBundleGtk.cpp
&gt; TestRunnerGtk.cpp
&gt; 
&gt; We can left it where it is or create:
&gt; atk/efl
&gt; atk/gtk
&gt; folders. Which is better?

Those files are more general than AccessibilityUIElement and AccessibilityController (they are not related to accessibility) and so I don&apos;t think putting them under and atk/ path would make sense.

So, I think the approach you&apos;re following in the current patch is the right one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765442</commentid>
    <comment_count>5</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-13 03:15:12 -0800</bug_when>
    <thetext>I&apos;ve compared LayoutTest results, and before and after patch results are the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766868</commentid>
    <comment_count>6</comment_count>
      <attachid>171683</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-11-14 07:17:26 -0800</bug_when>
    <thetext>Comment on attachment 171683
patch

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

&gt; Tools/ChangeLog:3
&gt; +        [EFL] Adding accessibility support for WebKitTestRunner

Generally, this title should be the same as bugzilla&apos;s one.

&gt; Tools/ChangeLog:11
&gt; +        (WTR):

If there are no changes in below methods I think we can omit them. The implementation has been just moved. Please leave only those ChangeLogs entries:
* WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityControllerGtk.cpp.
* WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767937</commentid>
    <comment_count>7</comment_count>
      <attachid>171683</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-11-15 04:17:51 -0800</bug_when>
    <thetext>Comment on attachment 171683
patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:111
&gt; +    m_stateChangeListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:state-change&quot;);
&gt; +    m_focusEventListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:focus-event&quot;);
&gt; +    m_activeDescendantChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:active-descendant-changed&quot;);
&gt; +    m_childrenChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:children-changed&quot;);
&gt; +    m_propertyChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:property-change&quot;);
&gt; +    m_visibleDataChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:visible-data-changed&quot;);

I think we should stop using the &quot;Gtk&quot; namespace in this lines and replace it with &quot;Atk&quot; or &quot;ATK&quot;, which is what it&apos;s recommended in the ATK documentation (see [1]). We probably have already avoided using &quot;Gtk&quot; in the first place (I think we did it following the example of other implementations, IIRC).

This change would not impact functionality and would be more coherent with the intention of writing a Gtk independent implementation of AccessibilityUIElement.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:34
&gt; +#include &lt;gtk/gtk.h&gt;

We probably could/should get rid of this include here. I guess.


[1] http://developer.gnome.org/atk/stable/AtkUtil.html#atk-add-global-event-listener</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769064</commentid>
    <comment_count>8</comment_count>
      <attachid>171683</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-11-16 03:22:50 -0800</bug_when>
    <thetext>Comment on attachment 171683
patch

Clearing the review flag regarding to the comments (comment 6, comment 7).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769068</commentid>
    <comment_count>9</comment_count>
      <attachid>174636</attachid>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-16 03:31:01 -0800</bug_when>
    <thetext>Created attachment 174636
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769070</commentid>
    <comment_count>10</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-16 03:31:35 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 171683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171683&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:3
&gt; &gt; +        [EFL] Adding accessibility support for WebKitTestRunner
&gt; 
&gt; Generally, this title should be the same as bugzilla&apos;s one.
fixed
&gt; 
&gt; &gt; Tools/ChangeLog:11
&gt; &gt; +        (WTR):
&gt; 
&gt; If there are no changes in below methods I think we can omit them. The implementation has been just moved. Please leave only those ChangeLogs entries:
&gt; * WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityControllerGtk.cpp.
&gt; * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp.
fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769074</commentid>
    <comment_count>11</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-16 03:34:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 171683 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171683&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:111
&gt; &gt; +    m_stateChangeListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:state-change&quot;);
&gt; &gt; +    m_focusEventListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:focus-event&quot;);
&gt; &gt; +    m_activeDescendantChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:active-descendant-changed&quot;);
&gt; &gt; +    m_childrenChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:children-changed&quot;);
&gt; &gt; +    m_propertyChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:property-change&quot;);
&gt; &gt; +    m_visibleDataChangedListenerId = atk_add_global_event_listener(axObjectEventListener, &quot;Gtk:AtkObject:visible-data-changed&quot;);
&gt; 
&gt; I think we should stop using the &quot;Gtk&quot; namespace in this lines and replace it with &quot;Atk&quot; or &quot;ATK&quot;, which is what it&apos;s recommended in the ATK documentation (see [1]). We probably have already avoided using &quot;Gtk&quot; in the first place (I think we did it following the example of other implementations, IIRC).
&gt; 
&gt; This change would not impact functionality and would be more coherent with the intention of writing a Gtk independent implementation of AccessibilityUIElement.
fixed
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:34
&gt; &gt; +#include &lt;gtk/gtk.h&gt;
&gt; 
&gt; We probably could/should get rid of this include here. I guess.
not &quot;build-breaking&quot; after remove so I removed it, as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769109</commentid>
    <comment_count>12</comment_count>
      <attachid>174636</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-11-16 04:27:36 -0800</bug_when>
    <thetext>Comment on attachment 174636
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.

It looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769135</commentid>
    <comment_count>13</comment_count>
      <attachid>174636</attachid>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-11-16 05:07:50 -0800</bug_when>
    <thetext>Comment on attachment 174636
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.

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

&gt; Tools/WebKitTestRunner/GNUmakefile.am:97
&gt; +        Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp \

Please fix spaces before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769853</commentid>
    <comment_count>14</comment_count>
      <attachid>174636</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-16 19:22:55 -0800</bug_when>
    <thetext>Comment on attachment 174636
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.

Attachment 174636 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14868407

New failing tests:
inspector-protocol/nmi-webaudio.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770472</commentid>
    <comment_count>15</comment_count>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-19 01:29:23 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 174636 [details])
&gt; Attachment 174636 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/14868407
&gt; 
&gt; New failing tests:
&gt; inspector-protocol/nmi-webaudio.html
This test is not connected with the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770690</commentid>
    <comment_count>16</comment_count>
    <who name="Grzegorz Czajkowski">g.czajkowski</who>
    <bug_when>2012-11-19 06:50:33 -0800</bug_when>
    <thetext>CC&apos;ing reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771670</commentid>
    <comment_count>17</comment_count>
      <attachid>175173</attachid>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-20 01:50:19 -0800</bug_when>
    <thetext>Created attachment 175173
 Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771677</commentid>
    <comment_count>18</comment_count>
      <attachid>175174</attachid>
    <who name="Mateusz Leszko">m.leszko</who>
    <bug_when>2012-11-20 02:03:21 -0800</bug_when>
    <thetext>Created attachment 175174
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771689</commentid>
    <comment_count>19</comment_count>
      <attachid>175174</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 02:25:10 -0800</bug_when>
    <thetext>Comment on attachment 175174
Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.

Clearing flags on attachment: 175174

Committed r135267: &lt;http://trac.webkit.org/changeset/135267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771690</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 02:25:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171683</attachid>
            <date>2012-10-31 10:33:58 -0700</date>
            <delta_ts>2012-11-16 03:31:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>atch-[20121030]-[m.leszko@samsung.com]-[EFL]Adding accessibility support for WebKitTestRunner].patch</filename>
            <type>text/plain</type>
            <size>76884</size>
            <attacher name="Mateusz Leszko">m.leszko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmZWNj
ZTA0Li5mODExMDJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQ4IEBACisyMDEyLTEwLTMwICBNYXRldXN6IExlc3prbyAgPG0u
bGVzemtvQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtFRkxdIEFkZGluZyBhY2Nlc3NpYmlsaXR5
IHN1cHBvcnQgZm9yIFdlYktpdFRlc3RSdW5uZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk5MDExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzaWJpbGl0eSBmaWxlcyBmcm9tIGd0ayBmb2xkZXIg
YXJlIG1vdmVkIHRvIGF0ayBmb2xkZXIgZHVlIHRvIGNvbW1vbiBpbXBsZW1lbnRhdGlvbi4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyQXRrLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcC4KKyAgICAg
ICAgKFdUUik6CisgICAgICAgIChXVFI6OnByaW50QWNjZXNzaWJpbGl0eUV2ZW50KToKKyAgICAg
ICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcC4KKyAgICAgICAgKFdUUik6
CisgICAgICAgIChXVFI6OmF0dHJpYnV0ZVNldFRvU3RyaW5nKToKKyAgICAgICAgKFdUUjo6Y2hl
Y2tFbGVtZW50U3RhdGUpOgorICAgICAgICAoV1RSOjppbmRleFJhbmdlSW5UYWJsZSk6CisgICAg
ICAgIChXVFI6OmFsdGVyQ3VycmVudFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3NpYmlsaXR5VUlFbGVtZW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFcXVhbCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEF0UG9pbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXJpYU93bnNFbGVtZW50QXRJbmRleCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dBdEluZGV4KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVuQ291
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFJvd0F0
SW5kZXgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxl
bWVudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1l
bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9zZWRCeVJv
dyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkxp
bmtlZFVJRWxlbWVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6YXR0cmlidXRlc09mQ2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQXR0cmlidXRlU3VwcG9ydGVk
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyYW1ldGVyaXplZEF0
dHJpYnV0ZU5hbWVzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZSk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6Omxhbmd1YWdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aGVscFRleHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eSk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGVpZ2h0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2xpY2tQb2ludFgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjbGlja1BvaW50WSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmludFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFs
dWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVO
dW1iZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0FjdGlvblN1
cHBvcnRlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxl
ZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGVkKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3BlYWspOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhSXNHcmFiYmVkKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYURyb3BFZmZlY3RzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bGluZUZvckluZGV4KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmFuZ2VGb3JMaW5lKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cmFuZ2VGb3JQb3NpdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmJvdW5kc0ZvclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc01pc3NwZWxsZWQpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5I
ZWFkZXJzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mUm93SGVhZGVycyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkNvbHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphdHRyaWJ1dGVzT2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YXR0cmlidXRlc09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6cm93Q291bnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpjb2x1bW5Db3VudCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmluZGV4SW5UYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnJvd0luZGV4UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5JbmRleFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y2VsbEZvckNvbHVtbkFuZFJvdyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Omhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjppbmNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZWNyZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzaG93TWVudSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBy
ZXNzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2VsZWN0ZWRD
aGlsZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxp
dHlWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50
RW5jb2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVu
dFVSSSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVy
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0
aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzYWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0
YWJsZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxl
Y3RhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNWaXNpYmxl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPZmZTY3JlZW4pOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NvbGxhcHNlZCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSWdub3JlZCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFkZFNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VMZW5ndGgpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdU
Ujo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorCiAyMDEy
LTEwLTI5ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAK
ICAgICAgICAgW1dLMl1bV0tUUl0gRW5hYmxlIFNoYWRvdyBET00gYXQgcnVudGltZSBpZiBjb21w
aWxlZCB3aXRoIFNIQURPV19ET00gc3VwcG9ydApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZp
bGUuYW0KaW5kZXggYThhMmZhZC4uYWZlNTU2OSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtCkBAIC0xMDEsOCArMTAxLDggQEAgTGlicmFyaWVzX2xpYlRlc3RSdW5uZXJJbmpl
Y3RlZEJ1bmRsZV9sYV9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmggXAotCVRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcCBc
Ci0JVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudEd0ay5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAg
XAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9u
dHNHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9J
bmplY3RlZEJ1bmRsZUd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44
OGJmNGY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCkBAIC0wLDAgKzEsMTUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlIDxh
dGsvYXRrLmg+CisjaW5jbHVkZSA8Y3N0ZGlvPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBX
VFIgeworCitzdGF0aWMgdm9pZCBwcmludEFjY2Vzc2liaWxpdHlFdmVudChBdGtPYmplY3QqIGFj
Y2Vzc2libGUsIGNvbnN0IGdjaGFyKiBzaWduYWxOYW1lLCBjb25zdCBnY2hhciogc2lnbmFsVmFs
dWUpCit7CisgICAgLy8gRG8gbm90IGhhbmRsZSBzdGF0ZS1jaGFuZ2U6ZGVmdW5jdCBzaWduYWxz
LCBhcyB0aGUgQXRrT2JqZWN0CisgICAgLy8gYXNzb2NpYXRlZCB0byB0aGVtIHdpbGwgbm90IGJl
IHZhbGlkIGF0IHRoaXMgcG9pbnQgYWxyZWFkeS4KKyAgICBpZiAoIXNpZ25hbE5hbWUgfHwgIWdf
c3RyY21wMChzaWduYWxOYW1lLCAic3RhdGUtY2hhbmdlOmRlZnVuY3QiKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBnY2hhciogb2JqZWN0TmFtZSA9IGF0a19v
YmplY3RfZ2V0X25hbWUoYWNjZXNzaWJsZSk7CisgICAgQXRrUm9sZSBvYmplY3RSb2xlID0gYXRr
X29iamVjdF9nZXRfcm9sZShhY2Nlc3NpYmxlKTsKKworICAgIC8vIFRyeSB0byBhbHdheXMgcHJv
dmlkZSBhIG5hbWUgdG8gYmUgbG9nZ2VkIGZvciB0aGUgb2JqZWN0LgorICAgIGlmICghb2JqZWN0
TmFtZSB8fCAqb2JqZWN0TmFtZSA9PSAnXDAnKQorICAgICAgICBvYmplY3ROYW1lID0gIihObyBu
YW1lKSI7CisKKyAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFs
dWUgPyBnX3N0cmR1cF9wcmludGYoIiVzID0gJXMiLCBzaWduYWxOYW1lLCBzaWduYWxWYWx1ZSkg
OiBnX3N0cmR1cChzaWduYWxOYW1lKSk7CisgICAgR093blB0cjxnY2hhcj4gYWNjZXNzaWJpbGl0
eUV2ZW50U3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiQWNjZXNzaWJpbGl0eSBvYmplY3QgZW1pdHRl
ZCBcIiVzXCIgLyBOYW1lOiBcIiVzXCIgLyBSb2xlOiAlZFxuIiwgc2lnbmFsTmFtZUFuZFZhbHVl
LmdldCgpLCBvYmplY3ROYW1lLCBvYmplY3RSb2xlKSk7CisgICAgSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZy5n
ZXQoKSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25h
bEludm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBndWludCBudW1QYXJhbVZhbHVlcywgY29uc3Qg
R1ZhbHVlICpwYXJhbVZhbHVlcywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICAvLyBBdCBsZWFzdCB3
ZSBzaG91bGQgcmVjZWl2ZSB0aGUgaW5zdGFuY2UgZW1pdHRpbmcgdGhlIHNpZ25hbC4KKyAgICBp
ZiAobnVtUGFyYW1WYWx1ZXMgPCAxKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIEF0a09i
amVjdCogYWNjZXNzaWJsZSA9IEFUS19PQkpFQ1QoZ192YWx1ZV9nZXRfb2JqZWN0KCZwYXJhbVZh
bHVlc1swXSkpOworICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3Np
YmxlKSkKKyAgICAgICAgcmV0dXJuIFRSVUU7CisKKyAgICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVl
cnk7CisgICAgR093blB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKKyAgICBHT3duUHRyPGdjaGFyPiBz
aWduYWxWYWx1ZTsKKworICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwg
JnNpZ25hbFF1ZXJ5KTsKKworICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lLCAic3RhdGUtY2hhbmdlIikpIHsKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBf
cHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVz
WzFdKSkpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdf
dmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOworICAgIH0gZWxzZSBpZiAoIWdf
c3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50IikpIHsKKyAgICAg
ICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOworICAgICAgICBzaWdu
YWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBh
cmFtVmFsdWVzWzFdKSkpOworICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5z
aWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgeworICAgICAgICBzaWduYWxOYW1lLnNl
dChnX3N0cmR1cCgiY2hpbGRyZW4tY2hhbmdlZCIpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUuc2V0
KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50KCZwYXJhbVZhbHVlc1sxXSkp
KTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJw
cm9wZXJ0eS1jaGFuZ2UiKSkKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRh
aWwpKSk7CisgICAgZWxzZQorICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxR
dWVyeS5zaWduYWxfbmFtZSkpOworCisgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNz
aWJsZSwgc2lnbmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOworCisgICAgcmV0dXJu
IFRSVUU7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxp
dHlFdmVudHMoKQoreworICAgIC8vIEVuc3VyZSBubyBjYWxsYmFja3MgYXJlIGNvbm5lY3RlZCBi
ZWZvcmUuCisgICAgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOworCisgICAgLy8gRW5zdXJlIHRo
YXQgYWNjZXNzaWJpbGl0eSBpcyBpbml0aWFsaXplZCBmb3IgdGhlIFdlYlZpZXcgYnkgcXVlcnlp
bmcgZm9yCisgICAgLy8gdGhlIHJvb3QgYWNjZXNzaWJsZSBvYmplY3QsIHdoaWNoIHdpbGwgY3Jl
YXRlIHRoZSBmdWxsIGhpZXJhcmNoeS4KKyAgICByb290RWxlbWVudCgpOworCisgICAgLy8gQWRk
IGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0a09iamVjdCdzIHNpZ25hbHMuCisgICAgbV9zdGF0ZUNo
YW5nZUxpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2
ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OnN0YXRlLWNoYW5nZSIpOworICAgIG1fZm9jdXNF
dmVudExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2
ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OmZvY3VzLWV2ZW50Iik7CisgICAgbV9hY3RpdmVE
ZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5l
cihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OmFjdGl2ZS1kZXNjZW5kYW50
LWNoYW5nZWQiKTsKKyAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0
OmNoaWxkcmVuLWNoYW5nZWQiKTsKKyAgICBtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSBh
dGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6
QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOworICAgIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0
ZW5lciwgIkd0azpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsKKworICAgIC8vIEVu
c3VyZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCisg
ICAgLy8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBoYW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVn
aXN0ZXJlZC4KKyAgICBHT2JqZWN0KiBkdW1teUF4T2JqZWN0ID0gR19PQkpFQ1QoZ19vYmplY3Rf
bmV3KEFUS19UWVBFX09CSkVDVCwgMCkpOworICAgIEF0a09iamVjdCogZHVtbXlOb09wQXhPYmpl
Y3QgPSBhdGtfbm9fb3Bfb2JqZWN0X25ldyhkdW1teUF4T2JqZWN0KTsKKyAgICBnX29iamVjdF91
bnJlZihHX09CSkVDVChkdW1teU5vT3BBeE9iamVjdCkpOworICAgIGdfb2JqZWN0X3VucmVmKGR1
bW15QXhPYmplY3QpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRv
Q29uc2lzdGVudFN0YXRlKCkKK3sKKyAgICAvLyBBdGtPYmplY3Qgc2lnbmFscy4KKyAgICBpZiAo
bV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZl
bnRfbGlzdGVuZXIobV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQpOworICAgICAgICBtX3N0YXRlQ2hh
bmdlTGlzdGVuZXJJZCA9IDA7CisgICAgfQorICAgIGlmIChtX2ZvY3VzRXZlbnRMaXN0ZW5lcklk
KSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fZm9jdXNFdmVu
dExpc3RlbmVySWQpOworICAgICAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkID0gMDsKKyAgICB9
CisgICAgaWYgKG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAg
IGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fYWN0aXZlRGVzY2VuZGFudENoYW5n
ZWRMaXN0ZW5lcklkKTsKKyAgICAgICAgbV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVy
SWQgPSAwOworICAgIH0KKyAgICBpZiAobV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7Cisg
ICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fY2hpbGRyZW5DaGFuZ2Vk
TGlzdGVuZXJJZCk7CisgICAgICAgIG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Cisg
ICAgfQorICAgIGlmIChtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQpIHsKKyAgICAgICAgYXRr
X3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklk
KTsKKyAgICAgICAgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAg
aWYgKG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCkgeworICAgICAgICBhdGtfcmVtb3Zl
X2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQpOwor
ICAgICAgICBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSAwOworICAgIH0KK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZWVmMzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMCwwICsxLDk3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVQYWdlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdS
ZWYuaD4KKyNpbmNsdWRlIDxhdGsvYXRrLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdUUiB7CisKK3N0
YXRpYyBnY2hhciogYXR0cmlidXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1
dGVTZXQpCit7CisgICAgR1N0cmluZyogc3RyID0gZ19zdHJpbmdfbmV3KDApOworICAgIGZvciAo
R1NMaXN0KiBhdHRyaWJ1dGVzID0gYXR0cmlidXRlU2V0OyBhdHRyaWJ1dGVzOyBhdHRyaWJ1dGVz
ID0gYXR0cmlidXRlcy0+bmV4dCkgeworICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9
IHN0YXRpY19jYXN0PEF0a0F0dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBH
T3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGdfc3RyY29uY2F0KGF0dHJpYnV0ZS0+bmFtZSwg
IjoiLCBhdHRyaWJ1dGUtPnZhbHVlLCBOVUxMKSk7CisgICAgICAgIGdfc3RyaW5nX2FwcGVuZChz
dHIsIGF0dHJpYnV0ZURhdGEuZ2V0KCkpOworICAgICAgICBpZiAoYXR0cmlidXRlcy0+bmV4dCkK
KyAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZChzdHIsICIsICIpOworICAgIH0KKworICAgIHJl
dHVybiBnX3N0cmluZ19mcmVlKHN0ciwgRkFMU0UpOworfQorCitzdGF0aWMgYm9vbCBjaGVja0Vs
ZW1lbnRTdGF0ZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBBdGtTdGF0ZVR5cGUgc3RhdGVU
eXBlKQoreworICAgIGlmICghQVRLX0lTX09CSkVDVChlbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgR1JlZlB0cjxBdGtTdGF0ZVNldD4gc3RhdGVTZXQgPSBhZG9wdEdSZWYo
YXRrX29iamVjdF9yZWZfc3RhdGVfc2V0KEFUS19PQkpFQ1QoZWxlbWVudCkpKTsKKyAgICByZXR1
cm4gYXRrX3N0YXRlX3NldF9jb250YWluc19zdGF0ZShzdGF0ZVNldC5nZXQoKSwgc3RhdGVUeXBl
KTsKK30KKworc3RhdGljIEpTU3RyaW5nUmVmIGluZGV4UmFuZ2VJblRhYmxlKFBsYXRmb3JtVUlF
bGVtZW50IGVsZW1lbnQsIGJvb2wgaXNSb3dSYW5nZSkKK3sKKyAgICBHT3duUHRyPGdjaGFyPiBy
YW5nZVN0cmluZyhnX3N0cmR1cCgiezAsIDB9IikpOworCisgICAgaWYgKCFlbGVtZW50IHx8ICFB
VEtfSVNfT0JKRUNUKGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOworCisgICAgQXRrT2JqZWN0KiBheFRhYmxl
ID0gYXRrX29iamVjdF9nZXRfcGFyZW50KEFUS19PQkpFQ1QoZWxlbWVudCkpOworICAgIGlmICgh
YXhUYWJsZSB8fCAhQVRLX0lTX1RBQkxFKGF4VGFibGUpKQorICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOworCisgICAgLy8gTG9v
ayBmb3IgdGhlIGNlbGwgaW4gdGhlIHRhYmxlLgorICAgIGdpbnQgaW5kZXhJblBhcmVudCA9IGF0
a19vYmplY3RfZ2V0X2luZGV4X2luX3BhcmVudChBVEtfT0JKRUNUKGVsZW1lbnQpKTsKKyAgICBp
ZiAoaW5kZXhJblBhcmVudCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHJhbmdlU3RyaW5nLmdldCgpKTsKKworICAgIGludCByb3cgPSAtMTsKKyAg
ICBpbnQgY29sdW1uID0gLTE7CisgICAgcm93ID0gYXRrX3RhYmxlX2dldF9yb3dfYXRfaW5kZXgo
QVRLX1RBQkxFKGF4VGFibGUpLCBpbmRleEluUGFyZW50KTsKKyAgICBjb2x1bW4gPSBhdGtfdGFi
bGVfZ2V0X2NvbHVtbl9hdF9pbmRleChBVEtfVEFCTEUoYXhUYWJsZSksIGluZGV4SW5QYXJlbnQp
OworCisgICAgLy8gR2V0IHRoZSBhY3R1YWwgdmFsdWVzLCBpZiByb3cgYW5kIGNvbHVtbnMgYXJl
IHZhbGlkIHZhbHVlcy4KKyAgICBpZiAocm93ICE9IC0xICYmIGNvbHVtbiAhPSAtMSkgeworICAg
ICAgICBpbnQgYmFzZSA9IDA7CisgICAgICAgIGludCBsZW5ndGggPSAwOworICAgICAgICBpZiAo
aXNSb3dSYW5nZSkgeworICAgICAgICAgICAgYmFzZSA9IHJvdzsKKyAgICAgICAgICAgIGxlbmd0
aCA9IGF0a190YWJsZV9nZXRfcm93X2V4dGVudF9hdChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywg
Y29sdW1uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJhc2UgPSBjb2x1bW47Cisg
ICAgICAgICAgICBsZW5ndGggPSBhdGtfdGFibGVfZ2V0X2NvbHVtbl9leHRlbnRfYXQoQVRLX1RB
QkxFKGF4VGFibGUpLCByb3csIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgcmFuZ2VTdHJp
bmcuc2V0KGdfc3RyZHVwX3ByaW50ZigieyVkLCAlZH0iLCBiYXNlLCBsZW5ndGgpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcu
Z2V0KCkpOworfQorCitzdGF0aWMgdm9pZCBhbHRlckN1cnJlbnRWYWx1ZShQbGF0Zm9ybVVJRWxl
bWVudCBlbGVtZW50LCBpbnQgZmFjdG9yKQoreworICAgIGlmICghZWxlbWVudCB8fCAhQVRLX0lT
X1ZBTFVFKGVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBHVmFsdWUgY3VycmVudFZh
bHVlID0gR19WQUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRfY3VycmVudF92YWx1ZShBVEtf
VkFMVUUoZWxlbWVudCksICZjdXJyZW50VmFsdWUpOworCisgICAgR1ZhbHVlIGluY3JlbWVudCA9
IEdfVkFMVUVfSU5JVDsKKyAgICBhdGtfdmFsdWVfZ2V0X21pbmltdW1faW5jcmVtZW50KEFUS19W
QUxVRShlbGVtZW50KSwgJmluY3JlbWVudCk7CisKKyAgICBHVmFsdWUgbmV3VmFsdWUgPSBHX1ZB
TFVFX0lOSVQ7CisgICAgZ192YWx1ZV9pbml0KCZuZXdWYWx1ZSwgR19UWVBFX0RPVUJMRSk7CisK
KyAgICBnX3ZhbHVlX3NldF9mbG9hdCgmbmV3VmFsdWUsIGdfdmFsdWVfZ2V0X2Zsb2F0KCZjdXJy
ZW50VmFsdWUpICsgZmFjdG9yICogZ192YWx1ZV9nZXRfZmxvYXQoJmluY3JlbWVudCkpOworICAg
IGF0a192YWx1ZV9zZXRfY3VycmVudF92YWx1ZShBVEtfVkFMVUUoZWxlbWVudCksICZuZXdWYWx1
ZSk7CisKKyAgICBnX3ZhbHVlX3Vuc2V0KCZuZXdWYWx1ZSk7CisgICAgZ192YWx1ZV91bnNldCgm
aW5jcmVtZW50KTsKKyAgICBnX3ZhbHVlX3Vuc2V0KCZjdXJyZW50VmFsdWUpOworfQorCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVt
ZW50IGVsZW1lbnQpCisgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKK3sKK30KKworQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb25zdCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50JiBvdGhlcikKKyAgICA6IEpTV3JhcHBhYmxlKCkKKyAgICAsIG1fZWxlbWVudChv
dGhlci5tX2VsZW1lbnQpCit7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6On5BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50KCkKK3sKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
c0VxdWFsKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkKK3sKKyAgICByZXR1
cm4gbV9lbGVtZW50ID09IG90aGVyRWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGNoaWxkcmVuKQoreworICAgIGlmICghbV9lbGVtZW50
IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlu
dCBjb3VudCA9IGNoaWxkcmVuQ291bnQoKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKKyAgICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vz
c2libGVfY2hpbGQoQVRLX09CSkVDVChtX2VsZW1lbnQpLCBpKTsKKyAgICAgICAgY2hpbGRyZW4u
YXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShjaGlsZCkpOworICAgIH0KK30K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbldpdGhSYW5nZShWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGNoaWxkcmVuLCB1bnNpZ25lZCBs
b2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtf
SVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBlbmQg
PSBsb2NhdGlvbiArIGxlbmd0aDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBsb2NhdGlvbjsgaSA8
IGVuZDsgaSsrKSB7CisgICAgICAgIEF0a09iamVjdCogY2hpbGQgPSBhdGtfb2JqZWN0X3JlZl9h
Y2Nlc3NpYmxlX2NoaWxkKEFUS19PQkpFQ1QobV9lbGVtZW50KSwgaSk7CisgICAgICAgIGNoaWxk
cmVuLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoY2hpbGQpKTsKKyAgICB9
Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZHJlbkNvdW50KCkKK3sKKyAg
ICBpZiAoIW1fZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYXRrX29i
amVjdF9nZXRfbl9hY2Nlc3NpYmxlX2NoaWxkcmVuKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7Cit9
CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZWxlbWVudEF0UG9pbnQoaW50IHgsIGludCB5KQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5kZXhPZkNoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
aWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gY2hp
bGRyZW47CisgICAgZ2V0Q2hpbGRyZW4oY2hpbGRyZW4pOworCisgICAgdW5zaWduZWQgY291bnQg
PSBjaGlsZHJlbi5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBp
KyspCisgICAgICAgIGlmIChjaGlsZHJlbltpXS0+aXNFcXVhbChlbGVtZW50KSkKKyAgICAgICAg
ICAgIHJldHVybiBpOworCisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQoreworICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiBjaGlsZHJlbjsKKyAgICBnZXRDaGlsZHJlbldpdGhSYW5nZShjaGlsZHJlbiwgaW5kZXgsIDEp
OworCisgICAgaWYgKGNoaWxkcmVuLnNpemUoKSA9PSAxKQorICAgICAgICByZXR1cm4gY2hpbGRy
ZW5bMF07CisKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRBdEluZGV4KHVu
c2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsK
K30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphcmlhT3duc0VsZW1lbnRBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRmxvd1RvRWxlbWVu
dEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7
CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0F0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnNlbGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZHJlbkNvdW50KCkgY29uc3QKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK1Bhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRS
b3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp0aXRsZVVJRWxlbWVudCgpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQoKQoreworICAgIGlm
ICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgQXRrT2JqZWN0KiBwYXJlbnQgPSBhdGtfb2JqZWN0X2dldF9wYXJlbnQoQVRL
X09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICByZXR1cm4gcGFyZW50ID8gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKHBhcmVudCkgOiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZMaW5rZWRV
SUVsZW1lbnRzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZEb2N1bWVudExpbmtzKCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDaGlsZHJlbigpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWxsQXR0cmlidXRlcygpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1Qo
bV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7CisKKyAgICBHT3duUHRyPGdjaGFyPiBhdHRyaWJ1dGVEYXRhKGF0dHJpYnV0ZVNldFRv
U3RyaW5nKGF0a19vYmplY3RfZ2V0X2F0dHJpYnV0ZXMoQVRLX09CSkVDVChtX2VsZW1lbnQpKSkp
OworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhhdHRyaWJ1dGVEYXRh
LmdldCgpKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJB
dHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwLjBmOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVudEF0dHJpYnV0ZVZhbHVl
KEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0
dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzQXR0cmlidXRlU2V0dGFibGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQoreworICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTdXBwb3J0ZWQoSlNTdHJpbmdSZWYgYXR0cmlidXRl
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXJhbWV0ZXJp
emVkQXR0cmlidXRlTmFtZXMoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQoreworICAgIGlmICgh
bV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgQXRrUm9sZSByb2xlID0g
YXRrX29iamVjdF9nZXRfcm9sZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOworICAgIGlmICghcm9s
ZSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7CisK
KyAgICBjb25zdCBnY2hhciogcm9sZU5hbWUgPSBhdGtfcm9sZV9nZXRfbmFtZShyb2xlKTsKKyAg
ICBHT3duUHRyPGdjaGFyPiBheFJvbGUoZ19zdHJkdXBfcHJpbnRmKCJBWFJvbGU6ICVzIiwgcm9s
ZU5hbWUpKTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhheFJv
bGUuZ2V0KCkpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3Vicm9sZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19P
QkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7CisKKyAgICBjb25zdCBnY2hhciogbmFtZSA9IGF0a19vYmplY3RfZ2V0X25h
bWUoQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVy
biBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworCisgICAgR093blB0cjxnY2hh
cj4gYXhUaXRsZShnX3N0cmR1cF9wcmludGYoIkFYVGl0bGU6ICVzIiwgbmFtZSkpOworCisgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF4VGl0bGUuZ2V0KCkpOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3Jp
cHRpb24oKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVu
dCkpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwor
CisgICAgY29uc3QgZ2NoYXIqIGRlc2NyaXB0aW9uID0gYXRrX29iamVjdF9nZXRfZGVzY3JpcHRp
b24oQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKKyAgICBpZiAoIWRlc2NyaXB0aW9uKQorICAgICAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKKworICAgIEdPd25Q
dHI8Z2NoYXI+IGF4RGVzYyhnX3N0cmR1cF9wcmludGYoIkFYRGVzY3JpcHRpb246ICVzIiwgZGVz
Y3JpcHRpb24pKTsKKworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
eERlc2MuZ2V0KCkpOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6b3JpZW50YXRpb24oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1l
bnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKwor
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1Zh
bHVlKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQor
CitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRl
eHQoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICAvLyBXZSBuZWVkIGEg
d2F5IHRvIGNhbGwgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aGVscFRleHQoKQorICAg
IC8vIGZyb20gaGVyZSwgcHJvYmFibHkgYSBuZXcgaGVscGVyIGNsYXNzIGluIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQuCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKK3sKKyAgICBp
ZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICByZXR1
cm4gMC4wZjsKKworICAgIGludCB4LCB5OworICAgIGF0a19jb21wb25lbnRfZ2V0X3Bvc2l0aW9u
KEFUS19DT01QT05FTlQobV9lbGVtZW50KSwgJngsICZ5LCBBVEtfWFlfU0NSRUVOKTsKKyAgICBy
ZXR1cm4geDsKK30KKworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkoKQoreworICAg
IGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAgICAgIHJl
dHVybiAwLjBmOworCisgICAgaW50IHgsIHk7CisgICAgYXRrX2NvbXBvbmVudF9nZXRfcG9zaXRp
b24oQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmeCwgJnksIEFUS19YWV9TQ1JFRU4pOworICAg
IHJldHVybiB5OworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQor
eworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVudCkpCisgICAg
ICAgIHJldHVybiAwLjBmOworCisgICAgaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgYXRrX2NvbXBv
bmVudF9nZXRfc2l6ZShBVEtfQ09NUE9ORU5UKG1fZWxlbWVudCksICZ3aWR0aCwgJmhlaWdodCk7
CisgICAgcmV0dXJuIHdpZHRoOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGVpZ2h0KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1l
bnQpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIGludCB3aWR0aCwgaGVpZ2h0OworICAg
IGF0a19jb21wb25lbnRfZ2V0X3NpemUoQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmd2lkdGgs
ICZoZWlnaHQpOworICAgIHJldHVybiBoZWlnaHQ7Cit9CisKK2RvdWJsZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjbGlja1BvaW50WCgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAg
IHJldHVybiAwLjBmOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQ
b2ludFkoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMC4wZjsKK30K
KworZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKK3sKKyAg
ICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQorICAgICAgICBy
ZXR1cm4gMC4wZjsKKworICAgIEdWYWx1ZSB2YWx1ZSA9IEdfVkFMVUVfSU5JVDsKKyAgICBhdGtf
dmFsdWVfZ2V0X2N1cnJlbnRfdmFsdWUoQVRLX1ZBTFVFKG1fZWxlbWVudCksICZ2YWx1ZSk7Cisg
ICAgaWYgKCFHX1ZBTFVFX0hPTERTX0ZMT0FUKCZ2YWx1ZSkpCisgICAgICAgIHJldHVybiAwLjBm
OworCisgICAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Zsb2F0KCZ2YWx1ZSk7Cit9CisKK2RvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQg
fHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAg
ICBHVmFsdWUgdmFsdWUgPSBHX1ZBTFVFX0lOSVQ7CisgICAgYXRrX3ZhbHVlX2dldF9taW5pbXVt
X3ZhbHVlKEFUS19WQUxVRShtX2VsZW1lbnQpLCAmdmFsdWUpOworICAgIGlmICghR19WQUxVRV9I
T0xEU19GTE9BVCgmdmFsdWUpKQorICAgICAgICByZXR1cm4gMC4wZjsKKworICAgIHJldHVybiBn
X3ZhbHVlX2dldF9mbG9hdCgmdmFsdWUpOworfQorCitkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWF4VmFsdWUoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNU
KG1fZWxlbWVudCkpCisgICAgICAgIHJldHVybiAwLjBmOworCisgICAgR1ZhbHVlIHZhbHVlID0g
R19WQUxVRV9JTklUOworICAgIGF0a192YWx1ZV9nZXRfbWF4aW11bV92YWx1ZShBVEtfVkFMVUUo
bV9lbGVtZW50KSwgJnZhbHVlKTsKKyAgICBpZiAoIUdfVkFMVUVfSE9MRFNfRkxPQVQoJnZhbHVl
KSkKKyAgICAgICAgcmV0dXJuIDAuMGY7CisKKyAgICByZXR1cm4gZ192YWx1ZV9nZXRfZmxvYXQo
JnZhbHVlKTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAg
ICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworaW50IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCit7CisgICAg
Ly8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAtMTsKK30KKworYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0FjdGlvblN1cHBvcnRlZChKU1N0cmluZ1JlZiBhY3Rpb24pCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQoreworICAgIHJldHVybiBjaGVja0VsZW1l
bnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9FTkFCTEVEKTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1f
ZWxlbWVudCwgQVRLX1NUQVRFX0ZPQ1VTRUQpOworfQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0
ZShtX2VsZW1lbnQsIEFUS19TVEFURV9TRUxFQ1RFRCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVu
dFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0VYUEFOREVEKTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja0Vs
ZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9DSEVDS0VEKTsKK30KKworaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVhaygpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwor
fQorCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQoKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVj
dHMoKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworLy8gcGFyYW1ldGVyaXplZCBhdHRy
aWJ1dGVzCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZUZvckluZGV4KGludCBpbmRl
eCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvckxpbmUo
aW50IGxpbmUpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmFuZ2VGb3JQb3NpdGlvbihpbnQgeCwgaW50IHkp
Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdp
dGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Ym91bmRzRm9yUmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2ln
bmVkIGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JSYW5nZSh1bnNpZ25lZCBsb2Nh
dGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKK30KKworSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdG
b3JSYW5nZSh1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygw
LCAwKTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5n
UmFuZ2VJc01pc3NwZWxsZWQodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKK3sK
KyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBzdGFydEVsZW1l
bnQsIGJvb2wgaXNEaXJlY3Rpb25OZXh0LCBKU1N0cmluZ1JlZiBzZWFyY2hLZXksIEpTU3RyaW5n
UmVmIHNlYXJjaFRleHQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAw
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09m
Um93SGVhZGVycygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0
cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK0pTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZIZWFkZXIoKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRo
Q2hhcmFjdGVycygwLCAwKTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0Nv
dW50KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX1RBQkxFKG1fZWxlbWVudCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGF0a190YWJsZV9nZXRfbl9yb3dzKEFU
S19UQUJMRShtX2VsZW1lbnQpKTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkNvdW50KCkKK3sKKyAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX1RBQkxFKG1fZWxl
bWVudCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGF0a190YWJsZV9nZXRfbl9j
b2x1bW5zKEFUS19UQUJMRShtX2VsZW1lbnQpKTsKK30KKworaW50IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmluZGV4SW5UYWJsZSgpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiAtMTsKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnJvd0luZGV4UmFuZ2UoKQoreworICAgIC8vIFJhbmdlIGluIHRhYmxlIGZvciByb3dz
LgorICAgIHJldHVybiBpbmRleFJhbmdlSW5UYWJsZShtX2VsZW1lbnQsIHRydWUpOworfQorCitK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5k
ZXhSYW5nZSgpCit7CisgICAgLy8gUmFuZ2UgaW4gdGFibGUgZm9yIGNvbHVtbnMuCisgICAgcmV0
dXJuIGluZGV4UmFuZ2VJblRhYmxlKG1fZWxlbWVudCwgZmFsc2UpOworfQorCitQYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNlbGxGb3JD
b2x1bW5BbmRSb3codW5zaWduZWQgY29sLCB1bnNpZ25lZCByb3cpCit7CisgICAgaWYgKCFtX2Vs
ZW1lbnQgfHwgIUFUS19JU19UQUJMRShtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIEF0a09iamVjdCogZm91bmRDZWxsID0gYXRrX3RhYmxlX3JlZl9hdChBVEtfVEFCTEUobV9l
bGVtZW50KSwgcm93LCBjb2wpOworICAgIHJldHVybiBmb3VuZENlbGwgPyBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjcmVhdGUoZm91bmRDZWxsKSA6IDA7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9s
bGJhcigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOwor
fQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVt
ZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkVGV4dFJhbmdlKHVu
c2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluY3JlbWVudCgpCit7Cisg
ICAgYWx0ZXJDdXJyZW50VmFsdWUobV9lbGVtZW50LCAxKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpkZWNyZW1lbnQoKQoreworICAgIGFsdGVyQ3VycmVudFZhbHVlKG1fZWxl
bWVudCwgLTEpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNob3dNZW51KCkK
K3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cHJlc3MoKQoreworICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1f
ZWxlbWVudCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghQVRLX0lTX0FDVElPTihtX2Vs
ZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IG9uZSBhY3Rpb24gcGVyIG9i
amVjdCBpcyBzdXBwb3J0ZWQgc28gZmFyLgorICAgIGF0a19hY3Rpb25fZG9fYWN0aW9uKEFUS19B
Q1RJT04obV9lbGVtZW50KSwgMCk7Cit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2V0U2VsZWN0ZWRDaGlsZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KSBjb25zdAor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKworSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlWYWx1ZSgpIGNvbnN0Cit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFy
YWN0ZXJzKDAsIDApOworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwg
IUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dl
dF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKHJvbGUgIT0gQVRLX1JPTEVf
RE9DVU1FTlRfRlJBTUUpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0
a19kb2N1bWVudF9nZXRfYXR0cmlidXRlX3ZhbHVlKEFUS19ET0NVTUVOVChtX2VsZW1lbnQpLCAi
RW5jb2RpbmciKSk7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpkb2N1bWVudFVSSSgpCit7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19J
U19PQkpFQ1QobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7CisKKyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xl
KEFUS19PQkpFQ1QobV9lbGVtZW50KSk7CisgICAgaWYgKHJvbGUgIT0gQVRLX1JPTEVfRE9DVU1F
TlRfRlJBTUUpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOworCisgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0a19kb2N1
bWVudF9nZXRfYXR0cmlidXRlX3ZhbHVlKEFUS19ET0NVTUVOVChtX2VsZW1lbnQpLCAiVVJJIikp
OworfQorCitKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dXJsKCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIEpTU3RyaW5nQ3Jl
YXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQor
eworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcigpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmlzRm9jdXNhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hl
Y2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfRk9DVVNBQkxFKTsKK30KKworYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAoreworICAgIHJl
dHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9TRUxFQ1RBQkxFKTsK
K30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRF
X01VTFRJU0VMRUNUQUJMRSk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNW
aXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50
LCBBVEtfU1RBVEVfVklTSUJMRSk7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNPZmZTY3JlZW4oKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQo
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJZ25vcmVkKCkgY29uc3QKK3sKKyAg
ICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRha2VGb2N1cygpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRha2VTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGRTZWxlY3Rpb24o
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpyZW1vdmVTZWxlY3Rpb24oKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30K
KworLy8gVGV4dCBtYXJrZXJzCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFu
Z2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSogcmFuZ2UpCit7Cisg
ICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1Rl
eHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisKK0pTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXJSYW5nZSogbWFya2VyUmFuZ2UpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVu
dAorICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOworfQorCitQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIq
IHN0YXJ0TWFya2VyLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogZW5kTWFya2VyKQoreworICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdl
KQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworUGFzc1Jl
ZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
KiByYW5nZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIDA7Cit9CisK
K1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnRleHRNYXJrZXJGb3JQb2ludChpbnQgeCwgaW50IHkpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudAorICAgIHJldHVybiAwOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogbWFya2VyKQoreworICAgIC8vIEZJWE1F
OiBpbXBsZW1lbnQKKyAgICByZXR1cm4gMDsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUo
SlNTdHJpbmdSZWYgYXR0cmlidXRlLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiByYW5n
ZSkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitp
bnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyKiBtYXJrZXIpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJl
dHVybiAtMTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJW
YWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1hcmtlcikKK3sKKyAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCitQYXNzUmVmUHRyPEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5k
ZXgoaW50IHRleHRJbmRleCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgcmV0dXJu
IDA7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlckd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OWM5
YTUuLjAwMDAwMDAKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9n
dGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgotI2luY2x1
ZGUgPGF0ay9hdGsuaD4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KLQotbmFtZXNw
YWNlIFdUUiB7Ci0KLXN0YXRpYyB2b2lkIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KEF0a09iamVj
dCogYWNjZXNzaWJsZSwgY29uc3QgZ2NoYXIqIHNpZ25hbE5hbWUsIGNvbnN0IGdjaGFyKiBzaWdu
YWxWYWx1ZSkKLXsKLSAgICAvLyBEbyBub3QgaGFuZGxlIHN0YXRlLWNoYW5nZTpkZWZ1bmN0IHNp
Z25hbHMsIGFzIHRoZSBBdGtPYmplY3QKLSAgICAvLyBhc3NvY2lhdGVkIHRvIHRoZW0gd2lsbCBu
b3QgYmUgdmFsaWQgYXQgdGhpcyBwb2ludCBhbHJlYWR5LgotICAgIGlmICghc2lnbmFsTmFtZSB8
fCAhZ19zdHJjbXAwKHNpZ25hbE5hbWUsICJzdGF0ZS1jaGFuZ2U6ZGVmdW5jdCIpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpFQ1QoYWNjZXNz
aWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBvYmplY3ROYW1lID0g
YXRrX29iamVjdF9nZXRfbmFtZShhY2Nlc3NpYmxlKTsKLSAgICBBdGtSb2xlIG9iamVjdFJvbGUg
PSBhdGtfb2JqZWN0X2dldF9yb2xlKGFjY2Vzc2libGUpOwotCi0gICAgLy8gVHJ5IHRvIGFsd2F5
cyBwcm92aWRlIGEgbmFtZSB0byBiZSBsb2dnZWQgZm9yIHRoZSBvYmplY3QuCi0gICAgaWYgKCFv
YmplY3ROYW1lIHx8ICpvYmplY3ROYW1lID09ICdcMCcpCi0gICAgICAgIG9iamVjdE5hbWUgPSAi
KE5vIG5hbWUpIjsKLQotICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWdu
YWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZh
bHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBhY2Nlc3Np
YmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nlc3NpYmlsaXR5IG9iamVjdCBl
bWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVkXG4iLCBzaWduYWxOYW1lQW5k
VmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVjdFJvbGUpKTsKLSAgICBJbmplY3RlZEJ1bmRs
ZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoYWNjZXNzaWJpbGl0eUV2ZW50U3Ry
aW5nLmdldCgpKTsKLX0KLQotc3RhdGljIGdib29sZWFuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihH
U2lnbmFsSW52b2NhdGlvbkhpbnQgKnNpZ25hbEhpbnQsIGd1aW50IG51bVBhcmFtVmFsdWVzLCBj
b25zdCBHVmFsdWUgKnBhcmFtVmFsdWVzLCBncG9pbnRlciBkYXRhKQotewotICAgIC8vIEF0IGxl
YXN0IHdlIHNob3VsZCByZWNlaXZlIHRoZSBpbnN0YW5jZSBlbWl0dGluZyB0aGUgc2lnbmFsLgot
ICAgIGlmIChudW1QYXJhbVZhbHVlcyA8IDEpCi0gICAgICAgIHJldHVybiBUUlVFOwotCi0gICAg
QXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gQVRLX09CSkVDVChnX3ZhbHVlX2dldF9vYmplY3QoJnBh
cmFtVmFsdWVzWzBdKSk7Ci0gICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFBVEtfSVNfT0JKRUNUKGFj
Y2Vzc2libGUpKQotICAgICAgICByZXR1cm4gVFJVRTsKLQotICAgIEdTaWduYWxRdWVyeSBzaWdu
YWxfcXVlcnk7Ci0gICAgR093blB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKLSAgICBHT3duUHRyPGdj
aGFyPiBzaWduYWxWYWx1ZTsKLQotICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25h
bF9pZCwgJnNpZ25hbF9xdWVyeSk7Ci0KLSAgICBpZiAoIWdfc3RyY21wMChzaWduYWxfcXVlcnku
c2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdfdmFsdWVfZ2V0X3N0cmluZygmcGFy
YW1WYWx1ZXNbMV0pKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYo
IiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMl0pKSk7Ci0gICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbF9xdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50Iikp
IHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwotICAg
ICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWdu
YWxfcXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikpIHsKLSAgICAgICAgc2ln
bmFsTmFtZS5zZXQoZ19zdHJkdXAoImNoaWxkcmVuLWNoYW5nZWQiKSk7Ci0gICAgICAgIHNpZ25h
bFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1W
YWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbF9xdWVyeS5zaWdu
YWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKQotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0
cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25h
bEhpbnQtPmRldGFpbCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3Ry
ZHVwKHNpZ25hbF9xdWVyeS5zaWduYWxfbmFtZSkpOwotCi0gICAgcHJpbnRBY2Nlc3NpYmlsaXR5
RXZlbnQoYWNjZXNzaWJsZSwgc2lnbmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwot
Ci0gICAgcmV0dXJuIFRSVUU7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6Omxv
Z0FjY2Vzc2liaWxpdHlFdmVudHMoKQotewotICAgIC8vIEVuc3VyZSBubyBjYWxsYmFja3MgYXJl
IGNvbm5lY3RlZCBiZWZvcmUuCi0gICAgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpOwotCi0gICAg
Ly8gRW5zdXJlIHRoYXQgYWNjZXNzaWJpbGl0eSBpcyBpbml0aWFsaXplZCBmb3IgdGhlIFdlYlZp
ZXcgYnkgcXVlcnlpbmcgZm9yCi0gICAgLy8gdGhlIHJvb3QgYWNjZXNzaWJsZSBvYmplY3QsIHdo
aWNoIHdpbGwgY3JlYXRlIHRoZSBmdWxsIGhpZXJhcmNoeS4KLSAgICByb290RWxlbWVudCgpOwot
Ci0gICAgLy8gQWRkIGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0a09iamVjdCdzIHNpZ25hbHMuCi0g
ICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5l
cihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OnN0YXRlLWNoYW5nZSIpOwot
ICAgIG1fZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5l
cihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OmZvY3VzLWV2ZW50Iik7Ci0g
ICAgbV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9l
dmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OmFjdGl2
ZS1kZXNjZW5kYW50LWNoYW5nZWQiKTsKLSAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQg
PSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJH
dGs6QXRrT2JqZWN0OmNoaWxkcmVuLWNoYW5nZWQiKTsKLSAgICBtX3Byb3BlcnR5Q2hhbmdlZExp
c3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlz
dGVuZXIsICJHdGs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOwotICAgIG1fdmlzaWJsZURh
dGFDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2Jq
ZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsK
LQotICAgIC8vIEVuc3VyZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwg
b3RoZXJ3aXNlCi0gICAgLy8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBoYW5kbGVycyBiZWxvdyB3
b24ndCBnZXQgcmVnaXN0ZXJlZC4KLSAgICBHT2JqZWN0KiBkdW1teUF4T2JqZWN0ID0gR19PQkpF
Q1QoZ19vYmplY3RfbmV3KEFUS19UWVBFX09CSkVDVCwgMCkpOwotICAgIEF0a09iamVjdCogZHVt
bXlOb09wQXhPYmplY3QgPSBhdGtfbm9fb3Bfb2JqZWN0X25ldyhkdW1teUF4T2JqZWN0KTsKLSAg
ICBnX29iamVjdF91bnJlZihHX09CSkVDVChkdW1teU5vT3BBeE9iamVjdCkpOwotICAgIGdfb2Jq
ZWN0X3VucmVmKGR1bW15QXhPYmplY3QpOwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlDb250cm9s
bGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKLXsKLSAgICAvLyBBdGtPYmplY3Qgc2lnbmFs
cy4KLSAgICBpZiAobV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92
ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQpOwotICAgICAg
ICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX2ZvY3VzRXZl
bnRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVy
KG1fZm9jdXNFdmVudExpc3RlbmVySWQpOwotICAgICAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklk
ID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklk
KSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fYWN0aXZlRGVz
Y2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9hY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZExpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9jaGlsZHJlbkNoYW5nZWRMaXN0
ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fY2hp
bGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVu
ZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQpIHsK
LSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9wcm9wZXJ0eUNoYW5n
ZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gMDsK
LSAgICB9Ci0gICAgaWYgKG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCkgewotICAgICAg
ICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX3Zpc2libGVEYXRhQ2hhbmdlZExp
c3RlbmVySWQpOwotICAgICAgICBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSAwOwot
ICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRHdGsuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTk5MzQ2
Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3Rr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTcyICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgiCi0KLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRs
ZS5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTU3RyaW5nUmVmLmg+Ci0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2luY2x1ZGUgPGd0
ay9ndGsuaD4KLSNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+Ci0KLW5hbWVz
cGFjZSBXVFIgewotCi1zdGF0aWMgZ2NoYXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5nKEF0a0F0dHJp
YnV0ZVNldCogYXR0cmlidXRlU2V0KQotewotICAgIEdTdHJpbmcqIHN0ciA9IGdfc3RyaW5nX25l
dygwKTsKLSAgICBmb3IgKEdTTGlzdCogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZVNldDsgYXR0cmli
dXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5leHQpIHsKLSAgICAgICAgQXRrQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBzdGF0aWNfY2FzdDxBdGtBdHRyaWJ1dGUqPihhdHRyaWJ1dGVzLT5k
YXRhKTsKLSAgICAgICAgR093blB0cjxnY2hhcj4gYXR0cmlidXRlRGF0YShnX3N0cmNvbmNhdChh
dHRyaWJ1dGUtPm5hbWUsICI6IiwgYXR0cmlidXRlLT52YWx1ZSwgTlVMTCkpOwotICAgICAgICBn
X3N0cmluZ19hcHBlbmQoc3RyLCBhdHRyaWJ1dGVEYXRhLmdldCgpKTsKLSAgICAgICAgaWYgKGF0
dHJpYnV0ZXMtPm5leHQpCi0gICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQoc3RyLCAiLCAiKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShzdHIsIEZBTFNFKTsKLX0KLQotc3Rh
dGljIGJvb2wgY2hlY2tFbGVtZW50U3RhdGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgQXRr
U3RhdGVUeXBlIHN0YXRlVHlwZSkKLXsKLSAgICBpZiAoIUFUS19JU19PQkpFQ1QoZWxlbWVudCkp
Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHUmVmUHRyPEF0a1N0YXRlU2V0PiBzdGF0
ZVNldCA9IGFkb3B0R1JlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9zZXQoQVRLX09CSkVDVChlbGVt
ZW50KSkpOwotICAgIHJldHVybiBhdGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRlU2V0
LmdldCgpLCBzdGF0ZVR5cGUpOwotfQotCi1zdGF0aWMgSlNTdHJpbmdSZWYgaW5kZXhSYW5nZUlu
VGFibGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgYm9vbCBpc1Jvd1JhbmdlKQotewotICAg
IEdPd25QdHI8Z2NoYXI+IHJhbmdlU3RyaW5nKGdfc3RyZHVwKCJ7MCwgMH0iKSk7Ci0KLSAgICBp
ZiAoIWVsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QoZWxlbWVudCkpCi0gICAgICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7Ci0KLSAgICBB
dGtPYmplY3QqIGF4VGFibGUgPSBhdGtfb2JqZWN0X2dldF9wYXJlbnQoQVRLX09CSkVDVChlbGVt
ZW50KSk7Ci0gICAgaWYgKCFheFRhYmxlIHx8ICFBVEtfSVNfVEFCTEUoYXhUYWJsZSkpCi0gICAg
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyYW5nZVN0cmluZy5nZXQo
KSk7Ci0KLSAgICAvLyBMb29rIGZvciB0aGUgY2VsbCBpbiB0aGUgdGFibGUuCi0gICAgZ2ludCBp
bmRleEluUGFyZW50ID0gYXRrX29iamVjdF9nZXRfaW5kZXhfaW5fcGFyZW50KEFUS19PQkpFQ1Qo
ZWxlbWVudCkpOwotICAgIGlmIChpbmRleEluUGFyZW50ID09IC0xKQotICAgICAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmFuZ2VTdHJpbmcuZ2V0KCkpOwotCi0gICAg
aW50IHJvdyA9IC0xOwotICAgIGludCBjb2x1bW4gPSAtMTsKLSAgICByb3cgPSBhdGtfdGFibGVf
Z2V0X3Jvd19hdF9pbmRleChBVEtfVEFCTEUoYXhUYWJsZSksIGluZGV4SW5QYXJlbnQpOwotICAg
IGNvbHVtbiA9IGF0a190YWJsZV9nZXRfY29sdW1uX2F0X2luZGV4KEFUS19UQUJMRShheFRhYmxl
KSwgaW5kZXhJblBhcmVudCk7Ci0KLSAgICAvLyBHZXQgdGhlIGFjdHVhbCB2YWx1ZXMsIGlmIHJv
dyBhbmQgY29sdW1ucyBhcmUgdmFsaWQgdmFsdWVzLgotICAgIGlmIChyb3cgIT0gLTEgJiYgY29s
dW1uICE9IC0xKSB7Ci0gICAgICAgIGludCBiYXNlID0gMDsKLSAgICAgICAgaW50IGxlbmd0aCA9
IDA7Ci0gICAgICAgIGlmIChpc1Jvd1JhbmdlKSB7Ci0gICAgICAgICAgICBiYXNlID0gcm93Owot
ICAgICAgICAgICAgbGVuZ3RoID0gYXRrX3RhYmxlX2dldF9yb3dfZXh0ZW50X2F0KEFUS19UQUJM
RShheFRhYmxlKSwgcm93LCBjb2x1bW4pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
YmFzZSA9IGNvbHVtbjsKLSAgICAgICAgICAgIGxlbmd0aCA9IGF0a190YWJsZV9nZXRfY29sdW1u
X2V4dGVudF9hdChBVEtfVEFCTEUoYXhUYWJsZSksIHJvdywgY29sdW1uKTsKLSAgICAgICAgfQot
ICAgICAgICByYW5nZVN0cmluZy5zZXQoZ19zdHJkdXBfcHJpbnRmKCJ7JWQsICVkfSIsIGJhc2Us
IGxlbmd0aCkpOwotICAgIH0KLQotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhyYW5nZVN0cmluZy5nZXQoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFsdGVyQ3VycmVudFZh
bHVlKFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIGludCBmYWN0b3IpCi17Ci0gICAgaWYgKCFl
bGVtZW50IHx8ICFBVEtfSVNfVkFMVUUoZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdWYWx1ZSBjdXJyZW50VmFsdWUgPSBHX1ZBTFVFX0lOSVQ7Ci0gICAgYXRrX3ZhbHVlX2dldF9j
dXJyZW50X3ZhbHVlKEFUS19WQUxVRShlbGVtZW50KSwgJmN1cnJlbnRWYWx1ZSk7Ci0KLSAgICBH
VmFsdWUgaW5jcmVtZW50ID0gR19WQUxVRV9JTklUOwotICAgIGF0a192YWx1ZV9nZXRfbWluaW11
bV9pbmNyZW1lbnQoQVRLX1ZBTFVFKGVsZW1lbnQpLCAmaW5jcmVtZW50KTsKLQotICAgIEdWYWx1
ZSBuZXdWYWx1ZSA9IEdfVkFMVUVfSU5JVDsKLSAgICBnX3ZhbHVlX2luaXQoJm5ld1ZhbHVlLCBH
X1RZUEVfRE9VQkxFKTsKLQotICAgIGdfdmFsdWVfc2V0X2Zsb2F0KCZuZXdWYWx1ZSwgZ192YWx1
ZV9nZXRfZmxvYXQoJmN1cnJlbnRWYWx1ZSkgKyBmYWN0b3IgKiBnX3ZhbHVlX2dldF9mbG9hdCgm
aW5jcmVtZW50KSk7Ci0gICAgYXRrX3ZhbHVlX3NldF9jdXJyZW50X3ZhbHVlKEFUS19WQUxVRShl
bGVtZW50KSwgJm5ld1ZhbHVlKTsKLQotICAgIGdfdmFsdWVfdW5zZXQoJm5ld1ZhbHVlKTsKLSAg
ICBnX3ZhbHVlX3Vuc2V0KCZpbmNyZW1lbnQpOwotICAgIGdfdmFsdWVfdW5zZXQoJmN1cnJlbnRW
YWx1ZSk7Ci19Ci0KLUFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCkKLSAgICA6IG1fZWxlbWVudChlbGVtZW50KQot
ewotfQotCi1BY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNv
bnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmIG90aGVyKQotICAgIDogSlNXcmFwcGFibGUoKQot
ICAgICwgbV9lbGVtZW50KG90aGVyLm1fZWxlbWVudCkKLXsKLX0KLQotQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6fkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoKQotewotfQotCi1ib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRXF1YWwoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogb3RoZXJFbGVt
ZW50KQotewotICAgIHJldHVybiBtX2VsZW1lbnQgPT0gb3RoZXJFbGVtZW50LT5wbGF0Zm9ybVVJ
RWxlbWVudCgpOwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVu
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgY2hpbGRyZW4pCi17Ci0g
ICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaW50IGNvdW50ID0gY2hpbGRyZW5Db3VudCgpOwotICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICBBdGtPYmplY3QqIGNoaWxkID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChBVEtfT0JKRUNUKG1fZWxlbWVudCksIGkpOwot
ICAgICAgICBjaGlsZHJlbi5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGNo
aWxkKSk7Ci0gICAgfQotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxk
cmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgY2hp
bGRyZW4sIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgaWYgKCFt
X2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHVuc2lnbmVkIGVuZCA9IGxvY2F0aW9uICsgbGVuZ3RoOwotICAgIGZvciAodW5zaWduZWQg
aSA9IGxvY2F0aW9uOyBpIDwgZW5kOyBpKyspIHsKLSAgICAgICAgQXRrT2JqZWN0KiBjaGlsZCA9
IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoQVRLX09CSkVDVChtX2VsZW1lbnQpLCBp
KTsKLSAgICAgICAgY2hpbGRyZW4uYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShjaGlsZCkpOwotICAgIH0KLX0KLQotaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxk
cmVuQ291bnQoKQotewotICAgIGlmICghbV9lbGVtZW50KQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHJldHVybiBhdGtfb2JqZWN0X2dldF9uX2FjY2Vzc2libGVfY2hpbGRyZW4oQVRLX09CSkVD
VChtX2VsZW1lbnQpKTsKLX0KLQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50QXRQb2ludChpbnQgeCwgaW50IHkpCi17Ci0g
ICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbmRleE9mQ2hpbGQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCog
ZWxlbWVudCkKLXsKLSAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1l
bnQpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gPiBjaGlsZHJlbjsKLSAgICBnZXRDaGlsZHJlbihjaGlsZHJlbik7Ci0KLSAg
ICB1bnNpZ25lZCBjb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgICAgaWYgKGNoaWxkcmVuW2ldLT5pc0VxdWFsKGVs
ZW1lbnQpKQotICAgICAgICAgICAgcmV0dXJuIGk7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
aGlsZEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiA+IGNoaWxkcmVuOwotICAgIGdldENoaWxkcmVuV2l0aFJhbmdlKGNo
aWxkcmVuLCBpbmRleCwgMSk7Ci0KLSAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCi0gICAg
ICAgIHJldHVybiBjaGlsZHJlblswXTsKLQotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJ
RWxlbWVudEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dAotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFPd25zRWxlbWVudEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi1Q
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmFyaWFGbG93VG9FbGVtZW50QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkUm93QXRJbmRleCh1
bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6cm93QXRJbmRleCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRDaGlsZEF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAw
OwotfQotCi11bnNpZ25lZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkcmVu
Q291bnQoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsK
LX0KLQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzZWxlY3RlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KCkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxl
bWVudCgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBdGtPYmplY3QqIHBhcmVudCA9IGF0a19vYmpl
Y3RfZ2V0X3BhcmVudChBVEtfT0JKRUNUKG1fZWxlbWVudCkpOwotICAgIHJldHVybiBwYXJlbnQg
PyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUocGFyZW50KSA6IDA7Ci19Ci0KLVBhc3NS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlz
Y2xvc2VkQnlSb3coKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsK
LX0KLQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
LSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkRvY3VtZW50TGlua3MoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4g
SlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCkK
LXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphbGxBdHRyaWJ1dGVzKCkKLXsKLSAgICBpZiAoIW1fZWxlbWVudCB8
fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQotICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLQotICAgIEdPd25QdHI8Z2NoYXI+IGF0dHJpYnV0ZURh
dGEoYXR0cmlidXRlU2V0VG9TdHJpbmcoYXRrX29iamVjdF9nZXRfYXR0cmlidXRlcyhBVEtfT0JK
RUNUKG1fZWxlbWVudCkpKSk7Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGF0dHJpYnV0ZURhdGEuZ2V0KCkpOwotfQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotZG91YmxlIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6Om51bWJlckF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDAuMGY7Ci19Ci0KLVBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVt
ZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNBdHRyaWJ1dGVTZXR0YWJsZShKU1N0cmluZ1JlZiBhdHRy
aWJ1dGUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0F0dHJpYnV0ZVN1cHBvcnRlZChKU1N0
cmluZ1JlZiBhdHRyaWJ1dGUpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVy
biBmYWxzZTsKLX0KLQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCi17Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudAotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwot
fQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9s
ZSgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkK
LSAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci0KLSAg
ICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QobV9lbGVtZW50
KSk7Ci0gICAgaWYgKCFyb2xlKQotICAgICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hh
cmFjdGVycygwLCAwKTsKLQotICAgIGNvbnN0IGdjaGFyKiByb2xlTmFtZSA9IGF0a19yb2xlX2dl
dF9uYW1lKHJvbGUpOwotICAgIEdPd25QdHI8Z2NoYXI+IGF4Um9sZShnX3N0cmR1cF9wcmludGYo
IkFYUm9sZTogJXMiLCByb2xlTmFtZSkpOwotCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKGF4Um9sZS5nZXQoKSk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKLXsKLSAgICAvLyBGSVhNRTogaW1w
bGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19
Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xl
RGVzY3JpcHRpb24oKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKLXsKLSAgICBpZiAoIW1fZWxl
bWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQotICAgICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLQotICAgIGNvbnN0IGdjaGFyKiBuYW1lID0g
YXRrX29iamVjdF9nZXRfbmFtZShBVEtfT0JKRUNUKG1fZWxlbWVudCkpOwotICAgIGlmICghbmFt
ZSkKLSAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci0K
LSAgICBHT3duUHRyPGdjaGFyPiBheFRpdGxlKGdfc3RyZHVwX3ByaW50ZigiQVhUaXRsZTogJXMi
LCBuYW1lKSk7Ci0KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXhU
aXRsZS5nZXQoKSk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19J
U19PQkpFQ1QobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Ci0KLSAgICBjb25zdCBnY2hhciogZGVzY3JpcHRpb24gPSBhdGtfb2Jq
ZWN0X2dldF9kZXNjcmlwdGlvbihBVEtfT0JKRUNUKG1fZWxlbWVudCkpOwotICAgIGlmICghZGVz
Y3JpcHRpb24pCi0gICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOwotCi0gICAgR093blB0cjxnY2hhcj4gYXhEZXNjKGdfc3RyZHVwX3ByaW50ZigiQVhEZXNj
cmlwdGlvbjogJXMiLCBkZXNjcmlwdGlvbikpOwotCi0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKGF4RGVzYy5nZXQoKSk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0Ci17Ci0gICAg
Ly8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0
ZXJzKDAsIDApOwotfQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKLXsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJh
Y3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAot
ICAgIC8vIFdlIG5lZWQgYSB3YXkgdG8gY2FsbCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpoZWxwVGV4dCgpCi0gICAgLy8gZnJvbSBoZXJlLCBwcm9iYWJseSBhIG5ldyBoZWxwZXIgY2xh
c3MgaW4gV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC4KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVh
dGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OngoKQotewotICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxlbWVu
dCkpCi0gICAgICAgIHJldHVybiAwLjBmOwotCi0gICAgaW50IHgsIHk7Ci0gICAgYXRrX2NvbXBv
bmVudF9nZXRfcG9zaXRpb24oQVRLX0NPTVBPTkVOVChtX2VsZW1lbnQpLCAmeCwgJnksIEFUS19Y
WV9TQ1JFRU4pOwotICAgIHJldHVybiB4OwotfQotCi1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6eSgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1QobV9lbGVt
ZW50KSkKLSAgICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAgICBpbnQgeCwgeTsKLSAgICBhdGtfY29t
cG9uZW50X2dldF9wb3NpdGlvbihBVEtfQ09NUE9ORU5UKG1fZWxlbWVudCksICZ4LCAmeSwgQVRL
X1hZX1NDUkVFTik7Ci0gICAgcmV0dXJuIHk7Ci19Ci0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp3aWR0aCgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwgIUFUS19JU19PQkpFQ1Qo
bV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAgICBpbnQgd2lkdGgsIGhlaWdo
dDsKLSAgICBhdGtfY29tcG9uZW50X2dldF9zaXplKEFUS19DT01QT05FTlQobV9lbGVtZW50KSwg
JndpZHRoLCAmaGVpZ2h0KTsKLSAgICByZXR1cm4gd2lkdGg7Ci19Ci0KLWRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpoZWlnaHQoKQotewotICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtf
SVNfT0JKRUNUKG1fZWxlbWVudCkpCi0gICAgICAgIHJldHVybiAwLjBmOwotCi0gICAgaW50IHdp
ZHRoLCBoZWlnaHQ7Ci0gICAgYXRrX2NvbXBvbmVudF9nZXRfc2l6ZShBVEtfQ09NUE9ORU5UKG1f
ZWxlbWVudCksICZ3aWR0aCwgJmhlaWdodCk7Ci0gICAgcmV0dXJuIGhlaWdodDsKLX0KLQotZG91
YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKLXsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDAuMGY7Ci19Ci0KLWRvdWJsZSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAg
IHJldHVybiAwLjBmOwotfQotCi1kb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50VmFs
dWUoKSBjb25zdAotewotICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNfT0JKRUNUKG1fZWxl
bWVudCkpCi0gICAgICAgIHJldHVybiAwLjBmOwotCi0gICAgR1ZhbHVlIHZhbHVlID0gR19WQUxV
RV9JTklUOwotICAgIGF0a192YWx1ZV9nZXRfY3VycmVudF92YWx1ZShBVEtfVkFMVUUobV9lbGVt
ZW50KSwgJnZhbHVlKTsKLSAgICBpZiAoIUdfVkFMVUVfSE9MRFNfRkxPQVQoJnZhbHVlKSkKLSAg
ICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAgICByZXR1cm4gZ192YWx1ZV9nZXRfZmxvYXQoJnZhbHVl
KTsKLX0KLQotZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1pblZhbHVlKCkKLXsKLSAg
ICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQotICAgICAgICBy
ZXR1cm4gMC4wZjsKLQotICAgIEdWYWx1ZSB2YWx1ZSA9IEdfVkFMVUVfSU5JVDsKLSAgICBhdGtf
dmFsdWVfZ2V0X21pbmltdW1fdmFsdWUoQVRLX1ZBTFVFKG1fZWxlbWVudCksICZ2YWx1ZSk7Ci0g
ICAgaWYgKCFHX1ZBTFVFX0hPTERTX0ZMT0FUKCZ2YWx1ZSkpCi0gICAgICAgIHJldHVybiAwLjBm
OwotCi0gICAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Zsb2F0KCZ2YWx1ZSk7Ci19Ci0KLWRvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQg
fHwgIUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIDAuMGY7Ci0KLSAg
ICBHVmFsdWUgdmFsdWUgPSBHX1ZBTFVFX0lOSVQ7Ci0gICAgYXRrX3ZhbHVlX2dldF9tYXhpbXVt
X3ZhbHVlKEFUS19WQUxVRShtX2VsZW1lbnQpLCAmdmFsdWUpOwotICAgIGlmICghR19WQUxVRV9I
T0xEU19GTE9BVCgmdmFsdWUpKQotICAgICAgICByZXR1cm4gMC4wZjsKLQotICAgIHJldHVybiBn
X3ZhbHVlX2dldF9mbG9hdCgmdmFsdWUpOwotfQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNjcmlwdGlvbigpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudAotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IDApOwotfQotCi1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5zZXJ0aW9uUG9pbnRMaW5l
TnVtYmVyKCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIC0xOwotfQot
Ci1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQWN0aW9uU3VwcG9ydGVkKEpTU3RyaW5n
UmVmIGFjdGlvbikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRW5hYmxlZCgpCi17Ci0gICAg
cmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0VOQUJMRUQpOwot
fQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2hl
Y2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfRk9DVVNFRCk7Ci19Ci0KLWJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX1NFTEVDVEVEKTsKLX0KLQot
Ym9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9lbGVtZW50LCBBVEtfU1RBVEVfRVhQQU5ERUQpOwot
fQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NUQVRFX0NIRUNLRUQp
OwotfQotCi1pbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBj
b25zdAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNwZWFrKCkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlz
R3JhYmJlZCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFyaWFEcm9wRWZmZWN0cygpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAot
ICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwotfQotCi0vLyBw
YXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5l
Rm9ySW5kZXgoaW50IGluZGV4KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1
cm4gMDsKLX0KLQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJhbmdlRm9yTGluZShpbnQgbGluZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0g
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyYW5nZUZvclBvc2l0
aW9uKGludCB4LCBpbnQgeSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib3VuZHNGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
LSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclJh
bmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpCi17Ci0gICAgLy8gRklYTUU6
IGltcGxlbWVudAotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDAp
OwotfQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlKHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5n
dGgpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzTWlzc3BlbGxlZCh1bnNpZ25lZCBsb2NhdGlvbiwgdW5z
aWduZWQgbGVuZ3RoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQqIHN0YXJ0RWxlbWVudCwgYm9vbCBpc0RpcmVjdGlvbk5leHQsIEpTU3RyaW5nUmVmIHNl
YXJjaEtleSwgSlNTdHJpbmdSZWYgc2VhcmNoVGV4dCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKCkKLXsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMo
MCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjphdHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZDb2x1bW5zKCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZSb3dzKCkKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjphdHRyaWJ1dGVzT2ZWaXNpYmxlQ2VsbHMoKQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0K
LQotSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZkhlYWRlcigpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiBK
U1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwotfQotCi1pbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6cm93Q291bnQoKQotewotICAgIGlmICghbV9lbGVtZW50IHx8ICFBVEtfSVNf
VEFCTEUobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gYXRrX3Rh
YmxlX2dldF9uX3Jvd3MoQVRLX1RBQkxFKG1fZWxlbWVudCkpOwotfQotCi1pbnQgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29sdW1uQ291bnQoKQotewotICAgIGlmICghbV9lbGVtZW50IHx8ICFB
VEtfSVNfVEFCTEUobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
YXRrX3RhYmxlX2dldF9uX2NvbHVtbnMoQVRLX1RBQkxFKG1fZWxlbWVudCkpOwotfQotCi1pbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKCkKLXsKLSAgICAvLyBGSVhNRTog
aW1wbGVtZW50Ci0gICAgcmV0dXJuIC0xOwotfQotCi1KU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpCi17Ci0gICAgLy8gUmFuZ2Ug
aW4gdGFibGUgZm9yIHJvd3MuCi0gICAgcmV0dXJuIGluZGV4UmFuZ2VJblRhYmxlKG1fZWxlbWVu
dCwgdHJ1ZSk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpjb2x1bW5JbmRleFJhbmdlKCkKLXsKLSAgICAvLyBSYW5nZSBpbiB0YWJsZSBmb3Ig
Y29sdW1ucy4KLSAgICByZXR1cm4gaW5kZXhSYW5nZUluVGFibGUobV9lbGVtZW50LCBmYWxzZSk7
Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y2VsbEZvckNvbHVtbkFuZFJvdyh1bnNpZ25lZCBjb2wsIHVuc2lnbmVkIHJvdykK
LXsKLSAgICBpZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX1RBQkxFKG1fZWxlbWVudCkpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgQXRrT2JqZWN0KiBmb3VuZENlbGwgPSBhdGtfdGFibGVfcmVm
X2F0KEFUS19UQUJMRShtX2VsZW1lbnQpLCByb3csIGNvbCk7Ci0gICAgcmV0dXJuIGZvdW5kQ2Vs
bCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShmb3VuZENlbGwpIDogMDsKLX0KLQot
UGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAotewotICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdlKCkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2V0U2Vs
ZWN0ZWRUZXh0UmFuZ2UodW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAg
ICAvLyBGSVhNRTogaW1wbGVtZW50Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aW5jcmVtZW50KCkKLXsKLSAgICBhbHRlckN1cnJlbnRWYWx1ZShtX2VsZW1lbnQsIDEpOwotfQot
Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlY3JlbWVudCgpCi17Ci0gICAgYWx0ZXJD
dXJyZW50VmFsdWUobV9lbGVtZW50LCAtMSk7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6c2hvd01lbnUoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLX0KLQotdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmVzcygpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnQgfHwg
IUFUS19JU19PQkpFQ1QobV9lbGVtZW50KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFB
VEtfSVNfQUNUSU9OKG1fZWxlbWVudCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkg
b25lIGFjdGlvbiBwZXIgb2JqZWN0IGlzIHN1cHBvcnRlZCBzbyBmYXIuCi0gICAgYXRrX2FjdGlv
bl9kb19hY3Rpb24oQVRLX0FDVElPTihtX2VsZW1lbnQpLCAwKTsKLX0KLQotdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZXRTZWxlY3RlZENoaWxkKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQq
IGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi1KU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZh
bHVlKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3Ry
aW5nQ3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKCkKLXsKLSAgICBp
ZiAoIW1fZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQotICAgICAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLQotICAgIEF0a1JvbGUgcm9s
ZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKLSAgICBpZiAo
cm9sZSAhPSBBVEtfUk9MRV9ET0NVTUVOVF9GUkFNRSkKLSAgICAgICAgcmV0dXJuIEpTU3RyaW5n
Q3JlYXRlV2l0aENoYXJhY3RlcnMoMCwgMCk7Ci0KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYXRrX2RvY3VtZW50X2dldF9hdHRyaWJ1dGVfdmFsdWUoQVRLX0RPQ1VN
RU5UKG1fZWxlbWVudCksICJFbmNvZGluZyIpKTsKLX0KLQotSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKLXsKLSAgICBpZiAoIW1f
ZWxlbWVudCB8fCAhQVRLX0lTX09CSkVDVChtX2VsZW1lbnQpKQotICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLQotICAgIEF0a1JvbGUgcm9sZSA9IGF0
a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVChtX2VsZW1lbnQpKTsKLSAgICBpZiAocm9sZSAh
PSBBVEtfUk9MRV9ET0NVTUVOVF9GUkFNRSkKLSAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRl
V2l0aENoYXJhY3RlcnMoMCwgMCk7Ci0KLSAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYXRrX2RvY3VtZW50X2dldF9hdHRyaWJ1dGVfdmFsdWUoQVRLX0RPQ1VNRU5UKG1f
ZWxlbWVudCksICJVUkkiKSk7Ci19Ci0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojp1cmwoKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICBy
ZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKLX0KLQotYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1
bmN0aW9uQ2FsbGJhY2spCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiB0
cnVlOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2FibGUoKSBjb25zdAot
ewotICAgIHJldHVybiBjaGVja0VsZW1lbnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9GT0NV
U0FCTEUpOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNoZWNrRWxlbWVudFN0YXRlKG1fZWxlbWVudCwgQVRLX1NU
QVRFX1NFTEVDVEFCTEUpOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVs
dGlTZWxlY3RhYmxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY2hlY2tFbGVtZW50U3RhdGUobV9l
bGVtZW50LCBBVEtfU1RBVEVfTVVMVElTRUxFQ1RBQkxFKTsKLX0KLQotYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1Zpc2libGUoKSBjb25zdAotewotICAgIHJldHVybiBjaGVja0VsZW1l
bnRTdGF0ZShtX2VsZW1lbnQsIEFUS19TVEFURV9WSVNJQkxFKTsKLX0KLQotYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc09mZlNjcmVlbigpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGlt
cGxlbWVudAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAg
IHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0lnbm9y
ZWQoKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25zdAotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZUZvY3VzKCkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVt
ZW50Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGFrZVNlbGVjdGlvbigpCi17
Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZFNlbGVjdGlvbigpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotfQotCi12b2lk
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbigpCi17Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudAotfQotCi0vLyBUZXh0IG1hcmtlcnMKLVBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBlbGVtZW50KQotewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotaW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnRleHRNYXJrZXJSYW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJh
bmdlKiByYW5nZSkKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnByZXZpb3VzVGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciogdGV4dE1h
cmtlcikKLXsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om5leHRUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQotewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKiBtYXJrZXJSYW5nZSkKLXsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENoYXJhY3Rl
cnMoMCwgMCk7Ci19Ci0KLVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciogc3RhcnRNYXJrZXIsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBl
bmRNYXJrZXIpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQot
Ci1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXJSYW5nZSogcmFuZ2UpCi17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVy
biAwOwotfQotCi1QYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjplbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKEFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyUmFuZ2UqIHJhbmdlKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAg
ICByZXR1cm4gMDsKLX0KLQotUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvclBvaW50KGludCB4LCBpbnQgeSkKLXsK
LSAgICAvLyBGSVhNRTogaW1wbGVtZW50Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIp
Ci17Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAotICAgIHJldHVybiAwOwotfQotCi1ib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VD
b250YWluc0F0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UqIHJhbmdlKQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLWludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRN
YXJrZXIoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKLXsKLSAgICAvLyBGSVhNRTog
aW1wbGVtZW50Ci0gICAgcmV0dXJuIC0xOwotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2Vy
KQotewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBh
c3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQotewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKLSAgICByZXR1cm4gMDsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174636</attachid>
            <date>2012-11-16 03:31:01 -0800</date>
            <delta_ts>2012-11-20 01:50:19 -0800</delta_ts>
            <desc>Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</desc>
            <filename>20121116]-[m.leszko@samsung.com]-[Bug 100757 - [EFL][GTK] Adapt accessibility support for EFL].patch</filename>
            <type>text/plain</type>
            <size>7788</size>
            <attacher name="Mateusz Leszko">m.leszko</attacher>
            
              <data encoding="base64">Y29tbWl0IDYzODgxMDdhZTcxMzU2YzQ4ZmJlNTk0ZDk4NThlNTAzNzkyMjBmN2IKQXV0aG9yOiBN
YXRldXN6IExlc3prbyA8bS5sZXN6a29Ac2Ftc3VuZy5jb20+CkRhdGU6ICAgV2VkIE5vdiAxNCAx
NToyNDowOCAyMDEyICswMTAwCgogICAgQnVnIDk5MDExIC0gW0VGTF1bR1RLXVNoYXJpbmcgYWNj
ZXNzaWJpbGl0eSBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIKICAgIAogICAgQ2hhbmdlLUlk
OiBJZDFkOWY1YThlODU5OTNmY2IzYzg0ZTU0MTc3ZDRlNzA2ZTBhZDhmZgoKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZDRlODIyLi45NTUwNTY3
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTEtMTQgIE1hdGV1c3ogTGVzemtvICA8bS5sZXN6a29Ac2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF1bR1RLXVNoYXJpbmcgYWNjZXNzaWJpbGl0eSBzdXBwb3J0
IGluIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFjY2Vzc2liaWxpdHkgZmlsZXMgZnJvbSBndGsgZm9sZGVyIGFyZSBtb3Zl
ZCB0byBhdGsgZm9sZGVyIGR1ZSB0byBjb21tb24gaW1wbGVtZW50YXRpb24uIEV2ZW50IFR5cGUg
bmFtaW5nIGNoYW5nZWQgdG8gZGVmYXVsdCwgZnJvbSBHdGsgdG8gQVRLLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJBdGsuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcC4KKwogMjAxMi0xMS0xNCAg
VGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIxMzM3NTcpOiBDYXVzaW5nIHdlYmtpdHB5IHVuaXQgdGVzdHMgdG8g
ZmFpbApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggYThhMmZhZC4uY2Q1
Y2E3MSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5NCw4
IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwK
IAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY3RpdmF0ZUZvbnRzLmggXAorICAgICAgICBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgXAorICAgICAg
ICBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50QXRrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNXcmFwcGVyLmggXApAQCAtMTAxLDggKzEwMyw2
IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwK
IAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0NvbnRy
b2xsZXIuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29u
dHJvbGxlci5oIFwKLQlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAgXAotCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwIFwKIAlUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY3RpdmF0ZUZvbnRzR3RrLmNw
cCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvSW5qZWN0ZWRC
dW5kbGVHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckF0ay5jcHAKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsu
Y3BwCnJlbmFtZSB0byBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKaW5kZXggNDg5YzlhNS4uNTNlNzZkZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtNjgsMjUg
KzY4LDI1IEBAIHN0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbElu
dm9jYXRpb25IaW50ICpzaWduYWxIaW50LCBndWludCBuCiAgICAgaWYgKCFhY2Nlc3NpYmxlIHx8
ICFBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAg
IEdTaWduYWxRdWVyeSBzaWduYWxfcXVlcnk7CisgICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5
OwogICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWU7CiAgICAgR093blB0cjxnY2hhcj4gc2ln
bmFsVmFsdWU7CiAKLSAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZz
aWduYWxfcXVlcnkpOworICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwg
JnNpZ25hbFF1ZXJ5KTsKIAotICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbF9xdWVyeS5zaWduYWxf
bmFtZSwgInN0YXRlLWNoYW5nZSIpKSB7CisgICAgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnku
c2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkgewogICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdfdmFsdWVfZ2V0X3N0cmluZygmcGFy
YW1WYWx1ZXNbMV0pKSk7CiAgICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYo
IiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMl0pKSk7Ci0gICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbF9xdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50Iikp
IHsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJm
b2N1cy1ldmVudCIpKSB7CiAgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1l
dmVudCIpKTsKICAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBn
X3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFn
X3N0cmNtcDAoc2lnbmFsX3F1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdlZCIpKSB7
CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hp
bGRyZW4tY2hhbmdlZCIpKSB7CiAgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJjaGls
ZHJlbi1jaGFuZ2VkIikpOwogICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChzaWduYWxfcXVlcnkuc2lnbmFsX25hbWUsICJwcm9wZXJ0eS1jaGFuZ2Ui
KSkKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJw
cm9wZXJ0eS1jaGFuZ2UiKSkKICAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRh
aWwpKSk7CiAgICAgZWxzZQotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxf
cXVlcnkuc2lnbmFsX25hbWUpKTsKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoc2ln
bmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKIAogICAgIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KGFj
Y2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZhbHVlLmdldCgpKTsKIApAQCAtMTAz
LDEyICsxMDMsMTIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJp
bGl0eUV2ZW50cygpCiAgICAgcm9vdEVsZW1lbnQoKTsKIAogICAgIC8vIEFkZCBnbG9iYWwgbGlz
dGVuZXJzIGZvciBBdGtPYmplY3QncyBzaWduYWxzLgotICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5l
cklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVy
LCAiR3RrOkF0a09iamVjdDpzdGF0ZS1jaGFuZ2UiKTsKLSAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5l
cklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVy
LCAiR3RrOkF0a09iamVjdDpmb2N1cy1ldmVudCIpOwotICAgIG1fYWN0aXZlRGVzY2VuZGFudENo
YW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RF
dmVudExpc3RlbmVyLCAiR3RrOkF0a09iamVjdDphY3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7
Ci0gICAgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRf
bGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiR3RrOkF0a09iamVjdDpjaGlsZHJlbi1j
aGFuZ2VkIik7Ci0gICAgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9i
YWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiR3RrOkF0a09iamVjdDpw
cm9wZXJ0eS1jaGFuZ2UiKTsKLSAgICBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSBh
dGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6
QXRrT2JqZWN0OnZpc2libGUtZGF0YS1jaGFuZ2VkIik7CisgICAgbV9zdGF0ZUNoYW5nZUxpc3Rl
bmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVu
ZXIsICJBVEs6QXRrT2JqZWN0OnN0YXRlLWNoYW5nZSIpOworICAgIG1fZm9jdXNFdmVudExpc3Rl
bmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVu
ZXIsICJBVEs6QXRrT2JqZWN0OmZvY3VzLWV2ZW50Iik7CisgICAgbV9hY3RpdmVEZXNjZW5kYW50
Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVj
dEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmFjdGl2ZS1kZXNjZW5kYW50LWNoYW5nZWQi
KTsKKyAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVu
dF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmNoaWxkcmVu
LWNoYW5nZWQiKTsKKyAgICBtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0
OnByb3BlcnR5LWNoYW5nZSIpOworICAgIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9
IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFU
SzpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsKIAogICAgIC8vIEVuc3VyZSB0aGUg
QXRrIGludGVyZmFjZSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCiAgICAgLy8gdGhl
IEF0a0RvY3VtZW50IHNpZ25hbCBoYW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVnaXN0ZXJlZC4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKc2ltaWxhcml0eSBp
bmRleCA5OSUKcmVuYW1lIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKcmVuYW1lIHRvIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwCmluZGV4IDY1OTkzNDYuLjlhZWVmMzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBnY2hhciogYXR0cmli
dXRlU2V0VG9TdHJpbmcoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVTZXQpCiBzdGF0aWMgYm9v
bCBjaGVja0VsZW1lbnRTdGF0ZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBBdGtTdGF0ZVR5
cGUgc3RhdGVUeXBlKQogewogICAgIGlmICghQVRLX0lTX09CSkVDVChlbGVtZW50KSkKLSAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgR1JlZlB0cjxB
dGtTdGF0ZVNldD4gc3RhdGVTZXQgPSBhZG9wdEdSZWYoYXRrX29iamVjdF9yZWZfc3RhdGVfc2V0
KEFUS19PQkpFQ1QoZWxlbWVudCkpKTsKICAgICByZXR1cm4gYXRrX3N0YXRlX3NldF9jb250YWlu
c19zdGF0ZShzdGF0ZVNldC5nZXQoKSwgc3RhdGVUeXBlKTsK
</data>
<flag name="review"
          id="189774"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
    <flag name="commit-queue"
          id="190000"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175173</attachid>
            <date>2012-11-20 01:50:19 -0800</date>
            <delta_ts>2012-11-20 02:03:21 -0800</delta_ts>
            <desc> Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</desc>
            <filename>leszko@samsung.com]-[Bug 99011 - [EFL][GTK] Sharing accessibility support in WebKitTestRunner].patch</filename>
            <type>text/plain</type>
            <size>7774</size>
            <attacher name="Mateusz Leszko">m.leszko</attacher>
            
              <data encoding="base64">Y29tbWl0IDg1NDg1YTAxYTg4OTQ3NjZhOGZjMzhkNzM1NDY4MDNhNmQ3NTdiMWMKQXV0aG9yOiBN
YXRldXN6IExlc3prbyA8bS5sZXN6a29Ac2Ftc3VuZy5jb20+CkRhdGU6ICAgV2VkIE5vdiAxNCAx
NToyNDowOCAyMDEyICswMTAwCgogICAgQnVnIDk5MDExIC0gW0VGTF1bR1RLXVNoYXJpbmcgYWNj
ZXNzaWJpbGl0eSBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIKICAgIAogICAgQ2hhbmdlLUlk
OiBJZDFkOWY1YThlODU5OTNmY2IzYzg0ZTU0MTc3ZDRlNzA2ZTBhZDhmZgoKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZDRlODIyLi45NTUwNTY3
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTEtMTQgIE1hdGV1c3ogTGVzemtvICA8bS5sZXN6a29Ac2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF1bR1RLXVNoYXJpbmcgYWNjZXNzaWJpbGl0eSBzdXBwb3J0
IGluIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFjY2Vzc2liaWxpdHkgZmlsZXMgZnJvbSBndGsgZm9sZGVyIGFyZSBtb3Zl
ZCB0byBhdGsgZm9sZGVyIGR1ZSB0byBjb21tb24gaW1wbGVtZW50YXRpb24uIEV2ZW50IFR5cGUg
bmFtaW5nIGNoYW5nZWQgdG8gZGVmYXVsdCwgZnJvbSBHdGsgdG8gQVRLLgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJBdGsuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cyk6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcC4KKwogMjAxMi0xMS0xNCAg
VGhpYWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OKHIxMzM3NTcpOiBDYXVzaW5nIHdlYmtpdHB5IHVuaXQgdGVzdHMgdG8g
ZmFpbApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggYThhMmZhZC4uOGM3
Y2JhNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5NCw4
IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwK
IAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9BY3RpdmF0ZUZvbnRzLmggXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5j
cHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvSlNX
cmFwcGFibGUuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9KU1dyYXBwZXIuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5oIFwKQEAgLTEwMSw4ICsxMDMsNiBAQCBMaWJyYXJpZXNf
bGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX2xhX1NPVVJDRVMgPSBcCiAJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmggXAogCVRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmNwcCBcCiAJ
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9HQ0NvbnRyb2xsZXIuaCBcCi0J
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJHdGsuY3BwIFwKLQlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWN0aXZhdGVGb250c0d0ay5jcHAgXAogCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0luamVjdGVkQnVuZGxlR3RrLmNwcCBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvVGVzdFJ1bm5lckd0
ay5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9ndGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCnNp
bWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcApyZW5hbWUgdG8g
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJBdGsuY3BwCmluZGV4IDQ4OWM5YTUuLjUzZTc2ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyR3RrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTY4LDI1ICs2OCwyNSBAQCBzdGF0
aWMgZ2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAq
c2lnbmFsSGludCwgZ3VpbnQgbgogICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVD
VChhY2Nlc3NpYmxlKSkKICAgICAgICAgcmV0dXJuIFRSVUU7CiAKLSAgICBHU2lnbmFsUXVlcnkg
c2lnbmFsX3F1ZXJ5OworICAgIEdTaWduYWxRdWVyeSBzaWduYWxRdWVyeTsKICAgICBHT3duUHRy
PGdjaGFyPiBzaWduYWxOYW1lOwogICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbFZhbHVlOwogCi0g
ICAgZ19zaWduYWxfcXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsX3F1ZXJ5KTsK
KyAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWduYWxRdWVyeSk7
CiAKLSAgICBpZiAoIWdfc3RyY21wMChzaWduYWxfcXVlcnkuc2lnbmFsX25hbWUsICJzdGF0ZS1j
aGFuZ2UiKSkgeworICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAi
c3RhdGUtY2hhbmdlIikpIHsKICAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkp
OwogICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVf
Z2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21w
MChzaWduYWxfcXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIpKSB7CisgICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkg
ewogICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7CiAgICAg
ICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9v
bGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25h
bF9xdWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgeworICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQi
KSkgewogICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgiY2hpbGRyZW4tY2hhbmdlZCIp
KTsKICAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVl
X2dldF91aW50KCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAo
c2lnbmFsX3F1ZXJ5LnNpZ25hbF9uYW1lLCAicHJvcGVydHktY2hhbmdlIikpCisgICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAicHJvcGVydHktY2hhbmdl
IikpCiAgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hh
bmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOwogICAgIGVs
c2UKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsX3F1ZXJ5LnNpZ25hbF9u
YW1lKSk7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25h
bF9uYW1lKSk7CiAKICAgICBwcmludEFjY2Vzc2liaWxpdHlFdmVudChhY2Nlc3NpYmxlLCBzaWdu
YWxOYW1lLmdldCgpLCBzaWduYWxWYWx1ZS5nZXQoKSk7CiAKQEAgLTEwMywxMiArMTAzLDEyIEBA
IHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQog
ICAgIHJvb3RFbGVtZW50KCk7CiAKICAgICAvLyBBZGQgZ2xvYmFsIGxpc3RlbmVycyBmb3IgQXRr
T2JqZWN0J3Mgc2lnbmFscy4KLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IGF0a19hZGRf
Z2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmpl
Y3Q6c3RhdGUtY2hhbmdlIik7Ci0gICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9IGF0a19hZGRf
Z2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmpl
Y3Q6Zm9jdXMtZXZlbnQiKTsKLSAgICBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJ
ZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwg
Ikd0azpBdGtPYmplY3Q6YWN0aXZlLWRlc2NlbmRhbnQtY2hhbmdlZCIpOwotICAgIG1fY2hpbGRy
ZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2Jq
ZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmplY3Q6Y2hpbGRyZW4tY2hhbmdlZCIpOwotICAg
IG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3Rl
bmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmplY3Q6cHJvcGVydHktY2hhbmdl
Iik7Ci0gICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiR3RrOkF0a09iamVjdDp2aXNp
YmxlLWRhdGEtY2hhbmdlZCIpOworICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gYXRrX2Fk
ZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09i
amVjdDpzdGF0ZS1jaGFuZ2UiKTsKKyAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkID0gYXRrX2Fk
ZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09i
amVjdDpmb2N1cy1ldmVudCIpOworICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5l
cklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVy
LCAiQVRLOkF0a09iamVjdDphY3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7CisgICAgbV9jaGls
ZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhP
YmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFuZ2VkIik7Cisg
ICAgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlz
dGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpwcm9wZXJ0eS1jaGFu
Z2UiKTsKKyAgICBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2Jh
bF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZp
c2libGUtZGF0YS1jaGFuZ2VkIik7CiAKICAgICAvLyBFbnN1cmUgdGhlIEF0ayBpbnRlcmZhY2Ug
dHlwZXMgYXJlIHJlZ2lzdGVyZWQsIG90aGVyd2lzZQogICAgIC8vIHRoZSBBdGtEb2N1bWVudCBz
aWduYWwgaGFuZGxlcnMgYmVsb3cgd29uJ3QgZ2V0IHJlZ2lzdGVyZWQuCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50R3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFt
ZSBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRHdGsuY3BwCnJlbmFtZSB0byBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA2NTk5
MzQ2Li45YWVlZjM3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgZ2NoYXIqIGF0dHJpYnV0ZVNldFRvU3RyaW5n
KEF0a0F0dHJpYnV0ZVNldCogYXR0cmlidXRlU2V0KQogc3RhdGljIGJvb2wgY2hlY2tFbGVtZW50
U3RhdGUoUGxhdGZvcm1VSUVsZW1lbnQgZWxlbWVudCwgQXRrU3RhdGVUeXBlIHN0YXRlVHlwZSkK
IHsKICAgICBpZiAoIUFUS19JU19PQkpFQ1QoZWxlbWVudCkpCi0gICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEdSZWZQdHI8QXRrU3RhdGVTZXQ+IHN0
YXRlU2V0ID0gYWRvcHRHUmVmKGF0a19vYmplY3RfcmVmX3N0YXRlX3NldChBVEtfT0JKRUNUKGVs
ZW1lbnQpKSk7CiAgICAgcmV0dXJuIGF0a19zdGF0ZV9zZXRfY29udGFpbnNfc3RhdGUoc3RhdGVT
ZXQuZ2V0KCksIHN0YXRlVHlwZSk7Cg==
</data>
<flag name="review"
          id="190540"
          type_id="1"
          status="+"
          setter="m.leszko"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175174</attachid>
            <date>2012-11-20 02:03:21 -0800</date>
            <delta_ts>2012-11-20 02:25:10 -0800</delta_ts>
            <desc>Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.</desc>
            <filename>leszko@samsung.com]-[Bug 99011 - [EFL][GTK] Sharing accessibility support in WebKitTestRunner].patch</filename>
            <type>text/plain</type>
            <size>7775</size>
            <attacher name="Mateusz Leszko">m.leszko</attacher>
            
              <data encoding="base64">Y29tbWl0IDk4NjNjZGU4NmFiZTJhZjQ5NDUwNTk2MThhMDEwOTY1ZDg4YWIwMjYKQXV0aG9yOiBN
YXRldXN6IExlc3prbyA8bS5sZXN6a29Ac2Ftc3VuZy5jb20+CkRhdGU6ICAgV2VkIE5vdiAxNCAx
NToyNDowOCAyMDEyICswMTAwCgogICAgQnVnIDk5MDExIC0gW0VGTF1bR1RLXVNoYXJpbmcgYWNj
ZXNzaWJpbGl0eSBzdXBwb3J0IGluIFdlYktpdFRlc3RSdW5uZXIKICAgIAogICAgQ2hhbmdlLUlk
OiBJZDFkOWY1YThlODU5OTNmY2IzYzg0ZTU0MTc3ZDRlNzA2ZTBhZDhmZgoKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhZDRlODIyLi5kMWI2ZTcz
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTItMTEtMTQgIE1hdGV1c3ogTGVzemtvICA8bS5sZXN6a29Ac2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgW0VGTF1bR1RLXVNoYXJpbmcgYWNjZXNzaWJpbGl0eSBzdXBwb3J0
IGluIFdlYktpdFRlc3RSdW5uZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTAxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNv
bi4KKworICAgICAgICBBY2Nlc3NpYmlsaXR5IGZpbGVzIGZyb20gZ3RrIGZvbGRlciBhcmUgbW92
ZWQgdG8gYXRrIGZvbGRlciBkdWUgdG8gY29tbW9uIGltcGxlbWVudGF0aW9uLiBFdmVudCBUeXBl
IG5hbWluZyBjaGFuZ2VkIHRvIGRlZmF1bHQsIGZyb20gR3RrIHRvIEFUSy4KKworICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyQXRrLmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAuCisKIDIwMTItMTEtMTQg
IFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTihyMTMzNzU3KTogQ2F1c2luZyB3ZWJraXRweSB1bml0IHRlc3RzIHRv
IGZhaWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGE4YTJmYWQuLjhj
N2NiYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQpAQCAtOTQsNiArOTQs
OCBAQCBMaWJyYXJpZXNfbGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX2xhX1NPVVJDRVMgPSBc
CiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWN0aXZhdGVGb250cy5oIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgXAorCVRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pT
V3JhcHBhYmxlLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvSlNXcmFwcGVyLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9CaW5kaW5ncy9KU1dyYXBwZXIuaCBcCkBAIC0xMDEsOCArMTAzLDYgQEAgTGlicmFyaWVz
X2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9sYV9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0dDQ29udHJvbGxlci5jcHAgXAog
CVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvR0NDb250cm9sbGVyLmggXAot
CVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyR3RrLmNwcCBcCi0JVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL0FjdGl2YXRlRm9udHNHdGsuY3BwIFwKIAlUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9JbmplY3RlZEJ1bmRsZUd0ay5jcHAg
XAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvZ3RrL1Rlc3RSdW5uZXJH
dGsuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvZ3RrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApz
aW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckd0ay5jcHAKcmVuYW1lIHRv
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyQXRrLmNwcAppbmRleCA0ODljOWE1Li41M2U3NmRkIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlckd0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCkBAIC02OCwyNSArNjgsMjUgQEAgc3Rh
dGljIGdib29sZWFuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihHU2lnbmFsSW52b2NhdGlvbkhpbnQg
KnNpZ25hbEhpbnQsIGd1aW50IG4KICAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpF
Q1QoYWNjZXNzaWJsZSkpCiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgR1NpZ25hbFF1ZXJ5
IHNpZ25hbF9xdWVyeTsKKyAgICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7CiAgICAgR093blB0
cjxnY2hhcj4gc2lnbmFsTmFtZTsKICAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxWYWx1ZTsKIAot
ICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbF9xdWVyeSk7
CisgICAgZ19zaWduYWxfcXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsUXVlcnkp
OwogCi0gICAgaWYgKCFnX3N0cmNtcDAoc2lnbmFsX3F1ZXJ5LnNpZ25hbF9uYW1lLCAic3RhdGUt
Y2hhbmdlIikpIHsKKyAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
InN0YXRlLWNoYW5nZSIpKSB7CiAgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50
Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkp
KTsKICAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVl
X2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAoc2lnbmFsX3F1ZXJ5LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgeworICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50Iikp
IHsKICAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwogICAg
ICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jv
b2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWdu
YWxfcXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikpIHsKKyAgICB9IGVsc2Ug
aWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2Vk
IikpIHsKICAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImNoaWxkcmVuLWNoYW5nZWQi
KSk7CiAgICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1
ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAw
KHNpZ25hbF9xdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKQorICAgIH0gZWxz
ZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5n
ZSIpKQogICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNo
YW5nZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKICAgICBl
bHNlCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbF9xdWVyeS5zaWduYWxf
bmFtZSkpOworICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWdu
YWxfbmFtZSkpOwogCiAgICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNzaWJsZSwgc2ln
bmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwogCkBAIC0xMDMsMTIgKzEwMywxMiBA
QCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkK
ICAgICByb290RWxlbWVudCgpOwogCiAgICAgLy8gQWRkIGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0
a09iamVjdCdzIHNpZ25hbHMuCi0gICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSBhdGtfYWRk
X2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2Jq
ZWN0OnN0YXRlLWNoYW5nZSIpOwotICAgIG1fZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRk
X2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2Jq
ZWN0OmZvY3VzLWV2ZW50Iik7Ci0gICAgbV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVy
SWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIs
ICJHdGs6QXRrT2JqZWN0OmFjdGl2ZS1kZXNjZW5kYW50LWNoYW5nZWQiKTsKLSAgICBtX2NoaWxk
cmVuQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9i
amVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OmNoaWxkcmVuLWNoYW5nZWQiKTsKLSAg
ICBtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0
ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJHdGs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5n
ZSIpOwotICAgIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFs
X2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkd0azpBdGtPYmplY3Q6dmlz
aWJsZS1kYXRhLWNoYW5nZWQiKTsKKyAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IGF0a19h
ZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtP
YmplY3Q6c3RhdGUtY2hhbmdlIik7CisgICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9IGF0a19h
ZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtP
YmplY3Q6Zm9jdXMtZXZlbnQiKTsKKyAgICBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVu
ZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5l
ciwgIkFUSzpBdGtPYmplY3Q6YWN0aXZlLWRlc2NlbmRhbnQtY2hhbmdlZCIpOworICAgIG1fY2hp
bGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4
T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4tY2hhbmdlZCIpOwor
ICAgIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xp
c3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6cHJvcGVydHktY2hh
bmdlIik7CisgICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9i
YWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDp2
aXNpYmxlLWRhdGEtY2hhbmdlZCIpOwogCiAgICAgLy8gRW5zdXJlIHRoZSBBdGsgaW50ZXJmYWNl
IHR5cGVzIGFyZSByZWdpc3RlcmVkLCBvdGhlcndpc2UKICAgICAvLyB0aGUgQXRrRG9jdW1lbnQg
c2lnbmFsIGhhbmRsZXJzIGJlbG93IHdvbid0IGdldCByZWdpc3RlcmVkLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudEd0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5h
bWUgZnJvbSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2d0ay9BY2Nlc3Np
YmlsaXR5VUlFbGVtZW50R3RrLmNwcApyZW5hbWUgdG8gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggNjU5
OTM0Ni4uOWFlZWYzNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0
ay5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGdjaGFyKiBhdHRyaWJ1dGVTZXRUb1N0cmlu
ZyhBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0ZVNldCkKIHN0YXRpYyBib29sIGNoZWNrRWxlbWVu
dFN0YXRlKFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQsIEF0a1N0YXRlVHlwZSBzdGF0ZVR5cGUp
CiB7CiAgICAgaWYgKCFBVEtfSVNfT0JKRUNUKGVsZW1lbnQpKQotICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBHUmVmUHRyPEF0a1N0YXRlU2V0PiBz
dGF0ZVNldCA9IGFkb3B0R1JlZihhdGtfb2JqZWN0X3JlZl9zdGF0ZV9zZXQoQVRLX09CSkVDVChl
bGVtZW50KSkpOwogICAgIHJldHVybiBhdGtfc3RhdGVfc2V0X2NvbnRhaW5zX3N0YXRlKHN0YXRl
U2V0LmdldCgpLCBzdGF0ZVR5cGUpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>