<?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>52874</bug_id>
          
          <creation_ts>2011-01-21 02:02:00 -0800</creation_ts>
          <short_desc>Web Inspector: move sticky breakpoints management from InspectorController to InspectorBrowserDebuggerAgent</short_desc>
          <delta_ts>2011-01-21 08:09:13 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Pavel Podivilov">podivilov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>337942</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-21 02:02:00 -0800</bug_when>
    <thetext>Both InspectorBrowserDebuggerAgent and InspectorDebuggerAgent should manage sticky breakpoints by themselves using InspectorState object.
In this patch, sticky breakpoints management moved from InspectorController to InspectorBrowserDebuggerAgent. Patch for InspectorDebuggerAgent will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337943</commentid>
    <comment_count>1</comment_count>
      <attachid>79711</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-21 02:02:40 -0800</bug_when>
    <thetext>Created attachment 79711
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337946</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 02:05:40 -0800</bug_when>
    <thetext>Attachment 79711 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h:62:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h:65:  The parameter name &quot;breakpoints&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337950</commentid>
    <comment_count>3</comment_count>
      <attachid>79711</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-21 02:14:52 -0800</bug_when>
    <thetext>Comment on attachment 79711
Patch.

I don&apos;t see why this is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337967</commentid>
    <comment_count>4</comment_count>
      <attachid>79717</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-21 02:52:08 -0800</bug_when>
    <thetext>Created attachment 79717
Patch.

ChangeLog updated with explanation and link to bug 52879.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337969</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 02:53:30 -0800</bug_when>
    <thetext>Attachment 79717 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/InspectorController.h:248:  The parameter name &quot;breakpoints&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h:62:  The parameter name &quot;url&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337971</commentid>
    <comment_count>6</comment_count>
      <attachid>79718</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-21 02:54:51 -0800</bug_when>
    <thetext>Created attachment 79718
Fix style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338064</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-21 08:09:13 -0800</bug_when>
    <thetext>Committed r76348: &lt;http://trac.webkit.org/changeset/76348&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79711</attachid>
            <date>2011-01-21 02:02:40 -0800</date>
            <delta_ts>2011-01-21 02:52:08 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21438</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5mMjYzZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTEtMDEtMjEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBzdGlja3kgYnJlYWtwb2ludHMgbWFuYWdlbWVudCBmcm9tIEluc3BlY3Rv
ckNvbnRyb2xsZXIgdG8gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjg3NAorCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJy
b3dzZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dz
ZXJEZWJ1Z2dlckFnZW50OjpzZXRBbGxCcm93c2VyQnJlYWtwb2ludHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlc3Rv
cmVTdGlja3lCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJE
ZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2VydERPTU5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNldERPTUJy
ZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6Omhhc0JyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRy
ZWVCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1
Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZUluc3BlY3Rv
clN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dGVkVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZS5fc2F2ZUJyZWFr
cG9pbnRzKToKKwogMjAxMS0wMS0yMCAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbAppbmRleCBiOGQxMjUwLi5mNzVkNTkzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMjQyLDggKzI0Miw2IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQgZW5hYmxlRGVidWdnZXIoaW4gYm9vbGVh
biBhbHdheXMpOwogICAgICAgICBbZG9tYWluPUluc3BlY3Rvcl0gdm9pZCBkaXNhYmxlRGVidWdn
ZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lk
IHNldFN0aWNreUJyZWFrcG9pbnRzKGluIE9iamVjdCBicmVha3BvaW50cyk7Ci0KICAgICAgICAg
W25vdGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGRlYnVnZ2VyV2FzRW5hYmxlZCgpOwogICAg
ICAgICBbbm90aWZ5LCBkb21haW49RGVidWdnZXJdIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgp
OwogCkBAIC0yNTYsNiArMjU0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPURl
YnVnZ2VyXSB2b2lkIHNldEJyZWFrcG9pbnQoaW4gU3RyaW5nIHNvdXJjZUlELCBpbiB1bnNpZ25l
ZCBpbnQgbGluZU51bWJlciwgaW4gU3RyaW5nIGNvbmRpdGlvbiwgaW4gYm9vbGVhbiBlbmFibGVk
LCBvdXQgU3RyaW5nIGJyZWFrcG9pbnRJZCwgb3V0IHVuc2lnbmVkIGludCBhY3R1YWxMaW5lTnVt
YmVyKTsKICAgICAgICAgW2RvbWFpbj1EZWJ1Z2dlcl0gdm9pZCByZW1vdmVCcmVha3BvaW50KGlu
IFN0cmluZyBicmVha3BvaW50SWQpOwogCisgICAgICAgIFtkb21haW49QnJvd3NlckRlYnVnZ2Vy
XSB2b2lkIHNldEFsbEJyb3dzZXJCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOwog
ICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRET01CcmVha3BvaW50KGlu
IGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5cGUpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1
Z2dlcl0gdm9pZCByZW1vdmVET01CcmVha3BvaW50KGluIGxvbmcgbm9kZUlkLCBpbiBsb25nIHR5
cGUpOwogICAgICAgICBbZG9tYWluPUJyb3dzZXJEZWJ1Z2dlcl0gdm9pZCBzZXRFdmVudExpc3Rl
bmVyQnJlYWtwb2ludChpbiBTdHJpbmcgZXZlbnROYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDkwNjE4MWUuLjYyOTcwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcApAQCAtNzEsOSArNzEs
NzYgQEAgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudCgpCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6
OnNldEFsbEJyb3dzZXJCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJl
YWtwb2ludHMpCit7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zdGF0ZSgpLT5zZXRPYmpl
Y3QoSW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOworfQor
Cit2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjppbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVh
cigpOworICAgIG1fWEhSQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX2hhc1hIUkJyZWFrcG9p
bnRXaXRoRW1wdHlVUkwgPSBmYWxzZTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFs
bEJyZWFrcG9pbnRzID0gbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zdGF0ZSgpLT5nZXRPYmplY3Qo
SW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cyk7CisgICAgS1VSTCB1cmxDb3B5ID0g
dXJsOworICAgIHVybENvcHkucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgUmVmUHRy
PEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFrcG9pbnRzLT5nZXRBcnJheSh1
cmxDb3B5KTsKKyAgICBpZiAoIWJyZWFrcG9pbnRzKQorICAgICAgICByZXR1cm47CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLT5sZW5ndGgoKTsgKytpKQorICAgICAg
ICByZXN0b3JlU3RpY2t5QnJlYWtwb2ludChicmVha3BvaW50cy0+Z2V0KGkpLT5hc09iamVjdCgp
KTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cmVzdG9yZVN0aWNr
eUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnQpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGV2ZW50TGlzdGVuZXJCcmVha3BvaW50VHlw
ZSwgKCJFdmVudExpc3RlbmVyIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBq
YXZhU2NyaXB0QnJlYWtwb2ludFR5cGUsICgiSlMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHhockJyZWFrcG9pbnRUeXBlLCAoIlhIUiIpKTsKKworICAgIGlmICghYnJlYWtw
b2ludCkKKyAgICAgICAgcmV0dXJuOworICAgIFN0cmluZyB0eXBlOworICAgIGlmICghYnJlYWtw
b2ludC0+Z2V0U3RyaW5nKCJ0eXBlIiwgJnR5cGUpKQorICAgICAgICByZXR1cm47CisgICAgYm9v
bCBlbmFibGVkOworICAgIGlmICghYnJlYWtwb2ludC0+Z2V0Qm9vbGVhbigiZW5hYmxlZCIsICZl
bmFibGVkKSkKKyAgICAgICAgcmV0dXJuOworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGNv
bmRpdGlvbiA9IGJyZWFrcG9pbnQtPmdldE9iamVjdCgiY29uZGl0aW9uIik7CisgICAgaWYgKCFj
b25kaXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh0eXBlID09IGV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50VHlwZSkgeworICAgICAgICBpZiAoIWVuYWJsZWQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIFN0cmluZyBldmVudE5hbWU7CisgICAgICAgIGlmICghY29uZGl0aW9u
LT5nZXRTdHJpbmcoImV2ZW50TmFtZSIsICZldmVudE5hbWUpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChldmVudE5hbWUpOworICAgIH0g
ZWxzZSBpZiAodHlwZSA9PSBqYXZhU2NyaXB0QnJlYWtwb2ludFR5cGUgJiYgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5kZWJ1Z2dlckFnZW50KCkpIHsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAg
ICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGRvdWJsZSBsaW5lTnVtYmVyOworICAgICAgICBpZiAoIWNvbmRpdGlv
bi0+Z2V0TnVtYmVyKCJsaW5lTnVtYmVyIiwgJmxpbmVOdW1iZXIpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBTdHJpbmcgamF2YVNjcmlwdENvbmRpdGlvbjsKKyAgICAgICAgaWYgKCFj
b25kaXRpb24tPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmphdmFTY3JpcHRDb25kaXRpb24pKQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRlYnVn
Z2VyQWdlbnQoKS0+c2V0U3RpY2t5QnJlYWtwb2ludCh1cmwsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRpdGlvbiwgZW5hYmxlZCk7CisgICAgfSBlbHNl
IGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBlKSB7CisgICAgICAgIGlmICghZW5hYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgaWYgKCFj
b25kaXRpb24tPmdldFN0cmluZygidXJsIiwgJnVybCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHNldFhIUkJyZWFrcG9pbnQodXJsKTsKKyAgICB9Cit9CisKIHZvaWQgSW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRCaW5kaW5ncygpCiB7Ci0gICAgbV9icmVha3Bv
aW50cy5jbGVhcigpOworICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQo
Y29uc3QgU3RyaW5nJiBldmVudE5hbWUpCkBAIC04OCw4ICsxNTUsOCBAQCB2b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobV9icmVha3BvaW50cy5zaXplKCkpIHsK
LSAgICAgICAgdWludDMyX3QgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KEluc3BlY3RvckRPTUFn
ZW50Ojppbm5lclBhcmVudE5vZGUobm9kZSkpOworICAgIGlmIChtX2RvbUJyZWFrcG9pbnRzLnNp
emUoKSkgeworICAgICAgICB1aW50MzJfdCBtYXNrID0gbV9kb21CcmVha3BvaW50cy5nZXQoSW5z
cGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShub2RlKSk7CiAgICAgICAgIHVpbnQzMl90
IGluaGVyaXRhYmxlVHlwZXNNYXNrID0gKG1hc2sgfCAobWFzayA+PiBkb21CcmVha3BvaW50RGVy
aXZlZFR5cGVTaGlmdCkpICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrOwogICAg
ICAgICBpZiAoaW5oZXJpdGFibGVUeXBlc01hc2spCiAgICAgICAgICAgICB1cGRhdGVTdWJ0cmVl
QnJlYWtwb2ludHMobm9kZSwgaW5oZXJpdGFibGVUeXBlc01hc2ssIHRydWUpOwpAQCAtOTgsMTYg
KzE2NSwxNiBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaWRJbnNlcnRE
T01Ob2RlKE5vZGUqIG5vZGUpCiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICBpZiAobV9icmVha3BvaW50cy5z
aXplKCkpIHsKKyAgICBpZiAobV9kb21CcmVha3BvaW50cy5zaXplKCkpIHsKICAgICAgICAgLy8g
UmVtb3ZlIHN1YnRyZWUgYnJlYWtwb2ludHMuCi0gICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3Zl
KG5vZGUpOworICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKICAgICAgICAg
VmVjdG9yPE5vZGUqPiBzdGFjaygxLCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxk
KG5vZGUpKTsKICAgICAgICAgZG8gewogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YWNrLmxh
c3QoKTsKICAgICAgICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIGlmICgh
bm9kZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1fYnJlYWtwb2lu
dHMucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9k
ZSk7CiAgICAgICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyRmly
c3RDaGlsZChub2RlKSk7CiAgICAgICAgICAgICBzdGFjay5hcHBlbmQoSW5zcGVjdG9yRE9NQWdl
bnQ6OmlubmVyTmV4dFNpYmxpbmcobm9kZSkpOwogICAgICAgICB9IHdoaWxlICghc3RhY2suaXNF
bXB0eSgpKTsKQEAgLTEyMSw3ICsxODgsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpzZXRET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgbV9icmVh
a3BvaW50cy5zZXQobm9kZSwgbV9icmVha3BvaW50cy5nZXQobm9kZSkgfCByb290Qml0KTsKKyAg
ICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKSB8
IHJvb3RCaXQpOwogICAgIGlmIChyb290Qml0ICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlw
ZXNNYXNrKSB7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6
aW5uZXJGaXJzdENoaWxkKG5vZGUpOyBjaGlsZDsgY2hpbGQgPSBJbnNwZWN0b3JET01BZ2VudDo6
aW5uZXJOZXh0U2libGluZyhjaGlsZCkpCiAgICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJlYWtw
b2ludHMoY2hpbGQsIHJvb3RCaXQsIHRydWUpOwpAQCAtMTM1LDExICsyMDIsMTEgQEAgdm9pZCBJ
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChsb25nIG5v
ZGVJZCwgbG9uZyB0eXBlKQogICAgICAgICByZXR1cm47CiAKICAgICB1aW50MzJfdCByb290Qml0
ID0gMSA8PCB0eXBlOwotICAgIHVpbnQzMl90IG1hc2sgPSBtX2JyZWFrcG9pbnRzLmdldChub2Rl
KSAmIH5yb290Qml0OworICAgIHVpbnQzMl90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChu
b2RlKSAmIH5yb290Qml0OwogICAgIGlmIChtYXNrKQotICAgICAgICBtX2JyZWFrcG9pbnRzLnNl
dChub2RlLCBtYXNrKTsKKyAgICAgICAgbV9kb21CcmVha3BvaW50cy5zZXQobm9kZSwgbWFzayk7
CiAgICAgZWxzZQotICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKKyAgICAgICAg
bV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9kZSk7CiAKICAgICBpZiAoKHJvb3RCaXQgJiBpbmhl
cml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spICYmICEobWFzayAmIChyb290Qml0IDw8IGRv
bUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkpIHsKICAgICAgICAgZm9yIChOb2RlKiBjaGls
ZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7IGNoaWxkOyBjaGls
ZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxkKSkKQEAgLTIxMCw3
ICsyNzcsNyBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlv
bkZvckRPTUV2ZW50KE5vZGUqIHRhcmdldCwgbG9uZyBicgogICAgICAgICBpZiAoIWluc2VydGlv
bikKICAgICAgICAgICAgIGJyZWFrcG9pbnRPd25lciA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5l
clBhcmVudE5vZGUodGFyZ2V0KTsKICAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25lcik7Ci0g
ICAgICAgIHdoaWxlICghKG1fYnJlYWtwb2ludHMuZ2V0KGJyZWFrcG9pbnRPd25lcikgJiAoMSA8
PCBicmVha3BvaW50VHlwZSkpKSB7CisgICAgICAgIHdoaWxlICghKG1fZG9tQnJlYWtwb2ludHMu
Z2V0KGJyZWFrcG9pbnRPd25lcikgJiAoMSA8PCBicmVha3BvaW50VHlwZSkpKSB7CiAgICAgICAg
ICAgICBicmVha3BvaW50T3duZXIgPSBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2Rl
KGJyZWFrcG9pbnRPd25lcik7CiAgICAgICAgICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyKTsK
ICAgICAgICAgfQpAQCAtMjI5LDE4ICsyOTYsMTggQEAgYm9vbCBJbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudDo6aGFzQnJlYWtwb2ludChOb2RlKiBub2RlLCBsb25nIHR5cGUpCiB7CiAgICAg
dWludDMyX3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKICAgICB1aW50MzJfdCBkZXJpdmVkQml0ID0g
cm9vdEJpdCA8PCBkb21CcmVha3BvaW50RGVyaXZlZFR5cGVTaGlmdDsKLSAgICByZXR1cm4gbV9i
cmVha3BvaW50cy5nZXQobm9kZSkgJiAocm9vdEJpdCB8IGRlcml2ZWRCaXQpOworICAgIHJldHVy
biBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKSAmIChyb290Qml0IHwgZGVyaXZlZEJpdCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVh
a3BvaW50cyhOb2RlKiBub2RlLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpCiB7Ci0gICAg
dWludDMyX3Qgb2xkTWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpOworICAgIHVpbnQzMl90
IG9sZE1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChub2RlKTsKICAgICB1aW50MzJfdCBkZXJp
dmVkTWFzayA9IHJvb3RNYXNrIDw8IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0OwogICAg
IHVpbnQzMl90IG5ld01hc2sgPSBzZXQgPyBvbGRNYXNrIHwgZGVyaXZlZE1hc2sgOiBvbGRNYXNr
ICYgfmRlcml2ZWRNYXNrOwogICAgIGlmIChuZXdNYXNrKQotICAgICAgICBtX2JyZWFrcG9pbnRz
LnNldChub2RlLCBuZXdNYXNrKTsKKyAgICAgICAgbV9kb21CcmVha3BvaW50cy5zZXQobm9kZSwg
bmV3TWFzayk7CiAgICAgZWxzZQotICAgICAgICBtX2JyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsK
KyAgICAgICAgbV9kb21CcmVha3BvaW50cy5yZW1vdmUobm9kZSk7CiAKICAgICB1aW50MzJfdCBu
ZXdSb290TWFzayA9IHJvb3RNYXNrICYgfm5ld01hc2s7CiAgICAgaWYgKCFuZXdSb290TWFzaykK
QEAgLTMxMywxMyArMzgwLDYgQEAgdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6
d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCkKICAgICBkZWJ1Z2dlckFn
ZW50LT5icmVha1Byb2dyYW0oTmF0aXZlQnJlYWtwb2ludERlYnVnZ2VyRXZlbnRUeXBlLCBldmVu
dERhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dDo6Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpCi17Ci0gICAgbV9ldmVudExpc3RlbmVyQnJlYWtw
b2ludHMuY2xlYXIoKTsKLSAgICBtX1hIUkJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAgbV9oYXNY
SFJCcmVha3BvaW50V2l0aEVtcHR5VVJMID0gZmFsc2U7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuaAppbmRleCA2YWYzMWU4Li43MDZjNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuaApAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBF
bGVtZW50OwogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKIGNsYXNzIEluc3BlY3Rvck9iamVj
dDsKK2NsYXNzIEtVUkw7CiBjbGFzcyBOb2RlOwogCiBjbGFzcyBJbnNwZWN0b3JCcm93c2VyRGVi
dWdnZXJBZ2VudCB7CkBAIC01OCw3ICs1OSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5J
bnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpOwogCisgICAgdm9pZCBpbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IEtVUkwmIHVybCk7CisKICAgICAvLyBCcm93c2VyRGVidWdnZXIgQVBJIGZv
ciBJbnNwZWN0b3JGcm9udGVuZAorICAgIHZvaWQgc2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50cyk7CiAgICAgdm9pZCBzZXRYSFJC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHJlbW92ZVhIUkJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiBldmVudE5hbWUpOwpAQCAtNzUsMTcgKzc5LDE4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAg
IHZvaWQgcGF1c2VPbk5hdGl2ZUV2ZW50SWZOZWVkZWQoY29uc3QgU3RyaW5nJiBjYXRlZ29yeVR5
cGUsIGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIAotICAgIHZv
aWQgY2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpOwogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAKKyAgICB2b2lkIHJlc3Rv
cmVTdGlja3lCcmVha3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50
KTsKKwogICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGxvbmcg
YnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBJbnNwZWN0b3JPYmplY3QqIGRlc2NyaXB0
aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2RlKiwgdWludDMyX3Qg
cm9vdE1hc2ssIGJvb2wgc2V0KTsKICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGxvbmcg
dHlwZSk7CiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKIAogICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIG1faW5zcGVjdG9yQ29udHJvbGxlcjsKLSAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJf
dD4gbV9icmVha3BvaW50czsKKyAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVh
a3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9ldmVudExpc3RlbmVyQnJlYWtwb2ludHM7
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fWEhSQnJlYWtwb2ludHM7CiAgICAgYm9vbCBtX2hhc1hI
UkJyZWFrcG9pbnRXaXRoRW1wdHlVUkw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggZDExZjcyMC4uYTY1NmI5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjIy
LDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZUluc3BlY3RvclN0
YXRlRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvCiAgICAgaWYgKCFtX2Zyb250ZW5k
KSB7CiAgICAgICAgIGNvbm5lY3RGcm9udGVuZCgpOwogICAgICAgICBtX2Zyb250ZW5kLT5mcm9u
dGVuZFJldXNlZCgpOwotICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKG1f
aW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7Cisg
ICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFVSTENoYW5nZWQoaW5zcGVjdGVkVVJMKCkuc3Ry
aW5nKCkpOwogICAgICAgICBtX2RvbUFnZW50LT5zZXREb2N1bWVudChtX2luc3BlY3RlZFBhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKICAgICAgICAgcHVzaERhdGFDb2xsZWN0ZWRPZmZs
aW5lKCk7CiAgICAgfQpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKCkKICAgICBtX2NvbnNvbGVBZ2VudC0+c2V0RnJvbnRlbmQobV9m
cm9udGVuZC5nZXQoKSk7CiAKICAgICAvLyBJbml0aWFsaXplIFdlYiBJbnNwZWN0b3IgdGl0bGUu
Ci0gICAgbV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmQtPmlu
c3BlY3RlZFVSTENoYW5nZWQoaW5zcGVjdGVkVVJMKCkuc3RyaW5nKCkpOwogCiAjaWYgRU5BQkxF
KE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKICAgICBtX2FwcGxpY2F0aW9uQ2FjaGVBZ2VudCA9
IG5ldyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhpcywgbV9mcm9udGVuZC5nZXQo
KSk7CkBAIC02NDMsOCArNjQzLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21t
aXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIGlmIChtX2RlYnVnZ2VyQWdl
bnQpIHsKICAgICAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+Y2xlYXJGb3JQYWdlTmF2aWdhdGlv
bigpOwogICAgICAgICAgICAgaWYgKG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQpCi0gICAgICAgICAg
ICAgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC0+Y2xlYXJGb3JQYWdlTmF2aWdhdGlvbigpOwot
ICAgICAgICAgICAgcmVzdG9yZVN0aWNreUJyZWFrcG9pbnRzKCk7CisgICAgICAgICAgICAgICAg
bV9icm93c2VyRGVidWdnZXJBZ2VudC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChpbnNwZWN0ZWRVUkwo
KSk7CiAgICAgICAgIH0KICNlbmRpZgogCkBAIC0xMDYyLDcgKzEwNjEsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OmVuYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKQogCiAgICAgbV9kZWJ1
Z2dlckFnZW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3JlYXRlKHRoaXMsIG1fZnJvbnRl
bmQuZ2V0KCkpOwogICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQgPSBJbnNwZWN0b3JCcm93c2Vy
RGVidWdnZXJBZ2VudDo6Y3JlYXRlKHRoaXMpOwotICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50
cygpOworICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmluc3BlY3RlZFVSTENoYW5nZWQoaW5z
cGVjdGVkVVJMKCkpOwogCiAgICAgbV9mcm9udGVuZC0+ZGVidWdnZXJXYXNFbmFibGVkKCk7CiB9
CkBAIC0xMDkxLDY5ICsxMDkwLDYgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUo
KQogICAgIGlmIChtX2RlYnVnZ2VyQWdlbnQpCiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+cmVz
dW1lKCk7CiB9Ci0KLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U3RpY2t5QnJlYWtwb2lu
dHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKQotewotICAgIG1fc3Rh
dGUtPnNldE9iamVjdChJbnNwZWN0b3JTdGF0ZTo6c3RpY2t5QnJlYWtwb2ludHMsIGJyZWFrcG9p
bnRzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtw
b2ludHMoKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGFsbEJyZWFrcG9pbnRzID0g
bV9zdGF0ZS0+Z2V0T2JqZWN0KEluc3BlY3RvclN0YXRlOjpzdGlja3lCcmVha3BvaW50cyk7Ci0g
ICAgS1VSTCB1cmwgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJs
KCk7Ci0gICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwotICAgIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4gYnJlYWtwb2ludHMgPSBhbGxCcmVha3BvaW50cy0+Z2V0QXJyYXkodXJsKTsK
LSAgICBpZiAoIWJyZWFrcG9pbnRzKQotICAgICAgICByZXR1cm47Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLT5sZW5ndGgoKTsgKytpKQotICAgICAgICByZXN0b3Jl
U3RpY2t5QnJlYWtwb2ludChicmVha3BvaW50cy0+Z2V0KGkpLT5hc09iamVjdCgpKTsKLX0KLQot
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludChQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlLCAoIkV2ZW50TGlzdGVuZXIi
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGphdmFTY3JpcHRCcmVha3BvaW50
VHlwZSwgKCJKUyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeGhyQnJlYWtw
b2ludFR5cGUsICgiWEhSIikpOwotCi0gICAgaWYgKCFicmVha3BvaW50KQotICAgICAgICByZXR1
cm47Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAgaWYgKCFicmVha3BvaW50LT5nZXRTdHJpbmcoInR5
cGUiLCAmdHlwZSkpCi0gICAgICAgIHJldHVybjsKLSAgICBib29sIGVuYWJsZWQ7Ci0gICAgaWYg
KCFicmVha3BvaW50LT5nZXRCb29sZWFuKCJlbmFibGVkIiwgJmVuYWJsZWQpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29uZGl0aW9uID0gYnJlYWtwb2lu
dC0+Z2V0T2JqZWN0KCJjb25kaXRpb24iKTsKLSAgICBpZiAoIWNvbmRpdGlvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlICYm
IG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQpIHsKLSAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgZXZlbnROYW1lOwotICAgICAgICBpZiAoIWNv
bmRpdGlvbi0+Z2V0U3RyaW5nKCJldmVudE5hbWUiLCAmZXZlbnROYW1lKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC0+c2V0RXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQoZXZlbnROYW1lKTsKLSAgICB9IGVsc2UgaWYgKHR5cGUgPT0gamF2YVNjcmlw
dEJyZWFrcG9pbnRUeXBlICYmIG1fZGVidWdnZXJBZ2VudCkgewotICAgICAgICBTdHJpbmcgdXJs
OwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1cmwiLCAmdXJsKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZG91YmxlIGxpbmVOdW1iZXI7Ci0gICAgICAgIGlmICgh
Y29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAmbGluZU51bWJlcikpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBqYXZhU2NyaXB0Q29uZGl0aW9uOwotICAgICAg
ICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJjb25kaXRpb24iLCAmamF2YVNjcmlwdENvbmRp
dGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fZGVidWdnZXJBZ2VudC0+c2V0
U3RpY2t5QnJlYWtwb2ludCh1cmwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihsaW5lTnVtYmVyKSwg
amF2YVNjcmlwdENvbmRpdGlvbiwgZW5hYmxlZCk7Ci0gICAgfSBlbHNlIGlmICh0eXBlID09IHho
ckJyZWFrcG9pbnRUeXBlICYmIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQpIHsKLSAgICAgICAgaWYg
KCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgdXJsOwotICAg
ICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1cmwiLCAmdXJsKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC0+c2V0WEhSQnJlYWtwb2lu
dCh1cmwpOwotICAgIH0KLX0KICNlbmRpZgogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmV2
YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2NyaXB0
KQpAQCAtMTQ1Myw2ICsxMzg5LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5z
cGVjdG9yRXh0ZW5zaW9uQVBJKGNvbnN0IFN0cmluZyYgc291cmNlKQogICAgIG1faW5zcGVjdG9y
RXh0ZW5zaW9uQVBJID0gc291cmNlOwogfQogCitLVVJMIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT51cmwoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpy
ZWxvYWRQYWdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIHNldCB0aGUgdXNlciBnZXN0
dXJlIGluZGljYXRvciBoZXJlPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKaW5kZXggZGNkZjdiYy4uNWI4Yjk1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMjUsNiArMTI1LDcgQEAg
cHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwogCiAgICAgUGFnZSogaW5zcGVjdGVk
UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQorICAgIEtVUkwgaW5zcGVj
dGVkVVJMKCkgY29uc3Q7CiAgICAgdm9pZCByZWxvYWRQYWdlKCk7CiAKICAgICB2b2lkIHJlc3Rv
cmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JDb29raWUp
OwpAQCAtMjQzLDggKzI0NCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2FibGVEZWJ1Z2dlcihi
b29sIGFsd2F5cyA9IGZhbHNlKTsKICAgICBib29sIGRlYnVnZ2VyRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVidWdnZXJBZ2VudDsgfQogICAgIHZvaWQgcmVzdW1lKCk7Ci0KLSAgICB2b2lk
IHNldFN0aWNreUJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3Bv
aW50cyk7CiAjZW5kaWYKIAogICAgIC8vIEdlbmVyaWMgY29kZSBjYWxsZWQgZnJvbSBjdXN0b20g
aW1wbGVtZW50YXRpb25zLgpAQCAtMjg5LDggKzI4OCw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29s
KTsKLSAgICB2b2lkIHJlc3RvcmVTdGlja3lCcmVha3BvaW50cygpOwotICAgIHZvaWQgcmVzdG9y
ZVN0aWNreUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnQp
OwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JDb29raWUoY29uc3QgQ29va2llJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0YXRlLmNwcAppbmRleCAyMjI5NGEwLi5kYmE5ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgSW5zcGVjdG9y
U3RhdGU6Okluc3BlY3RvclN0YXRlKEluc3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIHJlZ2lz
dGVyQm9vbGVhbih1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJC
b29sZWFuKHRpbWVsaW5lUHJvZmlsZXJFbmFibGVkLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29s
ZWFuKHNlYXJjaGluZ0Zvck5vZGUsIGZhbHNlKTsKLSAgICByZWdpc3Rlck9iamVjdChzdGlja3lC
cmVha3BvaW50cyk7CisgICAgcmVnaXN0ZXJPYmplY3QoYnJvd3NlckJyZWFrcG9pbnRzKTsKICAg
ICByZWdpc3RlckJvb2xlYW4oY29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgZmFsc2UpOwogICAgIHJl
Z2lzdGVyQm9vbGVhbihtb25pdG9yaW5nWEhSLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFu
KHJlc291cmNlQWdlbnRFbmFibGVkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdGF0ZS5oCmluZGV4IGI2MmY4ZGUuLjZlMTI2NzM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHNlYXJjaGluZ0Zvck5vZGUsCiAgICAgICAgIGNvbnNvbGVNZXNzYWdlc0VuYWJsZWQs
CiAgICAgICAgIHVzZXJJbml0aWF0ZWRQcm9maWxpbmcsCi0gICAgICAgIHN0aWNreUJyZWFrcG9p
bnRzLAorICAgICAgICBicm93c2VyQnJlYWtwb2ludHMsCiAgICAgICAgIHJlc291cmNlQWdlbnRF
bmFibGVkLAogICAgICAgICBsYXN0UHJvcGVydHlJZAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRl
eCA2N2VmMTEyLi5kOTQzZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKQEAgLTM0LDcgKzM0LDcgQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyID0gZnVuY3Rpb24oKQogICAgIHZhciBicmVha3Bv
aW50cyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5maW5kU2V0dGluZ0ZvckFsbFByb2plY3RzKCJu
YXRpdmVCcmVha3BvaW50cyIpOwogICAgIGZvciAodmFyIHByb2plY3RJZCBpbiBicmVha3BvaW50
cykKICAgICAgICAgdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbcHJvamVjdElkXSA9IHRoaXMuX3Zh
bGlkYXRlQnJlYWtwb2ludHMoYnJlYWtwb2ludHNbcHJvamVjdElkXSk7Ci0gICAgSW5zcGVjdG9y
QmFja2VuZC5zZXRTdGlja3lCcmVha3BvaW50cyh0aGlzLl9zdGlja3lCcmVha3BvaW50cyk7Cisg
ICAgSW5zcGVjdG9yQmFja2VuZC5zZXRBbGxCcm93c2VyQnJlYWtwb2ludHModGhpcy5fc3RpY2t5
QnJlYWtwb2ludHMpOwogCiAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKICAgICB0aGlzLl9k
b21CcmVha3BvaW50c1Jlc3RvcmVkID0gZmFsc2U7CkBAIC0zMDMsNyArMzAzLDcgQEAgV2ViSW5z
cGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLm5hdGl2ZUJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHM7CiAKICAgICAgICAg
dGhpcy5fc3RpY2t5QnJlYWtwb2ludHNbV2ViSW5zcGVjdG9yLnNldHRpbmdzLnByb2plY3RJZF0g
PSBicmVha3BvaW50czsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdGlja3lCcmVha3Bv
aW50cyh0aGlzLl9zdGlja3lCcmVha3BvaW50cyk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQu
c2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKHRoaXMuX3N0aWNreUJyZWFrcG9pbnRzKTsKICAgICB9
LAogCiAgICAgX3ZhbGlkYXRlQnJlYWtwb2ludHM6IGZ1bmN0aW9uKHBlcnNpc3RlbnRCcmVha3Bv
aW50cykK
</data>
<flag name="review"
          id="71131"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79717</attachid>
            <date>2011-01-21 02:52:08 -0800</date>
            <delta_ts>2011-01-21 02:54:51 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20901</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5kOGFkZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTEtMDEtMjEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBzdGlja3kgYnJlYWtwb2ludHMgbWFuYWdlbWVudCBmcm9tIEluc3BlY3Rv
ckNvbnRyb2xsZXIgdG8gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjg3NAorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgb2YgZGVidWdnZXIgYXBpIHJlZmFjdG9yaW5nIChzZWUgYnVn
IDUyODc5KS4KKyAgICAgICAgSmF2YVNjcmlwdCBicmVha3BvaW50cyBhcmUgc3RpbGwgaW4gdGhl
IHNhbWUgbGlzdCBhcyBuYXRpdmUgYnJlYWtwb2ludHMgYW5kIGFyZSByZXN0b3JlZCBieSBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC4KKyAgICAgICAgVGhlIHNlY29uZCBzdGVwIHdpbGwg
YmUgdG8gbW92ZSBzdGlja3kgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpzZXRBbGxCcm93c2VyQnJl
YWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6Omluc3BlY3RlZFVSTENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6OnJlc3RvcmVTdGlja3lCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZS5fc2F2ZUJyZWFrcG9pbnRzKToKKwogMjAxMS0wMS0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xv
dWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBiOGQxMjUwLi43
OWIzM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMjQyLDcg
KzI0Miw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
ZW5hYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbZG9tYWluPUluc3Bl
Y3Rvcl0gdm9pZCBkaXNhYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAg
IFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKGluIE9iamVjdCBi
cmVha3BvaW50cyk7CisgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldEFsbEJyb3dz
ZXJCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOwogCiAgICAgICAgIFtub3RpZnks
IGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKTsKICAgICAgICAgW25v
dGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDkwNjE4MWUuLjAyM2RjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cApAQCAtNzEsOSArNzEsNzEgQEAgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgS1VSTCYgdXJsKQorewor
ICAgIG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9YSFJCcmVha3Bv
aW50cy5jbGVhcigpOworICAgIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTCA9IGZhbHNl
OworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnN0YXRlKCktPmdldE9iamVjdChJbnNwZWN0b3JTdGF0ZTo6YnJvd3Nl
ckJyZWFrcG9pbnRzKTsKKyAgICBLVVJMIHVybENvcHkgPSB1cmw7CisgICAgdXJsQ29weS5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJyZWFr
cG9pbnRzID0gYWxsQnJlYWtwb2ludHMtPmdldEFycmF5KHVybENvcHkpOworICAgIGlmICghYnJl
YWtwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YnJlYWtwb2ludHMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHJlc3RvcmVTdGlja3lCcmVha3Bv
aW50KGJyZWFrcG9pbnRzLT5nZXQoaSktPmFzT2JqZWN0KCkpOworfQorCit2b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlLCAoIkV2ZW50TGlzdGVuZXIiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGphdmFTY3JpcHRCcmVha3BvaW50VHlw
ZSwgKCJKUyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeGhyQnJlYWtwb2lu
dFR5cGUsICgiWEhSIikpOworCisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47
CisgICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFicmVha3BvaW50LT5nZXRTdHJpbmcoInR5cGUi
LCAmdHlwZSkpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIGVuYWJsZWQ7CisgICAgaWYgKCFi
cmVha3BvaW50LT5nZXRCb29sZWFuKCJlbmFibGVkIiwgJmVuYWJsZWQpKQorICAgICAgICByZXR1
cm47CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29uZGl0aW9uID0gYnJlYWtwb2ludC0+
Z2V0T2JqZWN0KCJjb25kaXRpb24iKTsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlKSB7Cisg
ICAgICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3RyaW5n
IGV2ZW50TmFtZTsKKyAgICAgICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygiZXZlbnROYW1l
IiwgJmV2ZW50TmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNldEV2ZW50TGlz
dGVuZXJCcmVha3BvaW50KGV2ZW50TmFtZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09IGphdmFT
Y3JpcHRCcmVha3BvaW50VHlwZSAmJiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRlYnVnZ2VyQWdl
bnQoKSkgeworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0
U3RyaW5nKCJ1cmwiLCAmdXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZG91Ymxl
IGxpbmVOdW1iZXI7CisgICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1i
ZXIiLCAmbGluZU51bWJlcikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFN0cmluZyBq
YXZhU2NyaXB0Q29uZGl0aW9uOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJj
b25kaXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGVidWdnZXJBZ2VudCgpLT5zZXRTdGlja3lC
cmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVOdW1iZXIpLCBqYXZhU2Ny
aXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0geGhyQnJlYWtw
b2ludFR5cGUpIHsKKyAgICAgICAgaWYgKCFlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1
cmwiLCAmdXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2V0WEhSQnJlYWtwb2lu
dCh1cmwpOworICAgIH0KK30KKwogdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6
ZGlzY2FyZEJpbmRpbmdzKCkKIHsKLSAgICBtX2JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9k
b21CcmVha3BvaW50cy5jbGVhcigpOwogfQogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSkKQEAgLTg4LDggKzE1MCw4IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQog
ewotICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgewotICAgICAgICB1aW50MzJfdCBtYXNr
ID0gbV9icmVha3BvaW50cy5nZXQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShu
b2RlKSk7CisgICAgaWYgKG1fZG9tQnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIHVpbnQz
Ml90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQ
YXJlbnROb2RlKG5vZGUpKTsKICAgICAgICAgdWludDMyX3QgaW5oZXJpdGFibGVUeXBlc01hc2sg
PSAobWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkgJiBpbmhl
cml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2s7CiAgICAgICAgIGlmIChpbmhlcml0YWJsZVR5
cGVzTWFzaykKICAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCBpbmhl
cml0YWJsZVR5cGVzTWFzaywgdHJ1ZSk7CkBAIC05OCwxNiArMTYwLDE2IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKIAog
dm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2Rl
KiBub2RlKQogewotICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgeworICAgIGlmIChtX2Rv
bUJyZWFrcG9pbnRzLnNpemUoKSkgewogICAgICAgICAvLyBSZW1vdmUgc3VidHJlZSBicmVha3Bv
aW50cy4KLSAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgIG1fZG9t
QnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwogICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEs
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSkpOwogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOwogICAgICAgICAgICAgc3Rh
Y2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAg
ICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKICAgICAgICAgICAgIHN0YWNr
LmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKICAgICAg
ICAgICAgIHN0YWNrLmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhu
b2RlKSk7CiAgICAgICAgIH0gd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpOwpAQCAtMTIxLDcgKzE4
Myw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9p
bnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdWludDMy
X3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKLSAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtX2Jy
ZWFrcG9pbnRzLmdldChub2RlKSB8IHJvb3RCaXQpOworICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0
KG5vZGUsIG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCk7CiAgICAgaWYgKHJv
b3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgZm9y
IChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7
IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxk
KSkKICAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwg
dHJ1ZSk7CkBAIC0xMzUsMTEgKzE5NywxMSBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgdWlu
dDMyX3QgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfnJvb3RCaXQ7CisgICAgdWlu
dDMyX3QgbWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfnJvb3RCaXQ7CiAgICAg
aWYgKG1hc2spCi0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1hc2spOworICAgICAg
ICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKICAgICBlbHNlCi0gICAgICAgIG1f
YnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92
ZShub2RlKTsKIAogICAgIGlmICgocm9vdEJpdCAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5
cGVzTWFzaykgJiYgIShtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBl
U2hpZnQpKSkgewogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQpAQCAtMjEwLDcgKzI3Miw3IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFy
Z2V0LCBsb25nIGJyCiAgICAgICAgIGlmICghaW5zZXJ0aW9uKQogICAgICAgICAgICAgYnJlYWtw
b2ludE93bmVyID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZSh0YXJnZXQpOwog
ICAgICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgd2hpbGUgKCEobV9icmVh
a3BvaW50cy5nZXQoYnJlYWtwb2ludE93bmVyKSAmICgxIDw8IGJyZWFrcG9pbnRUeXBlKSkpIHsK
KyAgICAgICAgd2hpbGUgKCEobV9kb21CcmVha3BvaW50cy5nZXQoYnJlYWtwb2ludE93bmVyKSAm
ICgxIDw8IGJyZWFrcG9pbnRUeXBlKSkpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnRPd25lciA9
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoYnJlYWtwb2ludE93bmVyKTsKICAg
ICAgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOwogICAgICAgICB9CkBAIC0yMjksMTgg
KzI5MSwxOCBAQCBib29sIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpoYXNCcmVha3Bv
aW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSkKIHsKICAgICB1aW50MzJfdCByb290Qml0ID0gMSA8
PCB0eXBlOwogICAgIHVpbnQzMl90IGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9p
bnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIHJldHVybiBtX2JyZWFrcG9pbnRzLmdldChub2RlKSAm
IChyb290Qml0IHwgZGVyaXZlZEJpdCk7CisgICAgcmV0dXJuIG1fZG9tQnJlYWtwb2ludHMuZ2V0
KG5vZGUpICYgKHJvb3RCaXQgfCBkZXJpdmVkQml0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIG5vZGUsIHVp
bnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKIHsKLSAgICB1aW50MzJfdCBvbGRNYXNrID0gbV9i
cmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgdWludDMyX3Qgb2xkTWFzayA9IG1fZG9tQnJlYWtw
b2ludHMuZ2V0KG5vZGUpOwogICAgIHVpbnQzMl90IGRlcml2ZWRNYXNrID0gcm9vdE1hc2sgPDwg
ZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CiAgICAgdWludDMyX3QgbmV3TWFzayA9IHNl
dCA/IG9sZE1hc2sgfCBkZXJpdmVkTWFzayA6IG9sZE1hc2sgJiB+ZGVyaXZlZE1hc2s7CiAgICAg
aWYgKG5ld01hc2spCi0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG5ld01hc2spOwor
ICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKICAgICBlbHNlCi0g
ICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBtX2RvbUJyZWFrcG9p
bnRzLnJlbW92ZShub2RlKTsKIAogICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9vdE1hc2sg
JiB+bmV3TWFzazsKICAgICBpZiAoIW5ld1Jvb3RNYXNrKQpAQCAtMzEzLDEzICszNzUsNiBAQCB2
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRp
dmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwogfQog
Ci12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKCkKLXsKLSAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1f
WEhSQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlV
UkwgPSBmYWxzZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IDZhZjMxZTguLjBiZDgwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCkBAIC00Niw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgS1VSTDsKIGNsYXNz
IE5vZGU7CiAKIGNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50IHsKQEAgLTU4LDYg
KzU5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQoKTsKIAorICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBLVVJMJiB1cmwp
OworCiAgICAgLy8gQnJvd3NlckRlYnVnZ2VyIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRlbmQKICAg
ICB2b2lkIHNldFhIUkJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgcmVt
b3ZlWEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCk7CkBAIC03NSwxNyArNzgsMTggQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChjb25zdCBTdHJpbmcmIGNh
dGVnb3J5VHlwZSwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUsIGJvb2wgc3luY2hyb25vdXMpOwog
Ci0gICAgdm9pZCBjbGVhckZvclBhZ2VOYXZpZ2F0aW9uKCk7CiBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqKTsKIAorICAgIHZv
aWQgcmVzdG9yZVN0aWNreUJyZWFrcG9pbnQoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJy
ZWFrcG9pbnQpOworCiAgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUqIHRhcmdl
dCwgbG9uZyBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEluc3BlY3Rvck9iamVjdCog
ZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1
aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2Rl
KiwgbG9uZyB0eXBlKTsKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCiAgICAgSW5zcGVj
dG9yQ29udHJvbGxlciogbV9pbnNwZWN0b3JDb250cm9sbGVyOwotICAgIEhhc2hNYXA8Tm9kZSos
IHVpbnQzMl90PiBtX2JyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8Tm9kZSosIHVpbnQzMl90PiBt
X2RvbUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2V2ZW50TGlzdGVuZXJCcmVh
a3BvaW50czsKICAgICBIYXNoU2V0PFN0cmluZz4gbV9YSFJCcmVha3BvaW50czsKICAgICBib29s
IG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBkMTFmNzIwLi42ODIwM2I5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5z
cGVjdG9yU3RhdGVGcm9tQ29va2llKGNvbnN0IFN0cmluZyYgaW5zcGVjdG8KICAgICBpZiAoIW1f
ZnJvbnRlbmQpIHsKICAgICAgICAgY29ubmVjdEZyb250ZW5kKCk7CiAgICAgICAgIG1fZnJvbnRl
bmQtPmZyb250ZW5kUmV1c2VkKCk7Ci0gICAgICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFVSTENo
YW5nZWQobV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmlu
ZygpKTsKKyAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChpbnNwZWN0ZWRV
UkwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1fZG9tQWdlbnQtPnNldERvY3VtZW50KG1faW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgICAgICBwdXNoRGF0YUNvbGxl
Y3RlZE9mZmxpbmUoKTsKICAgICB9CkBAIC0zOTksNyArMzk5LDcgQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQogICAgIG1fY29uc29sZUFnZW50LT5zZXRGcm9u
dGVuZChtX2Zyb250ZW5kLmdldCgpKTsKIAogICAgIC8vIEluaXRpYWxpemUgV2ViIEluc3BlY3Rv
ciB0aXRsZS4KLSAgICBtX2Zyb250ZW5kLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKG1faW5zcGVjdGVk
UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgbV9mcm9u
dGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChpbnNwZWN0ZWRVUkwoKS5zdHJpbmcoKSk7CiAKICNp
ZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIG1fYXBwbGljYXRpb25DYWNo
ZUFnZW50ID0gbmV3IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudCh0aGlzLCBtX2Zyb250
ZW5kLmdldCgpKTsKQEAgLTY0Myw4ICs2NDMsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICAgICAgaWYgKG1fZGVi
dWdnZXJBZ2VudCkgewogICAgICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5jbGVhckZvclBhZ2VO
YXZpZ2F0aW9uKCk7CiAgICAgICAgICAgICBpZiAobV9icm93c2VyRGVidWdnZXJBZ2VudCkKLSAg
ICAgICAgICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5jbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKCk7Ci0gICAgICAgICAgICByZXN0b3JlU3RpY2t5QnJlYWtwb2ludHMoKTsKKyAgICAgICAg
ICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3Bl
Y3RlZFVSTCgpKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTEwNjIsNyArMTA2MSw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXIoYm9vbCBhbHdheXMpCiAKICAg
ICBtX2RlYnVnZ2VyQWdlbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUodGhpcywg
bV9mcm9udGVuZC5nZXQoKSk7CiAgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudCA9IEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjcmVhdGUodGhpcyk7Ci0gICAgcmVzdG9yZVN0aWNreUJy
ZWFrcG9pbnRzKCk7CisgICAgbV9icm93c2VyRGVidWdnZXJBZ2VudC0+aW5zcGVjdGVkVVJMQ2hh
bmdlZChpbnNwZWN0ZWRVUkwoKSk7CiAKICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcldhc0VuYWJs
ZWQoKTsKIH0KQEAgLTEwOTIsNjcgKzEwOTEsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlc3VtZSgpCiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+cmVzdW1lKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U3RpY2t5QnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRzKQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRB
bGxCcm93c2VyQnJlYWtwb2ludHMoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9p
bnRzKQogewotICAgIG1fc3RhdGUtPnNldE9iamVjdChJbnNwZWN0b3JTdGF0ZTo6c3RpY2t5QnJl
YWtwb2ludHMsIGJyZWFrcG9pbnRzKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpy
ZXN0b3JlU3RpY2t5QnJlYWtwb2ludHMoKQotewotICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
IGFsbEJyZWFrcG9pbnRzID0gbV9zdGF0ZS0+Z2V0T2JqZWN0KEluc3BlY3RvclN0YXRlOjpzdGlj
a3lCcmVha3BvaW50cyk7Ci0gICAgS1VSTCB1cmwgPSBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFt
ZSgpLT5sb2FkZXIoKS0+dXJsKCk7Ci0gICAgdXJsLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigp
OwotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYnJlYWtwb2ludHMgPSBhbGxCcmVha3BvaW50
cy0+Z2V0QXJyYXkodXJsKTsKLSAgICBpZiAoIWJyZWFrcG9pbnRzKQotICAgICAgICByZXR1cm47
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrcG9pbnRzLT5sZW5ndGgoKTsgKytp
KQotICAgICAgICByZXN0b3JlU3RpY2t5QnJlYWtwb2ludChicmVha3BvaW50cy0+Z2V0KGkpLT5h
c09iamVjdCgpKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlU3RpY2t5
QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKLXsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBl
LCAoIkV2ZW50TGlzdGVuZXIiKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGph
dmFTY3JpcHRCcmVha3BvaW50VHlwZSwgKCJKUyIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgeGhyQnJlYWtwb2ludFR5cGUsICgiWEhSIikpOwotCi0gICAgaWYgKCFicmVha3Bv
aW50KQotICAgICAgICByZXR1cm47Ci0gICAgU3RyaW5nIHR5cGU7Ci0gICAgaWYgKCFicmVha3Bv
aW50LT5nZXRTdHJpbmcoInR5cGUiLCAmdHlwZSkpCi0gICAgICAgIHJldHVybjsKLSAgICBib29s
IGVuYWJsZWQ7Ci0gICAgaWYgKCFicmVha3BvaW50LT5nZXRCb29sZWFuKCJlbmFibGVkIiwgJmVu
YWJsZWQpKQotICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29u
ZGl0aW9uID0gYnJlYWtwb2ludC0+Z2V0T2JqZWN0KCJjb25kaXRpb24iKTsKLSAgICBpZiAoIWNv
bmRpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnRUeXBlICYmIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQpIHsKLSAgICAgICAgaWYg
KCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBTdHJpbmcgZXZlbnROYW1l
OwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJldmVudE5hbWUiLCAmZXZlbnRO
YW1lKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9icm93c2VyRGVidWdnZXJBZ2Vu
dC0+c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoZXZlbnROYW1lKTsKLSAgICB9IGVsc2UgaWYg
KHR5cGUgPT0gamF2YVNjcmlwdEJyZWFrcG9pbnRUeXBlICYmIG1fZGVidWdnZXJBZ2VudCkgewot
ICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1
cmwiLCAmdXJsKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZG91YmxlIGxpbmVOdW1i
ZXI7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAmbGlu
ZU51bWJlcikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBqYXZhU2NyaXB0
Q29uZGl0aW9uOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJjb25kaXRpb24i
LCAmamF2YVNjcmlwdENvbmRpdGlvbikpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
ZGVidWdnZXJBZ2VudC0+c2V0U3RpY2t5QnJlYWtwb2ludCh1cmwsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihsaW5lTnVtYmVyKSwgamF2YVNjcmlwdENvbmRpdGlvbiwgZW5hYmxlZCk7Ci0gICAgfSBl
bHNlIGlmICh0eXBlID09IHhockJyZWFrcG9pbnRUeXBlICYmIG1fYnJvd3NlckRlYnVnZ2VyQWdl
bnQpIHsKLSAgICAgICAgaWYgKCFlbmFibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBTdHJpbmcgdXJsOwotICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1cmwiLCAm
dXJsKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9icm93c2VyRGVidWdnZXJBZ2Vu
dC0+c2V0WEhSQnJlYWtwb2ludCh1cmwpOwotICAgIH0KKyAgICBtX3N0YXRlLT5zZXRPYmplY3Qo
SW5zcGVjdG9yU3RhdGU6OmJyb3dzZXJCcmVha3BvaW50cywgYnJlYWtwb2ludHMpOwogfQogI2Vu
ZGlmCiAKQEAgLTE0NTMsNiArMTM5NCwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
dEluc3BlY3RvckV4dGVuc2lvbkFQSShjb25zdCBTdHJpbmcmIHNvdXJjZSkKICAgICBtX2luc3Bl
Y3RvckV4dGVuc2lvbkFQSSA9IHNvdXJjZTsKIH0KIAorS1VSTCBJbnNwZWN0b3JDb250cm9sbGVy
OjppbnNwZWN0ZWRVUkwoKSBjb25zdAoreworICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVsb2FkUGFnZSgpCiB7CiAgICAgLy8gRklYTUU6IFdoeSBkbyB3ZSBzZXQgdGhlIHVzZXIg
Z2VzdHVyZSBpbmRpY2F0b3IgaGVyZT8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGRjZGY3YmMuLjM3ODg2MmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMTI1LDYgKzEyNSw3
IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKIAogICAgIFBhZ2UqIGluc3Bl
Y3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RlZFBhZ2U7IH0KKyAgICBLVVJMIGlu
c3BlY3RlZFVSTCgpIGNvbnN0OwogICAgIHZvaWQgcmVsb2FkUGFnZSgpOwogCiAgICAgdm9pZCBy
ZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKGNvbnN0IFN0cmluZyYgaW5zcGVjdG9yQ29v
a2llKTsKQEAgLTI0NCw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWJ1Z2dlckVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnZ2VyQWdlbnQ7IH0KICAgICB2b2lkIHJlc3VtZSgp
OwogCi0gICAgdm9pZCBzZXRTdGlja3lCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnJlYWtwb2ludHMpOworICAgIHZvaWQgc2V0QWxsQnJvd3NlckJyZWFrcG9pbnRzKFBh
c3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50cyk7CiAjZW5kaWYKIAogICAgIC8v
IEdlbmVyaWMgY29kZSBjYWxsZWQgZnJvbSBjdXN0b20gaW1wbGVtZW50YXRpb25zLgpAQCAtMjg5
LDggKzI5MCw2IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
ICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKLSAgICB2b2lkIHJlc3RvcmVTdGlj
a3lCcmVha3BvaW50cygpOwotICAgIHZvaWQgcmVzdG9yZVN0aWNreUJyZWFrcG9pbnQoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnQpOwogI2VuZGlmCiAKICAgICBQYXNzUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JDb29raWUoY29uc3QgQ29va2llJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRleCAyMjI5
NGEwLi5kYmE5ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0
ZS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgSW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKElu
c3BlY3RvckNsaWVudCogY2xpZW50KQogICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5pdGlhdGVk
UHJvZmlsaW5nLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKHRpbWVsaW5lUHJvZmlsZXJF
bmFibGVkLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKHNlYXJjaGluZ0Zvck5vZGUsIGZh
bHNlKTsKLSAgICByZWdpc3Rlck9iamVjdChzdGlja3lCcmVha3BvaW50cyk7CisgICAgcmVnaXN0
ZXJPYmplY3QoYnJvd3NlckJyZWFrcG9pbnRzKTsKICAgICByZWdpc3RlckJvb2xlYW4oY29uc29s
ZU1lc3NhZ2VzRW5hYmxlZCwgZmFsc2UpOwogICAgIHJlZ2lzdGVyQm9vbGVhbihtb25pdG9yaW5n
WEhSLCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKHJlc291cmNlQWdlbnRFbmFibGVkLCBm
YWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCmluZGV4IGI2
MmY4ZGUuLjZlMTI2NzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3Rh
dGUuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHNlYXJjaGluZ0Zvck5vZGUs
CiAgICAgICAgIGNvbnNvbGVNZXNzYWdlc0VuYWJsZWQsCiAgICAgICAgIHVzZXJJbml0aWF0ZWRQ
cm9maWxpbmcsCi0gICAgICAgIHN0aWNreUJyZWFrcG9pbnRzLAorICAgICAgICBicm93c2VyQnJl
YWtwb2ludHMsCiAgICAgICAgIHJlc291cmNlQWdlbnRFbmFibGVkLAogICAgICAgICBsYXN0UHJv
cGVydHlJZAogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwppbmRleCA2N2VmMTEyLi5kOTQzZDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5h
Z2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMKQEAgLTM0LDcgKzM0LDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyID0gZnVuY3Rpb24oKQogICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5maW5kU2V0dGluZ0ZvckFsbFByb2plY3RzKCJuYXRpdmVCcmVha3BvaW50cyIpOwogICAg
IGZvciAodmFyIHByb2plY3RJZCBpbiBicmVha3BvaW50cykKICAgICAgICAgdGhpcy5fc3RpY2t5
QnJlYWtwb2ludHNbcHJvamVjdElkXSA9IHRoaXMuX3ZhbGlkYXRlQnJlYWtwb2ludHMoYnJlYWtw
b2ludHNbcHJvamVjdElkXSk7Ci0gICAgSW5zcGVjdG9yQmFja2VuZC5zZXRTdGlja3lCcmVha3Bv
aW50cyh0aGlzLl9zdGlja3lCcmVha3BvaW50cyk7CisgICAgSW5zcGVjdG9yQmFja2VuZC5zZXRB
bGxCcm93c2VyQnJlYWtwb2ludHModGhpcy5fc3RpY2t5QnJlYWtwb2ludHMpOwogCiAgICAgdGhp
cy5fYnJlYWtwb2ludHMgPSB7fTsKICAgICB0aGlzLl9kb21CcmVha3BvaW50c1Jlc3RvcmVkID0g
ZmFsc2U7CkBAIC0zMDMsNyArMzAzLDcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLm5hdGl2ZUJyZWFr
cG9pbnRzID0gYnJlYWtwb2ludHM7CiAKICAgICAgICAgdGhpcy5fc3RpY2t5QnJlYWtwb2ludHNb
V2ViSW5zcGVjdG9yLnNldHRpbmdzLnByb2plY3RJZF0gPSBicmVha3BvaW50czsKLSAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zZXRTdGlja3lCcmVha3BvaW50cyh0aGlzLl9zdGlja3lCcmVha3Bv
aW50cyk7CisgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2V0QWxsQnJvd3NlckJyZWFrcG9pbnRz
KHRoaXMuX3N0aWNreUJyZWFrcG9pbnRzKTsKICAgICB9LAogCiAgICAgX3ZhbGlkYXRlQnJlYWtw
b2ludHM6IGZ1bmN0aW9uKHBlcnNpc3RlbnRCcmVha3BvaW50cykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79718</attachid>
            <date>2011-01-21 02:54:51 -0800</date>
            <delta_ts>2011-01-21 07:54:08 -0800</delta_ts>
            <desc>Fix style.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>20885</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNDI2NzI4Li5kOGFkZjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMg
QEAKKzIwMTEtMDEtMjEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogbW92ZSBzdGlja3kgYnJlYWtwb2ludHMgbWFuYWdlbWVudCBmcm9tIEluc3BlY3Rv
ckNvbnRyb2xsZXIgdG8gSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjg3NAorCisgICAgICAgIFRo
aXMgaXMgdGhlIGZpcnN0IHN0ZXAgb2YgZGVidWdnZXIgYXBpIHJlZmFjdG9yaW5nIChzZWUgYnVn
IDUyODc5KS4KKyAgICAgICAgSmF2YVNjcmlwdCBicmVha3BvaW50cyBhcmUgc3RpbGwgaW4gdGhl
IHNhbWUgbGlzdCBhcyBuYXRpdmUgYnJlYWtwb2ludHMgYW5kIGFyZSByZXN0b3JlZCBieSBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC4KKyAgICAgICAgVGhlIHNlY29uZCBzdGVwIHdpbGwg
YmUgdG8gbW92ZSBzdGlja3kgSmF2YVNjcmlwdCBicmVha3BvaW50cyB0byBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5pZGw6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpzZXRBbGxCcm93c2VyQnJl
YWtwb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6Omluc3BlY3RlZFVSTENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6OnJlc3RvcmVTdGlja3lCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpkaXNjYXJkQmluZGluZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2Vy
dERPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdl
bnQ6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQnJvd3NlckRl
YnVnZ2VyQWdlbnQ6OnVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlcjo6cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1Z2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdGVkVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludE1hbmFnZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5h
Z2VyLnByb3RvdHlwZS5fc2F2ZUJyZWFrcG9pbnRzKToKKwogMjAxMS0wMS0yMCAgU2FtIFdlaW5p
ZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xv
dWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRleCBiOGQxMjUwLi43
OWIzM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbApAQCAtMjQyLDcg
KzI0Miw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1JbnNwZWN0b3JdIHZvaWQg
ZW5hYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBbZG9tYWluPUluc3Bl
Y3Rvcl0gdm9pZCBkaXNhYmxlRGVidWdnZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAg
IFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKGluIE9iamVjdCBi
cmVha3BvaW50cyk7CisgICAgICAgIFtkb21haW49SW5zcGVjdG9yXSB2b2lkIHNldEFsbEJyb3dz
ZXJCcmVha3BvaW50cyhpbiBPYmplY3QgYnJlYWtwb2ludHMpOwogCiAgICAgICAgIFtub3RpZnks
IGRvbWFpbj1EZWJ1Z2dlcl0gdm9pZCBkZWJ1Z2dlcldhc0VuYWJsZWQoKTsKICAgICAgICAgW25v
dGlmeSwgZG9tYWluPURlYnVnZ2VyXSB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDkwNjE4MWUuLjAyM2RjNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50LmNw
cApAQCAtNzEsOSArNzEsNzEgQEAgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6On5JbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudCgpCiB7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQnJvd3Nl
ckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgS1VSTCYgdXJsKQorewor
ICAgIG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9YSFJCcmVha3Bv
aW50cy5jbGVhcigpOworICAgIG1faGFzWEhSQnJlYWtwb2ludFdpdGhFbXB0eVVSTCA9IGZhbHNl
OworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYWxsQnJlYWtwb2ludHMgPSBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnN0YXRlKCktPmdldE9iamVjdChJbnNwZWN0b3JTdGF0ZTo6YnJvd3Nl
ckJyZWFrcG9pbnRzKTsKKyAgICBLVVJMIHVybENvcHkgPSB1cmw7CisgICAgdXJsQ29weS5yZW1v
dmVGcmFnbWVudElkZW50aWZpZXIoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGJyZWFr
cG9pbnRzID0gYWxsQnJlYWtwb2ludHMtPmdldEFycmF5KHVybENvcHkpOworICAgIGlmICghYnJl
YWtwb2ludHMpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
YnJlYWtwb2ludHMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgIHJlc3RvcmVTdGlja3lCcmVha3Bv
aW50KGJyZWFrcG9pbnRzLT5nZXQoaSktPmFzT2JqZWN0KCkpOworfQorCit2b2lkIEluc3BlY3Rv
ckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpyZXN0b3JlU3RpY2t5QnJlYWtwb2ludChQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFN0cmluZywgZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlLCAoIkV2ZW50TGlzdGVuZXIiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGphdmFTY3JpcHRCcmVha3BvaW50VHlw
ZSwgKCJKUyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgeGhyQnJlYWtwb2lu
dFR5cGUsICgiWEhSIikpOworCisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47
CisgICAgU3RyaW5nIHR5cGU7CisgICAgaWYgKCFicmVha3BvaW50LT5nZXRTdHJpbmcoInR5cGUi
LCAmdHlwZSkpCisgICAgICAgIHJldHVybjsKKyAgICBib29sIGVuYWJsZWQ7CisgICAgaWYgKCFi
cmVha3BvaW50LT5nZXRCb29sZWFuKCJlbmFibGVkIiwgJmVuYWJsZWQpKQorICAgICAgICByZXR1
cm47CisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gY29uZGl0aW9uID0gYnJlYWtwb2ludC0+
Z2V0T2JqZWN0KCJjb25kaXRpb24iKTsKKyAgICBpZiAoIWNvbmRpdGlvbikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHR5cGUgPT0gZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUeXBlKSB7Cisg
ICAgICAgIGlmICghZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgU3RyaW5n
IGV2ZW50TmFtZTsKKyAgICAgICAgaWYgKCFjb25kaXRpb24tPmdldFN0cmluZygiZXZlbnROYW1l
IiwgJmV2ZW50TmFtZSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNldEV2ZW50TGlz
dGVuZXJCcmVha3BvaW50KGV2ZW50TmFtZSk7CisgICAgfSBlbHNlIGlmICh0eXBlID09IGphdmFT
Y3JpcHRCcmVha3BvaW50VHlwZSAmJiBtX2luc3BlY3RvckNvbnRyb2xsZXItPmRlYnVnZ2VyQWdl
bnQoKSkgeworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0
U3RyaW5nKCJ1cmwiLCAmdXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZG91Ymxl
IGxpbmVOdW1iZXI7CisgICAgICAgIGlmICghY29uZGl0aW9uLT5nZXROdW1iZXIoImxpbmVOdW1i
ZXIiLCAmbGluZU51bWJlcikpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFN0cmluZyBq
YXZhU2NyaXB0Q29uZGl0aW9uOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJj
b25kaXRpb24iLCAmamF2YVNjcmlwdENvbmRpdGlvbikpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+ZGVidWdnZXJBZ2VudCgpLT5zZXRTdGlja3lC
cmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxpbmVOdW1iZXIpLCBqYXZhU2Ny
aXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgPT0geGhyQnJlYWtw
b2ludFR5cGUpIHsKKyAgICAgICAgaWYgKCFlbmFibGVkKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBpZiAoIWNvbmRpdGlvbi0+Z2V0U3RyaW5nKCJ1
cmwiLCAmdXJsKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc2V0WEhSQnJlYWtwb2lu
dCh1cmwpOworICAgIH0KK30KKwogdm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6
ZGlzY2FyZEJpbmRpbmdzKCkKIHsKLSAgICBtX2JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9k
b21CcmVha3BvaW50cy5jbGVhcigpOwogfQogCiB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSkKQEAgLTg4LDggKzE1MCw4IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYKIAogdm9pZCBJbnNw
ZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQog
ewotICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgewotICAgICAgICB1aW50MzJfdCBtYXNr
ID0gbV9icmVha3BvaW50cy5nZXQoSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZShu
b2RlKSk7CisgICAgaWYgKG1fZG9tQnJlYWtwb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIHVpbnQz
Ml90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdldChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQ
YXJlbnROb2RlKG5vZGUpKTsKICAgICAgICAgdWludDMyX3QgaW5oZXJpdGFibGVUeXBlc01hc2sg
PSAobWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkgJiBpbmhl
cml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2s7CiAgICAgICAgIGlmIChpbmhlcml0YWJsZVR5
cGVzTWFzaykKICAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCBpbmhl
cml0YWJsZVR5cGVzTWFzaywgdHJ1ZSk7CkBAIC05OCwxNiArMTYwLDE2IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9kZSogbm9kZSkKIAog
dm9pZCBJbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2Rl
KiBub2RlKQogewotICAgIGlmIChtX2JyZWFrcG9pbnRzLnNpemUoKSkgeworICAgIGlmIChtX2Rv
bUJyZWFrcG9pbnRzLnNpemUoKSkgewogICAgICAgICAvLyBSZW1vdmUgc3VidHJlZSBicmVha3Bv
aW50cy4KLSAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAgICAgIG1fZG9t
QnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOwogICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEs
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSkpOwogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBOb2RlKiBub2RlID0gc3RhY2subGFzdCgpOwogICAgICAgICAgICAgc3Rh
Y2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgbV9icmVha3BvaW50cy5yZW1vdmUobm9kZSk7CisgICAg
ICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92ZShub2RlKTsKICAgICAgICAgICAgIHN0YWNr
LmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKICAgICAg
ICAgICAgIHN0YWNrLmFwcGVuZChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJOZXh0U2libGluZyhu
b2RlKSk7CiAgICAgICAgIH0gd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkpOwpAQCAtMTIxLDcgKzE4
Myw3IEBAIHZvaWQgSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9p
bnQobG9uZyBub2RlSWQsIGxvbmcgdHlwZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdWludDMy
X3Qgcm9vdEJpdCA9IDEgPDwgdHlwZTsKLSAgICBtX2JyZWFrcG9pbnRzLnNldChub2RlLCBtX2Jy
ZWFrcG9pbnRzLmdldChub2RlKSB8IHJvb3RCaXQpOworICAgIG1fZG9tQnJlYWtwb2ludHMuc2V0
KG5vZGUsIG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpIHwgcm9vdEJpdCk7CiAgICAgaWYgKHJv
b3RCaXQgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKICAgICAgICAgZm9y
IChOb2RlKiBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQobm9kZSk7
IGNoaWxkOyBjaGlsZCA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lck5leHRTaWJsaW5nKGNoaWxk
KSkKICAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhjaGlsZCwgcm9vdEJpdCwg
dHJ1ZSk7CkBAIC0xMzUsMTEgKzE5NywxMSBAQCB2b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dl
ckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KGxvbmcgbm9kZUlkLCBsb25nIHR5cGUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIHVpbnQzMl90IHJvb3RCaXQgPSAxIDw8IHR5cGU7Ci0gICAgdWlu
dDMyX3QgbWFzayA9IG1fYnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfnJvb3RCaXQ7CisgICAgdWlu
dDMyX3QgbWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KG5vZGUpICYgfnJvb3RCaXQ7CiAgICAg
aWYgKG1hc2spCi0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG1hc2spOworICAgICAg
ICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBtYXNrKTsKICAgICBlbHNlCi0gICAgICAgIG1f
YnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnJlbW92
ZShub2RlKTsKIAogICAgIGlmICgocm9vdEJpdCAmIGluaGVyaXRhYmxlRE9NQnJlYWtwb2ludFR5
cGVzTWFzaykgJiYgIShtYXNrICYgKHJvb3RCaXQgPDwgZG9tQnJlYWtwb2ludERlcml2ZWRUeXBl
U2hpZnQpKSkgewogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVyRmlyc3RDaGlsZChub2RlKTsgY2hpbGQ7IGNoaWxkID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OmlubmVyTmV4dFNpYmxpbmcoY2hpbGQpKQpAQCAtMjEwLDcgKzI3Miw3IEBAIHZvaWQgSW5zcGVj
dG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFy
Z2V0LCBsb25nIGJyCiAgICAgICAgIGlmICghaW5zZXJ0aW9uKQogICAgICAgICAgICAgYnJlYWtw
b2ludE93bmVyID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVyUGFyZW50Tm9kZSh0YXJnZXQpOwog
ICAgICAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyKTsKLSAgICAgICAgd2hpbGUgKCEobV9icmVh
a3BvaW50cy5nZXQoYnJlYWtwb2ludE93bmVyKSAmICgxIDw8IGJyZWFrcG9pbnRUeXBlKSkpIHsK
KyAgICAgICAgd2hpbGUgKCEobV9kb21CcmVha3BvaW50cy5nZXQoYnJlYWtwb2ludE93bmVyKSAm
ICgxIDw8IGJyZWFrcG9pbnRUeXBlKSkpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnRPd25lciA9
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoYnJlYWtwb2ludE93bmVyKTsKICAg
ICAgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXIpOwogICAgICAgICB9CkBAIC0yMjksMTgg
KzI5MSwxOCBAQCBib29sIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpoYXNCcmVha3Bv
aW50KE5vZGUqIG5vZGUsIGxvbmcgdHlwZSkKIHsKICAgICB1aW50MzJfdCByb290Qml0ID0gMSA8
PCB0eXBlOwogICAgIHVpbnQzMl90IGRlcml2ZWRCaXQgPSByb290Qml0IDw8IGRvbUJyZWFrcG9p
bnREZXJpdmVkVHlwZVNoaWZ0OwotICAgIHJldHVybiBtX2JyZWFrcG9pbnRzLmdldChub2RlKSAm
IChyb290Qml0IHwgZGVyaXZlZEJpdCk7CisgICAgcmV0dXJuIG1fZG9tQnJlYWtwb2ludHMuZ2V0
KG5vZGUpICYgKHJvb3RCaXQgfCBkZXJpdmVkQml0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JCcm93
c2VyRGVidWdnZXJBZ2VudDo6dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqIG5vZGUsIHVp
bnQzMl90IHJvb3RNYXNrLCBib29sIHNldCkKIHsKLSAgICB1aW50MzJfdCBvbGRNYXNrID0gbV9i
cmVha3BvaW50cy5nZXQobm9kZSk7CisgICAgdWludDMyX3Qgb2xkTWFzayA9IG1fZG9tQnJlYWtw
b2ludHMuZ2V0KG5vZGUpOwogICAgIHVpbnQzMl90IGRlcml2ZWRNYXNrID0gcm9vdE1hc2sgPDwg
ZG9tQnJlYWtwb2ludERlcml2ZWRUeXBlU2hpZnQ7CiAgICAgdWludDMyX3QgbmV3TWFzayA9IHNl
dCA/IG9sZE1hc2sgfCBkZXJpdmVkTWFzayA6IG9sZE1hc2sgJiB+ZGVyaXZlZE1hc2s7CiAgICAg
aWYgKG5ld01hc2spCi0gICAgICAgIG1fYnJlYWtwb2ludHMuc2V0KG5vZGUsIG5ld01hc2spOwor
ICAgICAgICBtX2RvbUJyZWFrcG9pbnRzLnNldChub2RlLCBuZXdNYXNrKTsKICAgICBlbHNlCi0g
ICAgICAgIG1fYnJlYWtwb2ludHMucmVtb3ZlKG5vZGUpOworICAgICAgICBtX2RvbUJyZWFrcG9p
bnRzLnJlbW92ZShub2RlKTsKIAogICAgIHVpbnQzMl90IG5ld1Jvb3RNYXNrID0gcm9vdE1hc2sg
JiB+bmV3TWFzazsKICAgICBpZiAoIW5ld1Jvb3RNYXNrKQpAQCAtMzEzLDEzICszNzUsNiBAQCB2
b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Ojp3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIGRlYnVnZ2VyQWdlbnQtPmJyZWFrUHJvZ3JhbShOYXRp
dmVCcmVha3BvaW50RGVidWdnZXJFdmVudFR5cGUsIGV2ZW50RGF0YS5yZWxlYXNlKCkpOwogfQog
Ci12b2lkIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjbGVhckZvclBhZ2VOYXZpZ2F0
aW9uKCkKLXsKLSAgICBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1f
WEhSQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX2hhc1hIUkJyZWFrcG9pbnRXaXRoRW1wdHlV
UkwgPSBmYWxzZTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQnJvd3NlckRlYnVnZ2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IDZhZjMxZTguLjBmZmE4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCcm93c2VyRGVidWdnZXJBZ2VudC5oCkBAIC00Niw2ICs0
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0
b3JDb250cm9sbGVyOwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OworY2xhc3MgS1VSTDsKIGNsYXNz
IE5vZGU7CiAKIGNsYXNzIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50IHsKQEAgLTU4LDYg
KzU5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yQnJvd3NlckRlYnVnZ2Vy
QWdlbnQoKTsKIAorICAgIHZvaWQgaW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBLVVJMJik7CisK
ICAgICAvLyBCcm93c2VyRGVidWdnZXIgQVBJIGZvciBJbnNwZWN0b3JGcm9udGVuZAogICAgIHZv
aWQgc2V0WEhSQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCByZW1vdmVY
SFJCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsKTsKQEAgLTc1LDE3ICs3OCwxOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0IFN0cmluZyYgdXJsKTsK
ICAgICB2b2lkIHBhdXNlT25OYXRpdmVFdmVudElmTmVlZGVkKGNvbnN0IFN0cmluZyYgY2F0ZWdv
cnlUeXBlLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSwgYm9vbCBzeW5jaHJvbm91cyk7CiAKLSAg
ICB2b2lkIGNsZWFyRm9yUGFnZU5hdmlnYXRpb24oKTsKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
QnJvd3NlckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOwogCisgICAgdm9pZCBy
ZXN0b3JlU3RpY2t5QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtw
b2ludCk7CisKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSogdGFyZ2V0LCBs
b25nIGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSW5zcGVjdG9yT2JqZWN0KiBkZXNj
cmlwdGlvbik7CiAgICAgdm9pZCB1cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSosIHVpbnQz
Ml90IHJvb3RNYXNrLCBib29sIHNldCk7CiAgICAgYm9vbCBoYXNCcmVha3BvaW50KE5vZGUqLCBs
b25nIHR5cGUpOwogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CiAKICAgICBJbnNwZWN0b3JD
b250cm9sbGVyKiBtX2luc3BlY3RvckNvbnRyb2xsZXI7Ci0gICAgSGFzaE1hcDxOb2RlKiwgdWlu
dDMyX3Q+IG1fYnJlYWtwb2ludHM7CisgICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9t
QnJlYWtwb2ludHM7CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fZXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX1hIUkJyZWFrcG9pbnRzOwogICAgIGJvb2wgbV9o
YXNYSFJCcmVha3BvaW50V2l0aEVtcHR5VVJMOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGQxMWY3MjAuLjY4MjAzYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTIyMiw3ICsyMjIsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0
b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0bwogICAgIGlmICghbV9mcm9u
dGVuZCkgewogICAgICAgICBjb25uZWN0RnJvbnRlbmQoKTsKICAgICAgICAgbV9mcm9udGVuZC0+
ZnJvbnRlbmRSZXVzZWQoKTsKLSAgICAgICAgbV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdl
ZChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkp
OworICAgICAgICBtX2Zyb250ZW5kLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgp
LnN0cmluZygpKTsKICAgICAgICAgbV9kb21BZ2VudC0+c2V0RG9jdW1lbnQobV9pbnNwZWN0ZWRQ
YWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIHB1c2hEYXRhQ29sbGVjdGVk
T2ZmbGluZSgpOwogICAgIH0KQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCiAgICAgbV9jb25zb2xlQWdlbnQtPnNldEZyb250ZW5k
KG1fZnJvbnRlbmQuZ2V0KCkpOwogCiAgICAgLy8gSW5pdGlhbGl6ZSBXZWIgSW5zcGVjdG9yIHRp
dGxlLgotICAgIG1fZnJvbnRlbmQtPmluc3BlY3RlZFVSTENoYW5nZWQobV9pbnNwZWN0ZWRQYWdl
LT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5k
LT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKGluc3BlY3RlZFVSTCgpLnN0cmluZygpKTsKIAogI2lmIEVO
QUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgbV9hcHBsaWNhdGlvbkNhY2hlQWdl
bnQgPSBuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KHRoaXMsIG1fZnJvbnRlbmQu
Z2V0KCkpOwpAQCAtNjQzLDggKzY0Myw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICBpZiAobV9kZWJ1Z2dl
ckFnZW50KSB7CiAgICAgICAgICAgICBtX2RlYnVnZ2VyQWdlbnQtPmNsZWFyRm9yUGFnZU5hdmln
YXRpb24oKTsKICAgICAgICAgICAgIGlmIChtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50KQotICAgICAg
ICAgICAgICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmNsZWFyRm9yUGFnZU5hdmlnYXRpb24o
KTsKLSAgICAgICAgICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50cygpOworICAgICAgICAgICAg
ICAgIG1fYnJvd3NlckRlYnVnZ2VyQWdlbnQtPmluc3BlY3RlZFVSTENoYW5nZWQoaW5zcGVjdGVk
VVJMKCkpOwogICAgICAgICB9CiAjZW5kaWYKIApAQCAtMTA2Miw3ICsxMDYxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVEZWJ1Z2dlcihib29sIGFsd2F5cykKIAogICAgIG1f
ZGVidWdnZXJBZ2VudCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSh0aGlzLCBtX2Zy
b250ZW5kLmdldCgpKTsKICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50ID0gSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXN0b3JlU3RpY2t5QnJlYWtw
b2ludHMoKTsKKyAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5pbnNwZWN0ZWRVUkxDaGFuZ2Vk
KGluc3BlY3RlZFVSTCgpKTsKIAogICAgIG1fZnJvbnRlbmQtPmRlYnVnZ2VyV2FzRW5hYmxlZCgp
OwogfQpAQCAtMTA5Miw2NyArMTA5MSw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVz
dW1lKCkKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5yZXN1bWUoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZXRTdGlja3lCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4gYnJlYWtwb2ludHMpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEFsbEJy
b3dzZXJCcmVha3BvaW50cyhQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludHMp
CiB7Ci0gICAgbV9zdGF0ZS0+c2V0T2JqZWN0KEluc3BlY3RvclN0YXRlOjpzdGlja3lCcmVha3Bv
aW50cywgYnJlYWtwb2ludHMpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3Rv
cmVTdGlja3lCcmVha3BvaW50cygpCi17Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYWxs
QnJlYWtwb2ludHMgPSBtX3N0YXRlLT5nZXRPYmplY3QoSW5zcGVjdG9yU3RhdGU6OnN0aWNreUJy
ZWFrcG9pbnRzKTsKLSAgICBLVVJMIHVybCA9IG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpLT51cmwoKTsKLSAgICB1cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0g
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBicmVha3BvaW50cyA9IGFsbEJyZWFrcG9pbnRzLT5n
ZXRBcnJheSh1cmwpOwotICAgIGlmICghYnJlYWtwb2ludHMpCi0gICAgICAgIHJldHVybjsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtwb2ludHMtPmxlbmd0aCgpOyArK2kpCi0g
ICAgICAgIHJlc3RvcmVTdGlja3lCcmVha3BvaW50KGJyZWFrcG9pbnRzLT5nZXQoaSktPmFzT2Jq
ZWN0KCkpOwotfQotCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVTdGlja3lCcmVh
a3BvaW50KFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBicmVha3BvaW50KQotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBldmVudExpc3RlbmVyQnJlYWtwb2ludFR5cGUsICgi
RXZlbnRMaXN0ZW5lciIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgamF2YVNj
cmlwdEJyZWFrcG9pbnRUeXBlLCAoIkpTIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCB4aHJCcmVha3BvaW50VHlwZSwgKCJYSFIiKSk7Ci0KLSAgICBpZiAoIWJyZWFrcG9pbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBTdHJpbmcgdHlwZTsKLSAgICBpZiAoIWJyZWFrcG9pbnQt
PmdldFN0cmluZygidHlwZSIsICZ0eXBlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGJvb2wgZW5h
YmxlZDsKLSAgICBpZiAoIWJyZWFrcG9pbnQtPmdldEJvb2xlYW4oImVuYWJsZWQiLCAmZW5hYmxl
ZCkpCi0gICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjb25kaXRp
b24gPSBicmVha3BvaW50LT5nZXRPYmplY3QoImNvbmRpdGlvbiIpOwotICAgIGlmICghY29uZGl0
aW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodHlwZSA9PSBldmVudExpc3RlbmVyQnJl
YWtwb2ludFR5cGUgJiYgbV9icm93c2VyRGVidWdnZXJBZ2VudCkgewotICAgICAgICBpZiAoIWVu
YWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0cmluZyBldmVudE5hbWU7Ci0g
ICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoImV2ZW50TmFtZSIsICZldmVudE5hbWUp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5z
ZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChldmVudE5hbWUpOwotICAgIH0gZWxzZSBpZiAodHlw
ZSA9PSBqYXZhU2NyaXB0QnJlYWtwb2ludFR5cGUgJiYgbV9kZWJ1Z2dlckFnZW50KSB7Ci0gICAg
ICAgIFN0cmluZyB1cmw7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoInVybCIs
ICZ1cmwpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBkb3VibGUgbGluZU51bWJlcjsK
LSAgICAgICAgaWYgKCFjb25kaXRpb24tPmdldE51bWJlcigibGluZU51bWJlciIsICZsaW5lTnVt
YmVyKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25k
aXRpb247Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoImNvbmRpdGlvbiIsICZq
YXZhU2NyaXB0Q29uZGl0aW9uKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9kZWJ1
Z2dlckFnZW50LT5zZXRTdGlja3lCcmVha3BvaW50KHVybCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGxpbmVOdW1iZXIpLCBqYXZhU2NyaXB0Q29uZGl0aW9uLCBlbmFibGVkKTsKLSAgICB9IGVsc2Ug
aWYgKHR5cGUgPT0geGhyQnJlYWtwb2ludFR5cGUgJiYgbV9icm93c2VyRGVidWdnZXJBZ2VudCkg
ewotICAgICAgICBpZiAoIWVuYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFN0
cmluZyB1cmw7Ci0gICAgICAgIGlmICghY29uZGl0aW9uLT5nZXRTdHJpbmcoInVybCIsICZ1cmwp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50LT5z
ZXRYSFJCcmVha3BvaW50KHVybCk7Ci0gICAgfQorICAgIG1fc3RhdGUtPnNldE9iamVjdChJbnNw
ZWN0b3JTdGF0ZTo6YnJvd3NlckJyZWFrcG9pbnRzLCBicmVha3BvaW50cyk7CiB9CiAjZW5kaWYK
IApAQCAtMTQ1Myw2ICsxMzk0LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0SW5z
cGVjdG9yRXh0ZW5zaW9uQVBJKGNvbnN0IFN0cmluZyYgc291cmNlKQogICAgIG1faW5zcGVjdG9y
RXh0ZW5zaW9uQVBJID0gc291cmNlOwogfQogCitLVVJMIEluc3BlY3RvckNvbnRyb2xsZXI6Omlu
c3BlY3RlZFVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT51cmwoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpy
ZWxvYWRQYWdlKCkKIHsKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIHNldCB0aGUgdXNlciBnZXN0
dXJlIGluZGljYXRvciBoZXJlPwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKaW5kZXggZGNkZjdiYy4uNjViYjdkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMjUsNiArMTI1LDcgQEAg
cHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwogCiAgICAgUGFnZSogaW5zcGVjdGVk
UGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdGVkUGFnZTsgfQorICAgIEtVUkwgaW5zcGVj
dGVkVVJMKCkgY29uc3Q7CiAgICAgdm9pZCByZWxvYWRQYWdlKCk7CiAKICAgICB2b2lkIHJlc3Rv
cmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JDb29raWUp
OwpAQCAtMjQ0LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGRlYnVnZ2VyRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVidWdnZXJBZ2VudDsgfQogICAgIHZvaWQgcmVzdW1lKCk7CiAK
LSAgICB2b2lkIHNldFN0aWNreUJyZWFrcG9pbnRzKFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBicmVha3BvaW50cyk7CisgICAgdm9pZCBzZXRBbGxCcm93c2VyQnJlYWtwb2ludHMoUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KTsKICNlbmRpZgogCiAgICAgLy8gR2VuZXJpYyBjb2RlIGNh
bGxlZCBmcm9tIGN1c3RvbSBpbXBsZW1lbnRhdGlvbnMuCkBAIC0yODksOCArMjkwLDYgQEAgcHJp
dmF0ZToKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIHZvaWQgdG9nZ2xl
UmVjb3JkQnV0dG9uKGJvb2wpOwotICAgIHZvaWQgcmVzdG9yZVN0aWNreUJyZWFrcG9pbnRzKCk7
Ci0gICAgdm9pZCByZXN0b3JlU3RpY2t5QnJlYWtwb2ludChQYXNzUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gYnJlYWtwb2ludCk7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiBidWlsZE9iamVjdEZvckNvb2tpZShjb25zdCBDb29raWUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCmluZGV4IDIyMjk0YTAuLmRiYTllNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcApAQCAtNDIsNyAr
NDIsNyBAQCBJbnNwZWN0b3JTdGF0ZTo6SW5zcGVjdG9yU3RhdGUoSW5zcGVjdG9yQ2xpZW50KiBj
bGllbnQpCiAgICAgcmVnaXN0ZXJCb29sZWFuKHVzZXJJbml0aWF0ZWRQcm9maWxpbmcsIGZhbHNl
KTsKICAgICByZWdpc3RlckJvb2xlYW4odGltZWxpbmVQcm9maWxlckVuYWJsZWQsIGZhbHNlKTsK
ICAgICByZWdpc3RlckJvb2xlYW4oc2VhcmNoaW5nRm9yTm9kZSwgZmFsc2UpOwotICAgIHJlZ2lz
dGVyT2JqZWN0KHN0aWNreUJyZWFrcG9pbnRzKTsKKyAgICByZWdpc3Rlck9iamVjdChicm93c2Vy
QnJlYWtwb2ludHMpOwogICAgIHJlZ2lzdGVyQm9vbGVhbihjb25zb2xlTWVzc2FnZXNFbmFibGVk
LCBmYWxzZSk7CiAgICAgcmVnaXN0ZXJCb29sZWFuKG1vbml0b3JpbmdYSFIsIGZhbHNlKTsKICAg
ICByZWdpc3RlckJvb2xlYW4ocmVzb3VyY2VBZ2VudEVuYWJsZWQsIGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKaW5kZXggYjYyZjhkZS4uNmUxMjY3Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgc2VhcmNoaW5nRm9yTm9kZSwKICAgICAgICAgY29uc29s
ZU1lc3NhZ2VzRW5hYmxlZCwKICAgICAgICAgdXNlckluaXRpYXRlZFByb2ZpbGluZywKLSAgICAg
ICAgc3RpY2t5QnJlYWtwb2ludHMsCisgICAgICAgIGJyb3dzZXJCcmVha3BvaW50cywKICAgICAg
ICAgcmVzb3VyY2VBZ2VudEVuYWJsZWQsCiAgICAgICAgIGxhc3RQcm9wZXJ0eUlkCiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9p
bnRNYW5hZ2VyLmpzCmluZGV4IDY3ZWYxMTIuLmQ5NDNkNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2ludE1hbmFnZXIuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwpAQCAt
MzQsNyArMzQsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIgPSBmdW5jdGlvbigp
CiAgICAgdmFyIGJyZWFrcG9pbnRzID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmZpbmRTZXR0aW5n
Rm9yQWxsUHJvamVjdHMoIm5hdGl2ZUJyZWFrcG9pbnRzIik7CiAgICAgZm9yICh2YXIgcHJvamVj
dElkIGluIGJyZWFrcG9pbnRzKQogICAgICAgICB0aGlzLl9zdGlja3lCcmVha3BvaW50c1twcm9q
ZWN0SWRdID0gdGhpcy5fdmFsaWRhdGVCcmVha3BvaW50cyhicmVha3BvaW50c1twcm9qZWN0SWRd
KTsKLSAgICBJbnNwZWN0b3JCYWNrZW5kLnNldFN0aWNreUJyZWFrcG9pbnRzKHRoaXMuX3N0aWNr
eUJyZWFrcG9pbnRzKTsKKyAgICBJbnNwZWN0b3JCYWNrZW5kLnNldEFsbEJyb3dzZXJCcmVha3Bv
aW50cyh0aGlzLl9zdGlja3lCcmVha3BvaW50cyk7CiAKICAgICB0aGlzLl9icmVha3BvaW50cyA9
IHt9OwogICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRzUmVzdG9yZWQgPSBmYWxzZTsKQEAgLTMwMyw3
ICszMDMsNyBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubmF0aXZlQnJlYWtwb2ludHMgPSBicmVha3Bv
aW50czsKIAogICAgICAgICB0aGlzLl9zdGlja3lCcmVha3BvaW50c1tXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MucHJvamVjdElkXSA9IGJyZWFrcG9pbnRzOwotICAgICAgICBJbnNwZWN0b3JCYWNrZW5k
LnNldFN0aWNreUJyZWFrcG9pbnRzKHRoaXMuX3N0aWNreUJyZWFrcG9pbnRzKTsKKyAgICAgICAg
SW5zcGVjdG9yQmFja2VuZC5zZXRBbGxCcm93c2VyQnJlYWtwb2ludHModGhpcy5fc3RpY2t5QnJl
YWtwb2ludHMpOwogICAgIH0sCiAKICAgICBfdmFsaWRhdGVCcmVha3BvaW50czogZnVuY3Rpb24o
cGVyc2lzdGVudEJyZWFrcG9pbnRzKQo=
</data>
<flag name="review"
          id="71140"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>