<?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>27972</bug_id>
          
          <creation_ts>2009-08-04 00:22:20 -0700</creation_ts>
          <short_desc>committer logic should be split out of bugzilla.py into its own module</short_desc>
          <delta_ts>2009-08-04 01:21:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136917</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 00:22:20 -0700</bug_when>
    <thetext>committer logic should be split out of bugzilla.py into its own module

Adam is going to need committer lookup abilities, so I&apos;ve made it a module.

I also finally learned how to write unit tests, so I unit tested all of my changes!

Running the unit tests seems to be a tricky dance of setting up python paths correctly.  Maybe one of the python gurus can help me straighten things out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136918</commentid>
    <comment_count>1</comment_count>
      <attachid>34040</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 00:23:37 -0700</bug_when>
    <thetext>Created attachment 34040
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136925</commentid>
    <comment_count>2</comment_count>
      <attachid>34042</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 00:40:02 -0700</bug_when>
    <thetext>Created attachment 34042
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136927</commentid>
    <comment_count>3</comment_count>
      <attachid>34044</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 01:08:17 -0700</bug_when>
    <thetext>Created attachment 34044
Updated to remove short_name code


---
 5 files changed, 291 insertions(+), 63 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136929</commentid>
    <comment_count>4</comment_count>
      <attachid>34044</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-08-04 01:09:34 -0700</bug_when>
    <thetext>Comment on attachment 34044
Updated to remove short_name code

Thanks for adding the extra test.  We should eventually have a test harness for all these tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136932</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-04 01:21:00 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/46750.  Unsure why the tool failed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34040</attachid>
            <date>2009-08-04 00:23:37 -0700</date>
            <delta_ts>2009-08-04 00:39:52 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27972-20090804002335.patch</filename>
            <type>text/plain</type>
            <size>22975</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMTlhNjUzLi4xN2U4NzI5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMDgt
MDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdHRlciBsb2dpYyBzaG91bGQgYmUgc3Bs
aXQgb3V0IG9mIGJ1Z3ppbGxhLnB5IGludG8gaXRzIG93biBtb2R1bGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3OTcyCisKKyAgICAgICAgSSBhbHNv
IGFkZGVkIHVuaXQgdGVzdHMgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEkgYWRkZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1
bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY2hhbmdlbG9ncy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1p
dGVyc191bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NvbW1p
dHRlcnMucHk6IEFkZGVkLgorCiAyMDA5LTA4LTAzICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdA
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkKaW5kZXggMzc5NzcxZS4uNDIyNmUwNCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQpAQCAtMzksNiArMzksNyBAQCBm
cm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSAjIHVzZWQgaW4gdGltZXN0YW1wKCkKIAogIyBJ
bXBvcnQgV2ViS2l0LXNwZWNpZmljIG1vZHVsZXMuCiBmcm9tIG1vZHVsZXMubG9nZ2luZyBpbXBv
cnQgZXJyb3IsIGxvZworZnJvbSBtb2R1bGVzLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxp
c3QKIAogIyBXZWJLaXQgaW5jbHVkZXMgYSBidWlsdCBjb3B5IG9mIEJlYXV0aWZ1bFNvdXAgaW4g
U2NyaXB0cy9tb2R1bGVzCiAjIHNvIHRoaXMgaW1wb3J0IHNob3VsZCBhbHdheXMgc3VjY2VlZC4K
QEAgLTExOSw2NCArMTIwLDIwIEBAIGRlZiB0aW1lc3RhbXAoKToKICAgICByZXR1cm4gZGF0ZXRp
bWUubm93KCkuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpCiAKIGNsYXNzIEJ1Z3ppbGxhOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBkcnlydW49RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBkcnlydW49RmFsc2UsIGNvbW1pdHRlcnM9Q29tbWl0dGVyTGlzdCgpKToKICAgICAgICAgc2Vs
Zi5kcnlydW4gPSBkcnlydW4KICAgICAgICAgc2VsZi5hdXRoZW50aWNhdGVkID0gRmFsc2UKIAog
ICAgICAgICBzZWxmLmJyb3dzZXIgPSBCcm93c2VyKCkKICAgICAgICAgIyBJZ25vcmUgYnVncy53
ZWJraXQub3JnL3JvYm90cy50eHQgdW50aWwgd2UgZml4IGl0IHRvIGFsbG93IHRoaXMgc2NyaXB0
CiAgICAgICAgIHNlbGYuYnJvd3Nlci5zZXRfaGFuZGxlX3JvYm90cyhGYWxzZSkKKyAgICAgICAg
c2VsZi5jb21taXR0ZXJzID0gY29tbWl0dGVycwogCiAgICAgIyBEZWZhdWx0cyAodW50aWwgd2Ug
c3VwcG9ydCBiZXR0ZXIgb3B0aW9uIHBhcnNpbmcpOgogICAgIGJ1Z19zZXJ2ZXJfaG9zdCA9ICJi
dWdzLndlYmtpdC5vcmciCiAgICAgYnVnX3NlcnZlcl9yZWdleCA9ICJodHRwcz86Ly8lcy8iICUg
cmUuc3ViKCdcLicsICdcXC4nLCBidWdfc2VydmVyX2hvc3QpCiAgICAgYnVnX3NlcnZlcl91cmwg
PSAiaHR0cHM6Ly8lcy8iICUgYnVnX3NlcnZlcl9ob3N0CiAKLSAgICAjIFRoaXMgY291bGQgZXZl
bnR1YWxseSBiZSBhIHRleHQgZmlsZQotICAgIHJldmlld2VyX3VzZXJuYW1lc190b19mdWxsX25h
bWVzID0gewotICAgICAgICAiYWJhcnRoIiA6ICJBZGFtIEJhcnRoIiwKLSAgICAgICAgImFkZWxl
IiA6ICJBZGVsZSBQZXRlcnNvbiIsCi0gICAgICAgICJhbmRlcnNjYSIgOiAiQW5kZXJzIENhcmxz
c29uIiwKLSAgICAgICAgImFyb2JlbiIgOiAiQWRhbSBSb2JlbiIsCi0gICAgICAgICJhcCIgOiAi
QWxleGV5IFByb3NrdXJ5YWtvdiIsCi0gICAgICAgICJhcml5YS5oaWRheWF0IiA6ICJBcml5YSBI
aWRheWF0IiwKLSAgICAgICAgImJhcnJhY2xvdWdoIiA6ICJHYXZpbiBCYXJyYWNsb3VnaCIsCi0g
ICAgICAgICJiZWlkc29uIiA6ICJCcmFkeSBFaWRzb24iLAotICAgICAgICAiZGFyaW4iIDogIkRh
cmluIEFkbGVyIiwKLSAgICAgICAgImRka2lsemVyIiA6ICJEYXZpZCBLaWx6ZXIiLAotICAgICAg
ICAiZGdsYXprb3YiIDogIkRpbWl0cmkgR2xhemtvdiIsCi0gICAgICAgICJlcmljIiA6ICJFcmlj
IFNlaWRlbCIsCi0gICAgICAgICJmaXNoZCIgOiAiRGFyaW4gRmlzaGVyIiwKLSAgICAgICAgImdu
cyIgOiAiR3VzdGF2byBOb3JvbmhhIiwKLSAgICAgICAgImhhdXNtYW5uIiA6ICJTaW1vbiBIYXVz
bWFubiIsCi0gICAgICAgICJoeWF0dCIgOiAiRGF2aWQgSHlhdHQiLAotICAgICAgICAiam1hbG9u
em8iIDogIkphbiBBbG9uem8iLAotICAgICAgICAianVzdGluLmdhcmNpYSIgOiAiSnVzdGluIEdh
cmNpYSIsCi0gICAgICAgICJrZXZpbm8iIDogIktldmluIE9sbGl2aWVyIiwKLSAgICAgICAgImtt
Y2N1bGxvdWdoIiA6ICJLZXZpbiBNY0N1bGxvdWdoIiwKLSAgICAgICAgImtvaXZpc3RvIiA6ICJB
bnR0aSBLb2l2aXN0byIsCi0gICAgICAgICJsZXZpbiIgOiAiRGF2aWQgTGV2aW4iLAotICAgICAg
ICAibWl0eiIgOiAiRGFuIEJlcm5zdGVpbiIsCi0gICAgICAgICJtanMiIDogIk1hY2llaiBTdGFj
aG93aWFrIiwKLSAgICAgICAgIm1yb3dlIiA6ICJNYXJrIFJvd2UiLAotICAgICAgICAib2xpdmVy
IiA6ICJPbGl2ZXIgSHVudCIsCi0gICAgICAgICJzYW0iIDogIlNhbSBXZWluaWciLAotICAgICAg
ICAic2ZhbGtlbiIgOiAiU3RldmUgRmFsa2VuYnVyZyIsCi0gICAgICAgICJzaW1vbi5mcmFzZXIi
IDogIlNpbW9uIEZyYXNlciIsCi0gICAgICAgICJzdGFpa29zIiA6ICJHZW9yZ2UgU3RhaWtvcyIs
Ci0gICAgICAgICJ0aW1vdGh5IiA6ICJUaW1vdGh5IEhhdGNoZXIiLAotICAgICAgICAidHJlYXQi
IDogIkFkYW0gVHJlYXQiLAotICAgICAgICAidmVzdGJvIiA6IHUnVG9yIEFybmUgVmVzdGJceGY4
JywKLSAgICAgICAgInhhbi5sb3BleiIgOiAiWGFuIExvcGV6IiwKLSAgICAgICAgInplY2tlIiA6
ICJIb2xnZXIgRnJleXRoZXIiLAotICAgICAgICAiemltbWVybWFubiIgOiAiTmlrb2xhcyBaaW1t
ZXJtYW5uIiwKLSAgICB9Ci0KLSAgICBkZWYgZnVsbF9uYW1lX2Zyb21fYnVnemlsbGFfbmFtZShz
ZWxmLCBidWd6aWxsYV9uYW1lKToKLSAgICAgICAgaWYgbm90IGJ1Z3ppbGxhX25hbWUgaW4gc2Vs
Zi5yZXZpZXdlcl91c2VybmFtZXNfdG9fZnVsbF9uYW1lczoKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiRVJST1I6IFVua25vd24gcmV2aWV3ZXIhICIgKyBidWd6aWxsYV9uYW1lKQotICAg
ICAgICByZXR1cm4gc2VsZi5yZXZpZXdlcl91c2VybmFtZXNfdG9fZnVsbF9uYW1lc1tidWd6aWxs
YV9uYW1lXQotCiAgICAgZGVmIGJ1Z191cmxfZm9yX2J1Z19pZChzZWxmLCBidWdfaWQsIHhtbD1G
YWxzZSk6CiAgICAgICAgIGNvbnRlbnRfdHlwZSA9ICImY3R5cGU9eG1sIiBpZiB4bWwgZWxzZSAi
IgogICAgICAgICByZXR1cm4gIiVzc2hvd19idWcuY2dpP2lkPSVzJXMiICUgKHNlbGYuYnVnX3Nl
cnZlcl91cmwsIGJ1Z19pZCwgY29udGVudF90eXBlKQpAQCAtMTg3LDMxICsxNDQsMzMgQEAgY2xh
c3MgQnVnemlsbGE6CiAgICAgICAgICAgICBhY3Rpb25fcGFyYW0gPSAiJmFjdGlvbj0iICsgYWN0
aW9uCiAgICAgICAgIHJldHVybiAiJXNhdHRhY2htZW50LmNnaT9pZD0lcyVzIiAlIChzZWxmLmJ1
Z19zZXJ2ZXJfdXJsLCBhdHRhY2htZW50X2lkLCBhY3Rpb25fcGFyYW0pCiAKKyAgICBkZWYgX3Bh
cnNlX2F0dGFjaG1lbnRfZWxlbWVudChzZWxmLCBlbGVtZW50LCBidWdfaWQpOgorICAgICAgICBh
dHRhY2htZW50ID0ge30KKyAgICAgICAgYXR0YWNobWVudFsnYnVnX2lkJ10gPSBidWdfaWQKKyAg
ICAgICAgYXR0YWNobWVudFsnaXNfb2Jzb2xldGUnXSA9IChlbGVtZW50Lmhhc19rZXkoJ2lzb2Jz
b2xldGUnKSBhbmQgZWxlbWVudFsnaXNvYnNvbGV0ZSddID09ICIxIikKKyAgICAgICAgYXR0YWNo
bWVudFsnaXNfcGF0Y2gnXSA9IChlbGVtZW50Lmhhc19rZXkoJ2lzcGF0Y2gnKSBhbmQgZWxlbWVu
dFsnaXNwYXRjaCddID09ICIxIikKKyAgICAgICAgYXR0YWNobWVudFsnaWQnXSA9IHN0cihlbGVt
ZW50LmZpbmQoJ2F0dGFjaGlkJykuc3RyaW5nKQorICAgICAgICBhdHRhY2htZW50Wyd1cmwnXSA9
IHNlbGYuYXR0YWNobWVudF91cmxfZm9yX2lkKGF0dGFjaG1lbnRbJ2lkJ10pCisgICAgICAgIGF0
dGFjaG1lbnRbJ25hbWUnXSA9IHVuaWNvZGUoZWxlbWVudC5maW5kKCdkZXNjJykuc3RyaW5nKQor
ICAgICAgICBhdHRhY2htZW50Wyd0eXBlJ10gPSBzdHIoZWxlbWVudC5maW5kKCd0eXBlJykuc3Ry
aW5nKQorCisgICAgICAgIHJldmlld19mbGFnID0gZWxlbWVudC5maW5kKCdmbGFnJywgYXR0cnM9
eyJuYW1lIiA6ICJyZXZpZXcifSkKKyAgICAgICAgaWYgcmV2aWV3X2ZsYWcgYW5kIHJldmlld19m
bGFnWydzdGF0dXMnXSA9PSAnKyc6CisgICAgICAgICAgICByZXZpZXdlcl9lbWFpbCA9IHJldmll
d19mbGFnWydzZXR0ZXInXQorICAgICAgICAgICAgcmV2aWV3ZXIgPSBzZWxmLmNvbW1pdHRlcnMu
cmV2aWV3ZXJfYnlfYnVnemlsbGFfZW1haWwocmV2aWV3ZXJfZW1haWwpCisgICAgICAgICAgICBh
dHRhY2htZW50WydyZXZpZXdlciddID0gcmV2aWV3ZXIuZnVsbF9uYW1lCisgICAgICAgIHJldHVy
biBhdHRhY2htZW50CisKICAgICBkZWYgZmV0Y2hfYXR0YWNobWVudHNfZnJvbV9idWcoc2VsZiwg
YnVnX2lkKToKICAgICAgICAgYnVnX3VybCA9IHNlbGYuYnVnX3VybF9mb3JfYnVnX2lkKGJ1Z19p
ZCwgeG1sPVRydWUpCiAgICAgICAgIGxvZygiRmV0Y2hpbmc6ICIgKyBidWdfdXJsKQogCiAgICAg
ICAgIHBhZ2UgPSB1cmxsaWIyLnVybG9wZW4oYnVnX3VybCkKICAgICAgICAgc291cCA9IEJlYXV0
aWZ1bFNvdXAocGFnZSkKLSAgICAKKwogICAgICAgICBhdHRhY2htZW50cyA9IFtdCiAgICAgICAg
IGZvciBlbGVtZW50IGluIHNvdXAuZmluZEFsbCgnYXR0YWNobWVudCcpOgotICAgICAgICAgICAg
YXR0YWNobWVudCA9IHt9Ci0gICAgICAgICAgICBhdHRhY2htZW50WydidWdfaWQnXSA9IGJ1Z19p
ZAotICAgICAgICAgICAgYXR0YWNobWVudFsnaXNfb2Jzb2xldGUnXSA9IChlbGVtZW50Lmhhc19r
ZXkoJ2lzb2Jzb2xldGUnKSBhbmQgZWxlbWVudFsnaXNvYnNvbGV0ZSddID09ICIxIikKLSAgICAg
ICAgICAgIGF0dGFjaG1lbnRbJ2lzX3BhdGNoJ10gPSAoZWxlbWVudC5oYXNfa2V5KCdpc3BhdGNo
JykgYW5kIGVsZW1lbnRbJ2lzcGF0Y2gnXSA9PSAiMSIpCi0gICAgICAgICAgICBhdHRhY2htZW50
WydpZCddID0gc3RyKGVsZW1lbnQuZmluZCgnYXR0YWNoaWQnKS5zdHJpbmcpCi0gICAgICAgICAg
ICBhdHRhY2htZW50Wyd1cmwnXSA9IHNlbGYuYXR0YWNobWVudF91cmxfZm9yX2lkKGF0dGFjaG1l
bnRbJ2lkJ10pCi0gICAgICAgICAgICBhdHRhY2htZW50WyduYW1lJ10gPSB1bmljb2RlKGVsZW1l
bnQuZmluZCgnZGVzYycpLnN0cmluZykKLSAgICAgICAgICAgIGF0dGFjaG1lbnRbJ3R5cGUnXSA9
IHN0cihlbGVtZW50LmZpbmQoJ3R5cGUnKS5zdHJpbmcpCi0KLSAgICAgICAgICAgIHJldmlld19m
bGFnID0gZWxlbWVudC5maW5kKCdmbGFnJywgYXR0cnM9eyJuYW1lIiA6ICJyZXZpZXcifSkKLSAg
ICAgICAgICAgIGlmIHJldmlld19mbGFnIGFuZCByZXZpZXdfZmxhZ1snc3RhdHVzJ10gPT0gJysn
OgotICAgICAgICAgICAgICAgIHJldmlld2VyX2VtYWlsID0gcmV2aWV3X2ZsYWdbJ3NldHRlcidd
Ci0gICAgICAgICAgICAgICAgIyBXZSBjb3VsZCBsb29rdXAgdGhlIGZ1bGwgZW1haWwgYWRkcmVz
cyBpbnN0ZWFkIG9uY2Ugd2UgdXBkYXRlIGZ1bGxfbmFtZV9mcm9tX2J1Z3ppbGxhX25hbWUKLSAg
ICAgICAgICAgICAgICBidWd6aWxsYV9uYW1lID0gcmV2aWV3ZXJfZW1haWwuc3BsaXQoJ0AnKVsw
XQotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRbJ3Jldmlld2VyJ10gPSBzZWxmLmZ1bGxfbmFt
ZV9mcm9tX2J1Z3ppbGxhX25hbWUoYnVnemlsbGFfbmFtZSkKLQorICAgICAgICAgICAgYXR0YWNo
bWVudCA9IHNlbGYuX3BhcnNlX2F0dGFjaG1lbnRfZWxlbWVudChlbGVtZW50LCBidWdfaWQpCiAg
ICAgICAgICAgICBhdHRhY2htZW50cy5hcHBlbmQoYXR0YWNobWVudCkKICAgICAgICAgcmV0dXJu
IGF0dGFjaG1lbnRzCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9i
dWd6aWxsYV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxs
YV91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg4ZGNk
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxh
X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsODMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5p
dHRlc3QKKworZnJvbSBtb2R1bGVzLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIFJl
dmlld2VyCitmcm9tIG1vZHVsZXMuYnVnemlsbGEgaW1wb3J0IEJ1Z3ppbGxhCisKK2Zyb20gbW9k
dWxlcy5CZWF1dGlmdWxTb3VwIGltcG9ydCBCZWF1dGlmdWxTb3VwCisKK2NsYXNzIEJ1Z3ppbGxh
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBfZXhhbXBsZV9hdHRhY2htZW50ID0gJycn
CisgICAgICAgIDxhdHRhY2htZW50CisgICAgICAgICAgaXNvYnNvbGV0ZT0iMSIKKyAgICAgICAg
ICBpc3BhdGNoPSIxIgorICAgICAgICAgIGlzcHJpdmF0ZT0iMCIKKyAgICAgICAgPgorICAgICAg
ICA8YXR0YWNoaWQ+MzM3MjE8L2F0dGFjaGlkPgorICAgICAgICA8ZGF0ZT4yMDA5LTA3LTI5IDEw
OjIzIFBEVDwvZGF0ZT4KKyAgICAgICAgPGRlc2M+Rml4ZWQgd2hpdGVzcGFjZSBpc3N1ZTwvZGVz
Yz4KKyAgICAgICAgPGZpbGVuYW1lPnBhdGNoPC9maWxlbmFtZT4KKyAgICAgICAgPHR5cGU+dGV4
dC9wbGFpbjwvdHlwZT4KKyAgICAgICAgPHNpemU+OTcxOTwvc2l6ZT4KKyAgICAgICAgPGF0dGFj
aGVyPmNocmlzdGlhbi5wbGVzbmVyLmhhbnNlbkBnbWFpbC5jb208L2F0dGFjaGVyPgorICAgICAg
ICAgIDxmbGFnIG5hbWU9InJldmlldyIKKyAgICAgICAgICAgICAgICBpZD0iMTc5MzEiCisgICAg
ICAgICAgICAgICAgc3RhdHVzPSIrIgorICAgICAgICAgICAgICAgIHNldHRlcj0ib25lQHRlc3Qu
Y29tIgorICAgICAgICAgICAvPgorICAgICAgICA8L2F0dGFjaG1lbnQ+CisnJycKKyAgICBfZXhw
ZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50X3BhcnNpbmcgPSB7CisgICAgICAgICdidWdfaWQnIDog
IjEwMCIsCisgICAgICAgICdpc19vYnNvbGV0ZScgOiBUcnVlLAorICAgICAgICAnaXNfcGF0Y2gn
IDogVHJ1ZSwKKyAgICAgICAgJ2lkJyA6ICIzMzcyMSIsCisgICAgICAgICd1cmwnIDogImh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTMzNzIxIiwKKyAgICAgICAgJ25h
bWUnIDogIkZpeGVkIHdoaXRlc3BhY2UgaXNzdWUiLAorICAgICAgICAndHlwZScgOiAidGV4dC9w
bGFpbiIsCisgICAgICAgICdyZXZpZXdlcicgOiAnVGVzdCBPbmUnCisgICAgfQorCisgICAgZGVm
IHRlc3RfYXR0YWNobWVudF9wYXJzaW5nKHNlbGYpOgorICAgICAgICByZXZpZXdlciA9IFJldmll
d2VyKCdUZXN0IE9uZScsICdvbmVAdGVzdC5jb20nKQorICAgICAgICBjb21taXR0ZXJfbGlzdCA9
IENvbW1pdHRlckxpc3QoY29tbWl0dGVycz1bXSwgcmV2aWV3ZXJzPVtyZXZpZXdlcl0pCisgICAg
ICAgIGJ1Z3ppbGxhID0gQnVnemlsbGEoY29tbWl0dGVycz1jb21taXR0ZXJfbGlzdCkKKworICAg
ICAgICBzb3VwID0gQmVhdXRpZnVsU291cChzZWxmLl9leGFtcGxlX2F0dGFjaG1lbnQpCisgICAg
ICAgIGF0dGFjaG1lbnRfZWxlbWVudCA9IHNvdXAuZmluZCgiYXR0YWNobWVudCIpCisgICAgICAg
IGF0dGFjaG1lbnQgPSBidWd6aWxsYS5fcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KGF0dGFjaG1l
bnRfZWxlbWVudCwgc2VsZi5fZXhwZWN0ZWRfZXhhbXBsZV9hdHRhY2htZW50X3BhcnNpbmdbJ2J1
Z19pZCddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0YWNobWVudCkKKworICAgICAgICBm
b3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1l
bnRfcGFyc2luZy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYXR0YWNo
bWVudFtrZXldLCBleHBlY3RlZF92YWx1ZSwgKCJGYWlsdXJlIGZvciBrZXk6ICVzIiAlIGtleSkp
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY2hhbmdlbG9ncy5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jaGFuZ2Vsb2dzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjFkZTg2YzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL21vZHVsZXMvY2hhbmdlbG9ncy5weQpAQCAtMCwwICsxLDc4IEBACisjIENvcHlyaWdo
dCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMgCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjIAorIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisjCisjIFdlYktpdCdzIFB5dGhvbiBtb2R1bGUgZm9yIGludGVyYWN0aW5nIHdp
dGggQ2hhbmdlTG9nIGZpbGVzCisKK2ZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0
aHM6CisgICAgY2hhbmdlX2xvZyA9IG9wZW4oY2hhbmdlbG9nX3BhdGgpCisgICAgZm9yIGxpbmUg
aW4gY2hhbmdlX2xvZzoKKyAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCdcbicpCisgICAgICAg
IG1hdGNoID0gcmUubWF0Y2goIl5ccytSZXZpZXdlZCBieSAoLio/KVtcLixdP1xzKiQiLCBsaW5l
KSAjIERpc2NhcmQgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgcGVyaW9kCisgICAgICAgIGlm
IG5vdCBtYXRjaDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHJldmlld2VyX3N0cmlu
ZyA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgIAorICAgICAgICBmb3IganVuayBpbiByZW1vdmVf
anVuazoKKyAgICAgICAgICAgIHJldmlld2VyX3N0cmluZyA9IHJldmlld2VyX3N0cmluZy5yZXBs
YWNlKGp1bmssICcnKQorICAgICAgICAKKyAgICAgICAgZm9yIHJlcGxhY2VtZW50IGluIHJlcGxh
Y2VtZW50czoKKyAgICAgICAgICAgIHJldmlld2VyX3N0cmluZyA9IHJldmlld2VyX3N0cmluZy5y
ZXBsYWNlKHJlcGxhY2VtZW50WzBdLCByZXBsYWNlbWVudFsxXSkKKyAgICAgICAgCisgICAgICAg
IHJldmlld2VyX3N0cmluZyA9IHJlLnN1YignXC5ccytMYW5kZWQgYnkgLionLCAnJywgcmV2aWV3
ZXJfc3RyaW5nKSAjIHJlbW92ZSAiTGFuZGVkIGJ5IC4uLiIKKyAgICAgICAgcmV2aWV3ZXJfc3Ry
aW5nID0gcmUuc3ViKCdcLlxzK0NvbW1pdHRlZCBieSAuKicsICcnLCByZXZpZXdlcl9zdHJpbmcp
ICMgcmVtb3ZlICJDb21taXR0ZWQgYnkgLi4uIgorICAgICAgICByZXZpZXdlcl9zdHJpbmcgPSBy
ZS5zdWIoJ1wuXHMrTGFuZGVkIFwoYW5kIHR3ZWFrZWRcKSBieSAuKicsICcnLCByZXZpZXdlcl9z
dHJpbmcpICMgcmVtb3ZlICJMYW5kZWQgYnkgLi4uIgorICAgICAgICAKKyAgICAgICAgcmV2aWV3
ZXJfc3RyaW5nID0gcmUuc3ViKCdOT0JPRFkuKicsICdOT0JPRFknLCByZXZpZXdlcl9zdHJpbmcp
ICMgbWFrZSBhbGwgTk9CT0RZJ3Mgb25lIGVudHJ5CisgICAgICAgIAorICAgICAgICByZXZpZXdl
cl9zdHJpbmcgPSByZS5zdWIoJ1xzKzwuKj4nLCAnJywgcmV2aWV3ZXJfc3RyaW5nKSAjIHJlbW92
ZSBlbWFpbCBhZGRyZXNzZXMKKyAgICAgICAgcmV2aWV3ZXJfc3RyaW5nID0gcmUuc3ViKCciLioi
ICcsICcnLCByZXZpZXdlcl9zdHJpbmcpICMgcmVtb3ZlIHdyZXN0bGVyIG5hbWVzIDopCisgICAg
ICAgIHJldmlld2VyX3N0cmluZyA9IHJlLnN1YigiJy4qJyAiLCAnJywgcmV2aWV3ZXJfc3RyaW5n
KSAjIHJlbW92ZSB3cmVzdGxlciBuYW1lcyA6KQorICAgICAgICAKKyAgICAgICAgcmV2aWV3ZXJf
c3RyaW5nID0gcmUuc3ViKHIiIFwoYW5kICguKj8pXCkiLCByIiBhbmQgXDEiLCByZXZpZXdlcl9z
dHJpbmcpICMgcmVtb3ZlICgpIGFyb3VuZCBzZWNvbmQgcmV2aWV3ZXIKKyAgICAgICAgCisgICAg
ICAgIHJldmlld2VycyA9IHNwbGl0X3Jldmlld2VycyhyZXZpZXdlcl9zdHJpbmcpCisgICAgICAg
IAorICAgICAgICBmb3IgcmV2aWV3ZXIgaW4gcmV2aWV3ZXJzOgorICAgICAgICAgICAgaWYgcmV2
aWV3ZXIgaW4gbmFtZV9tYXBwaW5nczoKKyAgICAgICAgICAgICAgICByZXZpZXdlciA9IG5hbWVf
bWFwcGluZ3NbcmV2aWV3ZXJdCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldmlld2VyX2Nv
dW50c1tyZXZpZXdlcl0gPSByZXZpZXdlcl9jb3VudHMuZ2V0KHJldmlld2VyLCAwKSArIDEKKwor
ZGVmIGNoYW5nZWxvZ19lbnRyaWVzX2luX2ZpbGVzKGZpbGVzKToKKyAgICAKKworICAgIGRlZiBy
ZXZlcnNlKGRhdGEpOgorICAgICAgICBmb3IgaW5kZXggaW4gcmFuZ2UobGVuKGRhdGEpLTEsIC0x
LCAtMSk6CisgICAgICAgICAgICB5aWVsZCBkYXRhW2luZGV4XQorCitjbGFzcyBDaGFuZ2VMb2dF
bnRyeToKKyAgICBwYXNzCisKK2NsYXNzIENoYW5nZUxvZ0ZpbGU6CisgICAgcGFzcworCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0ZXJzX3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdGVyc191bml0dGVzdC5weQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjU2MmRlCi0tLSAvZGV2L251bGwKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdGVyc191bml0dGVzdC5weQpAQCAt
MCwwICsxLDU3IEBACisjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGNvbW1p
dHRlcnMgaW1wb3J0IENvbW1pdHRlckxpc3QsIENvbW1pdHRlciwgUmV2aWV3ZXIKKworY2xhc3Mg
Q29tbWl0dGVyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2hvcnRf
bmFtZShzZWxmKToKKyAgICAgICAgZXhwZWN0YXRpb25zID0gWworICAgICAgICAgICAgWydmb29A
YmFyLmNvbScsICdmb28nXSwKKyAgICAgICAgICAgIFsnZm9vQCcsICdmb28nXSwKKyAgICAgICAg
ICAgIFsnZm9vJywgJ2ZvbyddLAorICAgICAgICBdCisgICAgICAgIGZvciB0ZXN0IGluIGV4cGVj
dGF0aW9uczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29tbWl0dGVyLmVtYWlsX3Rv
X3Nob3J0X25hbWUodGVzdFswXSksIHRlc3RbMV0pCisKKyAgICBkZWYgdGVzdF9jb21taXR0ZXJf
bG9va3VwKHNlbGYpOgorICAgICAgICBjb21taXR0ZXIgPSBDb21taXR0ZXIoJ1Rlc3QgT25lJywg
J29uZUB0ZXN0LmNvbScpCisgICAgICAgIHJldmlld2VyID0gUmV2aWV3ZXIoJ1Rlc3QgVHdvJywg
J3R3b0B0ZXN0LmNvbScpCisKKyAgICAgICAgY29tbWl0dGVyX2xpc3QgPSBDb21taXR0ZXJMaXN0
KGNvbW1pdHRlcnM9W2NvbW1pdHRlcl0sIHJldmlld2Vycz1bcmV2aWV3ZXJdKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0dGVyX2xpc3QuY29tbWl0dGVyX2J5X2J1Z3ppbGxhX2Vt
YWlsKCdvbmVAdGVzdC5jb20nKSwgY29tbWl0dGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1pdHRlcl9saXN0LnJldmlld2VyX2J5X2J1Z3ppbGxhX2VtYWlsKCd0d29AdGVzdC5jb20n
KSwgcmV2aWV3ZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBjb21t
aXR0ZXJfbGlzdC5yZXZpZXdlcl9ieV9idWd6aWxsYV9lbWFpbCwgJ29uZUB0ZXN0LmNvbScpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgY29tbWl0dGVyX2xpc3QuY29tbWl0
dGVyX2J5X2J1Z3ppbGxhX2VtYWlsLCAnYmFyQGJhci5jb20nKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhFeGNlcHRpb24sIGNvbW1pdHRlcl9saXN0LnJldmlld2VyX2J5X2J1Z3ppbGxhX2Vt
YWlsLCAnYmFyQGJhci5jb20nKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVu
aXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2Nv
bW1pdHRlcnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0dGVycy5weQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWIzZmFiCi0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkKQEAgLTAsMCAr
MSwxMjkgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyAKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBk
aXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyMKKyMgV2ViS2l0J3MgUHl0aG9uIG1vZHVs
ZSBmb3IgY29tbWl0dGVyIGFuZCByZXZpZXdlciB2YWxpZGF0aW9uCisKK2NsYXNzIENvbW1pdHRl
cjoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZW1haWwpOgorICAgICAgICBzZWxmLmZ1
bGxfbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5idWd6aWxsYV9lbWFpbCA9IGVtYWlsCisgICAg
ICAgICMgRklYTUU6IHNob3J0X25hbWUgaXMgb25seSBuZWVkZWQgdW50aWwgX3Jldmlld2VyX2xp
c3QgZW50cmllcyBhbGwgaGF2ZSBlbWFpbCBhZGRyZXNzZXMuCisgICAgICAgIHNlbGYuc2hvcnRf
bmFtZSA9IHNlbGYuZW1haWxfdG9fc2hvcnRfbmFtZShlbWFpbCkKKyAgICAgICAgc2VsZi5jYW5f
cmV2aWV3ID0gRmFsc2UKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZW1haWxfdG9fc2hv
cnRfbmFtZShlbWFpbCk6CisgICAgICAgIHJldHVybiBlbWFpbC5zcGxpdCgnQCcpWzBdCisKKyAg
ICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICciJXMiIDwlcz4nICUgKHNlbGYu
ZnVsbF9uYW1lLCBzZWxmLmJ1Z3ppbGxhX2VtYWlsKQorCitjbGFzcyBSZXZpZXdlcihDb21taXR0
ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlbWFpbCk6CisgICAgICAgIENvbW1p
dHRlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBlbWFpbCkKKyAgICAgICAgc2VsZi5jYW5fcmV2aWV3
ID0gVHJ1ZQorCisjIEFsbCByZXZpZXdlcnMgYXJlIGNvbW1pdHRlcnMsIHNvIHRoaXMgbGlzdCBp
cyBvbmx5IG9mIGNvbW1pdHRlcnMKKyMgd2hvIGFyZSBub3QgcmV2aWV3ZXJzLgorY29tbWl0dGVy
c191bmFibGVfdG9fcmV2aWV3ID0gWworICAgIENvbW1pdHRlcigiQWxiZXJ0IEouIFdvbmciLCAi
YWp3b25nQGNocm9taXVtLm9yZyIpLAorICAgIENvbW1pdHRlcigiQmVuIE11cmRvY2giLCAiYmVu
bUBnb29nbGUuY29tIiksCisgICAgQ29tbWl0dGVyKCJTaGluaWNoaXJvIEhhbWFqaSIsICJoYW1h
amlAZ29vZ2xlLmNvbSIpLAorICAgIENvbW1pdHRlcigiWm9sdGFuIEhvcnZhdGgiLCAiaHpvbHRh
bkBpbmYudS1zemVnZWQuaHUiKSwKK10KKworIyBGSVhNRTogU29tZSByZXZpZXdlcnMgYXJlIG1p
c3NpbmcgdGhpZXIgZnVsbCBlbWFpbHMKKyMgRm9yIG5vdywgbG9va3VwcyBvbmx5IHVzZSB0aGUg
cGFydCBiZWZvcmUgdGhlIEAgc2lnbi4KK3Jldmlld2Vyc19saXN0ID0gWworICAgIFJldmlld2Vy
KCJBZGFtIEJhcnRoIiwgImFiYXJ0aEB3ZWJraXQub3JnIiksCisgICAgUmV2aWV3ZXIoIkFkYW0g
Um9iZW4iLCAiYXJvYmVuQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJBZGFtIFRyZWF0Iiwg
InRyZWF0IiksCisgICAgUmV2aWV3ZXIoIkFkZWxlIFBldGVyc29uIiwgImFkZWxlQGFwcGxlLmNv
bSIpLAorICAgIFJldmlld2VyKCJBbGV4ZXkgUHJvc2t1cnlha292IiwgImFwIiksCisgICAgUmV2
aWV3ZXIoIkFuZGVycyBDYXJsc3NvbiIsICJhbmRlcnNjYSIpLAorICAgIFJldmlld2VyKCJBbnR0
aSBLb2l2aXN0byIsICJrb2l2aXN0byIpLAorICAgIFJldmlld2VyKCJBcml5YSBIaWRheWF0Iiwg
ImFyaXlhLmhpZGF5YXQiKSwKKyAgICBSZXZpZXdlcigiQnJhZHkgRWlkc29uIiwgImJlaWRzb24i
KSwKKyAgICBSZXZpZXdlcigiRGFuIEJlcm5zdGVpbiIsICJtaXR6IiksCisgICAgUmV2aWV3ZXIo
IkRhcmluIEFkbGVyIiwgImRhcmluQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJEYXJpbiBG
aXNoZXIiLCAiZmlzaGQiKSwKKyAgICBSZXZpZXdlcigiRGF2aWQgSHlhdHQiLCAiaHlhdHRAYXBw
bGUuY29tIiksCisgICAgUmV2aWV3ZXIoIkRhdmlkIEtpbHplciIsICJkZGtpbHplciIpLAorICAg
IFJldmlld2VyKCJEYXZpZCBMZXZpbiIsICJsZXZpbiIpLAorICAgIFJldmlld2VyKCJEaW1pdHJp
IEdsYXprb3YiLCAiZGdsYXprb3YiKSwKKyAgICBSZXZpZXdlcigiRXJpYyBTZWlkZWwiLCAiZXJp
Y0B3ZWJraXQub3JnIiksCisgICAgUmV2aWV3ZXIoIkdhdmluIEJhcnJhY2xvdWdoIiwgImJhcnJh
Y2xvdWdoIiksCisgICAgUmV2aWV3ZXIoIkdlb3JnZSBTdGFpa29zIiwgInN0YWlrb3MiKSwKKyAg
ICBSZXZpZXdlcigiR3VzdGF2byBOb3JvbmhhIiwgImducyIpLAorICAgIFJldmlld2VyKCJIb2xn
ZXIgRnJleXRoZXIiLCAiemVja2UiKSwKKyAgICBSZXZpZXdlcigiSmFuIEFsb256byIsICJqbWFs
b256byIpLAorICAgIFJldmlld2VyKCJKdXN0aW4gR2FyY2lhIiwgImp1c3Rpbi5nYXJjaWEiKSwK
KyAgICBSZXZpZXdlcigiS2V2aW4gTWNDdWxsb3VnaCIsICJrbWNjdWxsb3VnaCIpLAorICAgIFJl
dmlld2VyKCJLZXZpbiBPbGxpdmllciIsICJrZXZpbm8iKSwKKyAgICBSZXZpZXdlcigiTWFjaWVq
IFN0YWNob3dpYWsiLCAibWpzQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJNYXJrIFJvd2Ui
LCAibXJvd2UiKSwKKyAgICBSZXZpZXdlcigiTmlrb2xhcyBaaW1tZXJtYW5uIiwgInppbW1lcm1h
bm4iKSwKKyAgICBSZXZpZXdlcigiT2xpdmVyIEh1bnQiLCAib2xpdmVyIiksCisgICAgUmV2aWV3
ZXIoIlNhbSBXZWluaWciLCAic2FtQHdlYmtpdC5vcmciKSwKKyAgICBSZXZpZXdlcigiU2ltb24g
RnJhc2VyIiwgInNpbW9uLmZyYXNlckBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiU2ltb24g
SGF1c21hbm4iLCAiaGF1c21hbm4iKSwKKyAgICBSZXZpZXdlcigiU3RldmUgRmFsa2VuYnVyZyIs
ICJzZmFsa2VuQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJUaW1vdGh5IEhhdGNoZXIiLCAi
dGltb3RoeUBoYXRjaGVyLm5hbWUiKSwKKyAgICBSZXZpZXdlcih1J1RvciBBcm5lIFZlc3RiXHhm
OCcsICJ2ZXN0Ym8iKSwKKyAgICBSZXZpZXdlcigiWGFuIExvcGV6IiwgInhhbi5sb3BleiIpLAor
XQorCisKK2NsYXNzIENvbW1pdHRlckxpc3Q6CisgICAgIyBDb21taXR0ZXJzIGFuZCByZXZpZXdl
cnMgYXJlIHBhc3NlZCBpbiB0byBhbGxvdyBlYXN5IHRlc3RpbmcKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY29tbWl0dGVycz1jb21taXR0ZXJzX3VuYWJsZV90b19yZXZpZXcsIHJldmlld2Vycz1y
ZXZpZXdlcnNfbGlzdCk6CisgICAgICAgIHNlbGYuX2NvbW1pdHRlcnMgPSBjb21taXR0ZXJzICsg
cmV2aWV3ZXJzCisgICAgICAgIHNlbGYuX3Jldmlld2VycyA9IHJldmlld2VycworICAgICAgICBz
ZWxmLl9jb21taXR0ZXJzX2J5X3Nob3J0X25hbWUgPSB7fQorCisgICAgZGVmIGNvbW1pdHRlcnMo
c2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jb21taXR0ZXJzCisKKyAgICBkZWYgX3Nob3J0
X25hbWVfdG9fY29tbWl0dGVyKHNlbGYpOgorICAgICAgICBpZiBub3QgbGVuKHNlbGYuX2NvbW1p
dHRlcnNfYnlfc2hvcnRfbmFtZSk6CisgICAgICAgICAgICBmb3IgY29tbWl0dGVyIGluIHNlbGYu
X2NvbW1pdHRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5fY29tbWl0dGVyc19ieV9zaG9ydF9u
YW1lW2NvbW1pdHRlci5zaG9ydF9uYW1lXSA9IGNvbW1pdHRlcgorICAgICAgICByZXR1cm4gc2Vs
Zi5fY29tbWl0dGVyc19ieV9zaG9ydF9uYW1lCisKKyAgICBkZWYgY29tbWl0dGVyX2J5X2J1Z3pp
bGxhX2VtYWlsKHNlbGYsIGJ1Z3ppbGxhX2VtYWlsKToKKyAgICAgICAgc2hvcnRfbmFtZSA9IENv
bW1pdHRlci5lbWFpbF90b19zaG9ydF9uYW1lKGJ1Z3ppbGxhX2VtYWlsKQorICAgICAgICBjb21t
aXR0ZXIgPSBzZWxmLl9zaG9ydF9uYW1lX3RvX2NvbW1pdHRlcigpLmdldChzaG9ydF9uYW1lKQor
ICAgICAgICBpZiBub3QgY29tbWl0dGVyOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJV
bmtub3duIGNvbW1pdHRlcjogJXMiICUgYnVnemlsbGFfZW1haWwpCisgICAgICAgIHJldHVybiBj
b21taXR0ZXIKKworICAgIGRlZiByZXZpZXdlcl9ieV9idWd6aWxsYV9lbWFpbChzZWxmLCBidWd6
aWxsYV9lbWFpbCk6CisgICAgICAgIGNvbW1pdHRlciA9IHNlbGYuY29tbWl0dGVyX2J5X2J1Z3pp
bGxhX2VtYWlsKGJ1Z3ppbGxhX2VtYWlsKQorICAgICAgICBpZiBub3QgY29tbWl0dGVyLmNhbl9y
ZXZpZXc6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNvbW1pdHRlciAlcyBkb2VzIG5v
dCBoYXZlIHJldmlldyByaWdodHMuIiAlIGNvbW1pdHRlcikKKyAgICAgICAgcmV0dXJuIGNvbW1p
dHRlcg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34042</attachid>
            <date>2009-08-04 00:40:02 -0700</date>
            <delta_ts>2009-08-04 01:08:10 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-27972-20090804004001.patch</filename>
            <type>text/plain</type>
            <size>19107</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMTlhNjUzLi4xOTYzMjhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgt
MDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdHRlciBsb2dpYyBzaG91bGQgYmUgc3Bs
aXQgb3V0IG9mIGJ1Z3ppbGxhLnB5IGludG8gaXRzIG93biBtb2R1bGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3OTcyCisKKyAgICAgICAgSSBhbHNv
IGFkZGVkIHVuaXQgdGVzdHMgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEkgYWRkZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1
bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY29tbWl0ZXJzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY29tbWl0dGVycy5weTogQWRkZWQuCisKIDIwMDktMDgtMDMgIFBldGVyIEthc3RpbmcgIDxw
a2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQppbmRleCAzNzk3NzFlLi40MjI2
ZTA0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC0zOSw2ICsz
OSw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lICMgdXNlZCBpbiB0aW1lc3RhbXAo
KQogCiAjIEltcG9ydCBXZWJLaXQtc3BlY2lmaWMgbW9kdWxlcy4KIGZyb20gbW9kdWxlcy5sb2dn
aW5nIGltcG9ydCBlcnJvciwgbG9nCitmcm9tIG1vZHVsZXMuY29tbWl0dGVycyBpbXBvcnQgQ29t
bWl0dGVyTGlzdAogCiAjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVs
U291cCBpbiBTY3JpcHRzL21vZHVsZXMKICMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBz
dWNjZWVkLgpAQCAtMTE5LDY0ICsxMjAsMjAgQEAgZGVmIHRpbWVzdGFtcCgpOgogICAgIHJldHVy
biBkYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKIAogY2xhc3MgQnVnemls
bGE6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRyeXJ1bj1GYWxzZSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGRyeXJ1bj1GYWxzZSwgY29tbWl0dGVycz1Db21taXR0ZXJMaXN0KCkpOgogICAg
ICAgICBzZWxmLmRyeXJ1biA9IGRyeXJ1bgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBG
YWxzZQogCiAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICAjIElnbm9y
ZSBidWdzLndlYmtpdC5vcmcvcm9ib3RzLnR4dCB1bnRpbCB3ZSBmaXggaXQgdG8gYWxsb3cgdGhp
cyBzY3JpcHQKICAgICAgICAgc2VsZi5icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKQor
ICAgICAgICBzZWxmLmNvbW1pdHRlcnMgPSBjb21taXR0ZXJzCiAKICAgICAjIERlZmF1bHRzICh1
bnRpbCB3ZSBzdXBwb3J0IGJldHRlciBvcHRpb24gcGFyc2luZyk6CiAgICAgYnVnX3NlcnZlcl9o
b3N0ID0gImJ1Z3Mud2Via2l0Lm9yZyIKICAgICBidWdfc2VydmVyX3JlZ2V4ID0gImh0dHBzPzov
LyVzLyIgJSByZS5zdWIoJ1wuJywgJ1xcLicsIGJ1Z19zZXJ2ZXJfaG9zdCkKICAgICBidWdfc2Vy
dmVyX3VybCA9ICJodHRwczovLyVzLyIgJSBidWdfc2VydmVyX2hvc3QKIAotICAgICMgVGhpcyBj
b3VsZCBldmVudHVhbGx5IGJlIGEgdGV4dCBmaWxlCi0gICAgcmV2aWV3ZXJfdXNlcm5hbWVzX3Rv
X2Z1bGxfbmFtZXMgPSB7Ci0gICAgICAgICJhYmFydGgiIDogIkFkYW0gQmFydGgiLAotICAgICAg
ICAiYWRlbGUiIDogIkFkZWxlIFBldGVyc29uIiwKLSAgICAgICAgImFuZGVyc2NhIiA6ICJBbmRl
cnMgQ2FybHNzb24iLAotICAgICAgICAiYXJvYmVuIiA6ICJBZGFtIFJvYmVuIiwKLSAgICAgICAg
ImFwIiA6ICJBbGV4ZXkgUHJvc2t1cnlha292IiwKLSAgICAgICAgImFyaXlhLmhpZGF5YXQiIDog
IkFyaXlhIEhpZGF5YXQiLAotICAgICAgICAiYmFycmFjbG91Z2giIDogIkdhdmluIEJhcnJhY2xv
dWdoIiwKLSAgICAgICAgImJlaWRzb24iIDogIkJyYWR5IEVpZHNvbiIsCi0gICAgICAgICJkYXJp
biIgOiAiRGFyaW4gQWRsZXIiLAotICAgICAgICAiZGRraWx6ZXIiIDogIkRhdmlkIEtpbHplciIs
Ci0gICAgICAgICJkZ2xhemtvdiIgOiAiRGltaXRyaSBHbGF6a292IiwKLSAgICAgICAgImVyaWMi
IDogIkVyaWMgU2VpZGVsIiwKLSAgICAgICAgImZpc2hkIiA6ICJEYXJpbiBGaXNoZXIiLAotICAg
ICAgICAiZ25zIiA6ICJHdXN0YXZvIE5vcm9uaGEiLAotICAgICAgICAiaGF1c21hbm4iIDogIlNp
bW9uIEhhdXNtYW5uIiwKLSAgICAgICAgImh5YXR0IiA6ICJEYXZpZCBIeWF0dCIsCi0gICAgICAg
ICJqbWFsb256byIgOiAiSmFuIEFsb256byIsCi0gICAgICAgICJqdXN0aW4uZ2FyY2lhIiA6ICJK
dXN0aW4gR2FyY2lhIiwKLSAgICAgICAgImtldmlubyIgOiAiS2V2aW4gT2xsaXZpZXIiLAotICAg
ICAgICAia21jY3VsbG91Z2giIDogIktldmluIE1jQ3VsbG91Z2giLAotICAgICAgICAia29pdmlz
dG8iIDogIkFudHRpIEtvaXZpc3RvIiwKLSAgICAgICAgImxldmluIiA6ICJEYXZpZCBMZXZpbiIs
Ci0gICAgICAgICJtaXR6IiA6ICJEYW4gQmVybnN0ZWluIiwKLSAgICAgICAgIm1qcyIgOiAiTWFj
aWVqIFN0YWNob3dpYWsiLAotICAgICAgICAibXJvd2UiIDogIk1hcmsgUm93ZSIsCi0gICAgICAg
ICJvbGl2ZXIiIDogIk9saXZlciBIdW50IiwKLSAgICAgICAgInNhbSIgOiAiU2FtIFdlaW5pZyIs
Ci0gICAgICAgICJzZmFsa2VuIiA6ICJTdGV2ZSBGYWxrZW5idXJnIiwKLSAgICAgICAgInNpbW9u
LmZyYXNlciIgOiAiU2ltb24gRnJhc2VyIiwKLSAgICAgICAgInN0YWlrb3MiIDogIkdlb3JnZSBT
dGFpa29zIiwKLSAgICAgICAgInRpbW90aHkiIDogIlRpbW90aHkgSGF0Y2hlciIsCi0gICAgICAg
ICJ0cmVhdCIgOiAiQWRhbSBUcmVhdCIsCi0gICAgICAgICJ2ZXN0Ym8iIDogdSdUb3IgQXJuZSBW
ZXN0Ylx4ZjgnLAotICAgICAgICAieGFuLmxvcGV6IiA6ICJYYW4gTG9wZXoiLAotICAgICAgICAi
emVja2UiIDogIkhvbGdlciBGcmV5dGhlciIsCi0gICAgICAgICJ6aW1tZXJtYW5uIiA6ICJOaWtv
bGFzIFppbW1lcm1hbm4iLAotICAgIH0KLQotICAgIGRlZiBmdWxsX25hbWVfZnJvbV9idWd6aWxs
YV9uYW1lKHNlbGYsIGJ1Z3ppbGxhX25hbWUpOgotICAgICAgICBpZiBub3QgYnVnemlsbGFfbmFt
ZSBpbiBzZWxmLnJldmlld2VyX3VzZXJuYW1lc190b19mdWxsX25hbWVzOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCJFUlJPUjogVW5rbm93biByZXZpZXdlciEgIiArIGJ1Z3ppbGxhX25h
bWUpCi0gICAgICAgIHJldHVybiBzZWxmLnJldmlld2VyX3VzZXJuYW1lc190b19mdWxsX25hbWVz
W2J1Z3ppbGxhX25hbWVdCi0KICAgICBkZWYgYnVnX3VybF9mb3JfYnVnX2lkKHNlbGYsIGJ1Z19p
ZCwgeG1sPUZhbHNlKToKICAgICAgICAgY29udGVudF90eXBlID0gIiZjdHlwZT14bWwiIGlmIHht
bCBlbHNlICIiCiAgICAgICAgIHJldHVybiAiJXNzaG93X2J1Zy5jZ2k/aWQ9JXMlcyIgJSAoc2Vs
Zi5idWdfc2VydmVyX3VybCwgYnVnX2lkLCBjb250ZW50X3R5cGUpCkBAIC0xODcsMzEgKzE0NCwz
MyBAQCBjbGFzcyBCdWd6aWxsYToKICAgICAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICImYWN0aW9u
PSIgKyBhY3Rpb24KICAgICAgICAgcmV0dXJuICIlc2F0dGFjaG1lbnQuY2dpP2lkPSVzJXMiICUg
KHNlbGYuYnVnX3NlcnZlcl91cmwsIGF0dGFjaG1lbnRfaWQsIGFjdGlvbl9wYXJhbSkKIAorICAg
IGRlZiBfcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KHNlbGYsIGVsZW1lbnQsIGJ1Z19pZCk6Cisg
ICAgICAgIGF0dGFjaG1lbnQgPSB7fQorICAgICAgICBhdHRhY2htZW50WydidWdfaWQnXSA9IGJ1
Z19pZAorICAgICAgICBhdHRhY2htZW50Wydpc19vYnNvbGV0ZSddID0gKGVsZW1lbnQuaGFzX2tl
eSgnaXNvYnNvbGV0ZScpIGFuZCBlbGVtZW50Wydpc29ic29sZXRlJ10gPT0gIjEiKQorICAgICAg
ICBhdHRhY2htZW50Wydpc19wYXRjaCddID0gKGVsZW1lbnQuaGFzX2tleSgnaXNwYXRjaCcpIGFu
ZCBlbGVtZW50Wydpc3BhdGNoJ10gPT0gIjEiKQorICAgICAgICBhdHRhY2htZW50WydpZCddID0g
c3RyKGVsZW1lbnQuZmluZCgnYXR0YWNoaWQnKS5zdHJpbmcpCisgICAgICAgIGF0dGFjaG1lbnRb
J3VybCddID0gc2VsZi5hdHRhY2htZW50X3VybF9mb3JfaWQoYXR0YWNobWVudFsnaWQnXSkKKyAg
ICAgICAgYXR0YWNobWVudFsnbmFtZSddID0gdW5pY29kZShlbGVtZW50LmZpbmQoJ2Rlc2MnKS5z
dHJpbmcpCisgICAgICAgIGF0dGFjaG1lbnRbJ3R5cGUnXSA9IHN0cihlbGVtZW50LmZpbmQoJ3R5
cGUnKS5zdHJpbmcpCisKKyAgICAgICAgcmV2aWV3X2ZsYWcgPSBlbGVtZW50LmZpbmQoJ2ZsYWcn
LCBhdHRycz17Im5hbWUiIDogInJldmlldyJ9KQorICAgICAgICBpZiByZXZpZXdfZmxhZyBhbmQg
cmV2aWV3X2ZsYWdbJ3N0YXR1cyddID09ICcrJzoKKyAgICAgICAgICAgIHJldmlld2VyX2VtYWls
ID0gcmV2aWV3X2ZsYWdbJ3NldHRlciddCisgICAgICAgICAgICByZXZpZXdlciA9IHNlbGYuY29t
bWl0dGVycy5yZXZpZXdlcl9ieV9idWd6aWxsYV9lbWFpbChyZXZpZXdlcl9lbWFpbCkKKyAgICAg
ICAgICAgIGF0dGFjaG1lbnRbJ3Jldmlld2VyJ10gPSByZXZpZXdlci5mdWxsX25hbWUKKyAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQKKwogICAgIGRlZiBmZXRjaF9hdHRhY2htZW50c19mcm9tX2J1
ZyhzZWxmLCBidWdfaWQpOgogICAgICAgICBidWdfdXJsID0gc2VsZi5idWdfdXJsX2Zvcl9idWdf
aWQoYnVnX2lkLCB4bWw9VHJ1ZSkKICAgICAgICAgbG9nKCJGZXRjaGluZzogIiArIGJ1Z191cmwp
CiAKICAgICAgICAgcGFnZSA9IHVybGxpYjIudXJsb3BlbihidWdfdXJsKQogICAgICAgICBzb3Vw
ID0gQmVhdXRpZnVsU291cChwYWdlKQotICAgIAorCiAgICAgICAgIGF0dGFjaG1lbnRzID0gW10K
ICAgICAgICAgZm9yIGVsZW1lbnQgaW4gc291cC5maW5kQWxsKCdhdHRhY2htZW50Jyk6Ci0gICAg
ICAgICAgICBhdHRhY2htZW50ID0ge30KLSAgICAgICAgICAgIGF0dGFjaG1lbnRbJ2J1Z19pZCdd
ID0gYnVnX2lkCi0gICAgICAgICAgICBhdHRhY2htZW50Wydpc19vYnNvbGV0ZSddID0gKGVsZW1l
bnQuaGFzX2tleSgnaXNvYnNvbGV0ZScpIGFuZCBlbGVtZW50Wydpc29ic29sZXRlJ10gPT0gIjEi
KQotICAgICAgICAgICAgYXR0YWNobWVudFsnaXNfcGF0Y2gnXSA9IChlbGVtZW50Lmhhc19rZXko
J2lzcGF0Y2gnKSBhbmQgZWxlbWVudFsnaXNwYXRjaCddID09ICIxIikKLSAgICAgICAgICAgIGF0
dGFjaG1lbnRbJ2lkJ10gPSBzdHIoZWxlbWVudC5maW5kKCdhdHRhY2hpZCcpLnN0cmluZykKLSAg
ICAgICAgICAgIGF0dGFjaG1lbnRbJ3VybCddID0gc2VsZi5hdHRhY2htZW50X3VybF9mb3JfaWQo
YXR0YWNobWVudFsnaWQnXSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnRbJ25hbWUnXSA9IHVuaWNv
ZGUoZWxlbWVudC5maW5kKCdkZXNjJykuc3RyaW5nKQotICAgICAgICAgICAgYXR0YWNobWVudFsn
dHlwZSddID0gc3RyKGVsZW1lbnQuZmluZCgndHlwZScpLnN0cmluZykKLQotICAgICAgICAgICAg
cmV2aWV3X2ZsYWcgPSBlbGVtZW50LmZpbmQoJ2ZsYWcnLCBhdHRycz17Im5hbWUiIDogInJldmll
dyJ9KQotICAgICAgICAgICAgaWYgcmV2aWV3X2ZsYWcgYW5kIHJldmlld19mbGFnWydzdGF0dXMn
XSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgcmV2aWV3ZXJfZW1haWwgPSByZXZpZXdfZmxhZ1sn
c2V0dGVyJ10KLSAgICAgICAgICAgICAgICAjIFdlIGNvdWxkIGxvb2t1cCB0aGUgZnVsbCBlbWFp
bCBhZGRyZXNzIGluc3RlYWQgb25jZSB3ZSB1cGRhdGUgZnVsbF9uYW1lX2Zyb21fYnVnemlsbGFf
bmFtZQotICAgICAgICAgICAgICAgIGJ1Z3ppbGxhX25hbWUgPSByZXZpZXdlcl9lbWFpbC5zcGxp
dCgnQCcpWzBdCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudFsncmV2aWV3ZXInXSA9IHNlbGYu
ZnVsbF9uYW1lX2Zyb21fYnVnemlsbGFfbmFtZShidWd6aWxsYV9uYW1lKQotCisgICAgICAgICAg
ICBhdHRhY2htZW50ID0gc2VsZi5fcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KGVsZW1lbnQsIGJ1
Z19pZCkKICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChhdHRhY2htZW50KQogICAgICAg
ICByZXR1cm4gYXR0YWNobWVudHMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU4ODhkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
YnVnemlsbGFfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw4MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIG1vZHVsZXMuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVy
TGlzdCwgUmV2aWV3ZXIKK2Zyb20gbW9kdWxlcy5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKKwor
ZnJvbSBtb2R1bGVzLkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKKworY2xhc3Mg
QnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIF9leGFtcGxlX2F0dGFjaG1l
bnQgPSAnJycKKyAgICAgICAgPGF0dGFjaG1lbnQKKyAgICAgICAgICBpc29ic29sZXRlPSIxIgor
ICAgICAgICAgIGlzcGF0Y2g9IjEiCisgICAgICAgICAgaXNwcml2YXRlPSIwIgorICAgICAgICA+
CisgICAgICAgIDxhdHRhY2hpZD4zMzcyMTwvYXR0YWNoaWQ+CisgICAgICAgIDxkYXRlPjIwMDkt
MDctMjkgMTA6MjMgUERUPC9kYXRlPgorICAgICAgICA8ZGVzYz5GaXhlZCB3aGl0ZXNwYWNlIGlz
c3VlPC9kZXNjPgorICAgICAgICA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICA8
dHlwZT50ZXh0L3BsYWluPC90eXBlPgorICAgICAgICA8c2l6ZT45NzE5PC9zaXplPgorICAgICAg
ICA8YXR0YWNoZXI+Y2hyaXN0aWFuLnBsZXNuZXIuaGFuc2VuQGdtYWlsLmNvbTwvYXR0YWNoZXI+
CisgICAgICAgICAgPGZsYWcgbmFtZT0icmV2aWV3IgorICAgICAgICAgICAgICAgIGlkPSIxNzkz
MSIKKyAgICAgICAgICAgICAgICBzdGF0dXM9IisiCisgICAgICAgICAgICAgICAgc2V0dGVyPSJv
bmVAdGVzdC5jb20iCisgICAgICAgICAgIC8+CisgICAgICAgIDwvYXR0YWNobWVudD4KKycnJwor
ICAgIF9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZyA9IHsKKyAgICAgICAgJ2J1
Z19pZCcgOiAiMTAwIiwKKyAgICAgICAgJ2lzX29ic29sZXRlJyA6IFRydWUsCisgICAgICAgICdp
c19wYXRjaCcgOiBUcnVlLAorICAgICAgICAnaWQnIDogIjMzNzIxIiwKKyAgICAgICAgJ3VybCcg
OiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MzM3MjEiLAorICAg
ICAgICAnbmFtZScgOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIsCisgICAgICAgICd0eXBlJyA6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgJ3Jldmlld2VyJyA6ICdUZXN0IE9uZScKKyAgICB9CisK
KyAgICBkZWYgdGVzdF9hdHRhY2htZW50X3BhcnNpbmcoc2VsZik6CisgICAgICAgIHJldmlld2Vy
ID0gUmV2aWV3ZXIoJ1Rlc3QgT25lJywgJ29uZUB0ZXN0LmNvbScpCisgICAgICAgIGNvbW1pdHRl
cl9saXN0ID0gQ29tbWl0dGVyTGlzdChjb21taXR0ZXJzPVtdLCByZXZpZXdlcnM9W3Jldmlld2Vy
XSkKKyAgICAgICAgYnVnemlsbGEgPSBCdWd6aWxsYShjb21taXR0ZXJzPWNvbW1pdHRlcl9saXN0
KQorCisgICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2V4YW1wbGVfYXR0YWNobWVu
dCkKKyAgICAgICAgYXR0YWNobWVudF9lbGVtZW50ID0gc291cC5maW5kKCJhdHRhY2htZW50IikK
KyAgICAgICAgYXR0YWNobWVudCA9IGJ1Z3ppbGxhLl9wYXJzZV9hdHRhY2htZW50X2VsZW1lbnQo
YXR0YWNobWVudF9lbGVtZW50LCBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFy
c2luZ1snYnVnX2lkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRhY2htZW50KQorCisg
ICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVf
YXR0YWNobWVudF9wYXJzaW5nLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhhdHRhY2htZW50W2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkZhaWx1cmUgZm9yIGtleTogJXMi
ICUga2V5KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWlu
KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21taXRlcnNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0ZXJzX3VuaXR0ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmNTYyZGUKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0ZXJzX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKK2Zy
b20gY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdCwgQ29tbWl0dGVyLCBSZXZpZXdlcgor
CitjbGFzcyBDb21taXR0ZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVz
dF9zaG9ydF9uYW1lKHNlbGYpOgorICAgICAgICBleHBlY3RhdGlvbnMgPSBbCisgICAgICAgICAg
ICBbJ2Zvb0BiYXIuY29tJywgJ2ZvbyddLAorICAgICAgICAgICAgWydmb29AJywgJ2ZvbyddLAor
ICAgICAgICAgICAgWydmb28nLCAnZm9vJ10sCisgICAgICAgIF0KKyAgICAgICAgZm9yIHRlc3Qg
aW4gZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb21taXR0ZXIu
ZW1haWxfdG9fc2hvcnRfbmFtZSh0ZXN0WzBdKSwgdGVzdFsxXSkKKworICAgIGRlZiB0ZXN0X2Nv
bW1pdHRlcl9sb29rdXAoc2VsZik6CisgICAgICAgIGNvbW1pdHRlciA9IENvbW1pdHRlcignVGVz
dCBPbmUnLCAnb25lQHRlc3QuY29tJykKKyAgICAgICAgcmV2aWV3ZXIgPSBSZXZpZXdlcignVGVz
dCBUd28nLCAndHdvQHRlc3QuY29tJykKKworICAgICAgICBjb21taXR0ZXJfbGlzdCA9IENvbW1p
dHRlckxpc3QoY29tbWl0dGVycz1bY29tbWl0dGVyXSwgcmV2aWV3ZXJzPVtyZXZpZXdlcl0pCisK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfYnVn
emlsbGFfZW1haWwoJ29uZUB0ZXN0LmNvbScpLCBjb21taXR0ZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY29tbWl0dGVyX2xpc3QucmV2aWV3ZXJfYnlfYnVnemlsbGFfZW1haWwoJ3R3b0B0
ZXN0LmNvbScpLCByZXZpZXdlcikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRp
b24sIGNvbW1pdHRlcl9saXN0LnJldmlld2VyX2J5X2J1Z3ppbGxhX2VtYWlsLCAnb25lQHRlc3Qu
Y29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uLCBjb21taXR0ZXJfbGlz
dC5jb21taXR0ZXJfYnlfYnVnemlsbGFfZW1haWwsICdiYXJAYmFyLmNvbScpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwgY29tbWl0dGVyX2xpc3QucmV2aWV3ZXJfYnlfYnVn
emlsbGFfZW1haWwsICdiYXJAYmFyLmNvbScpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6
CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21v
ZHVsZXMvY29tbWl0dGVycy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21taXR0
ZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYjNmYWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0dGVycy5weQpA
QCAtMCwwICsxLDEyOSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDksIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIAorIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjIAorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIyAKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorIworIyBXZWJLaXQncyBQeXRo
b24gbW9kdWxlIGZvciBjb21taXR0ZXIgYW5kIHJldmlld2VyIHZhbGlkYXRpb24KKworY2xhc3Mg
Q29tbWl0dGVyOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlbWFpbCk6CisgICAgICAg
IHNlbGYuZnVsbF9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmJ1Z3ppbGxhX2VtYWlsID0gZW1h
aWwKKyAgICAgICAgIyBGSVhNRTogc2hvcnRfbmFtZSBpcyBvbmx5IG5lZWRlZCB1bnRpbCBfcmV2
aWV3ZXJfbGlzdCBlbnRyaWVzIGFsbCBoYXZlIGVtYWlsIGFkZHJlc3Nlcy4KKyAgICAgICAgc2Vs
Zi5zaG9ydF9uYW1lID0gc2VsZi5lbWFpbF90b19zaG9ydF9uYW1lKGVtYWlsKQorICAgICAgICBz
ZWxmLmNhbl9yZXZpZXcgPSBGYWxzZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBlbWFp
bF90b19zaG9ydF9uYW1lKGVtYWlsKToKKyAgICAgICAgcmV0dXJuIGVtYWlsLnNwbGl0KCdAJylb
MF0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyIlcyIgPCVzPicg
JSAoc2VsZi5mdWxsX25hbWUsIHNlbGYuYnVnemlsbGFfZW1haWwpCisKK2NsYXNzIFJldmlld2Vy
KENvbW1pdHRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGVtYWlsKToKKyAgICAg
ICAgQ29tbWl0dGVyLl9faW5pdF9fKHNlbGYsIG5hbWUsIGVtYWlsKQorICAgICAgICBzZWxmLmNh
bl9yZXZpZXcgPSBUcnVlCisKKyMgQWxsIHJldmlld2VycyBhcmUgY29tbWl0dGVycywgc28gdGhp
cyBsaXN0IGlzIG9ubHkgb2YgY29tbWl0dGVycworIyB3aG8gYXJlIG5vdCByZXZpZXdlcnMuCitj
b21taXR0ZXJzX3VuYWJsZV90b19yZXZpZXcgPSBbCisgICAgQ29tbWl0dGVyKCJBbGJlcnQgSi4g
V29uZyIsICJhandvbmdAY2hyb21pdW0ub3JnIiksCisgICAgQ29tbWl0dGVyKCJCZW4gTXVyZG9j
aCIsICJiZW5tQGdvb2dsZS5jb20iKSwKKyAgICBDb21taXR0ZXIoIlNoaW5pY2hpcm8gSGFtYWpp
IiwgImhhbWFqaUBnb29nbGUuY29tIiksCisgICAgQ29tbWl0dGVyKCJab2x0YW4gSG9ydmF0aCIs
ICJoem9sdGFuQGluZi51LXN6ZWdlZC5odSIpLAorXQorCisjIEZJWE1FOiBTb21lIHJldmlld2Vy
cyBhcmUgbWlzc2luZyB0aGllciBmdWxsIGVtYWlscworIyBGb3Igbm93LCBsb29rdXBzIG9ubHkg
dXNlIHRoZSBwYXJ0IGJlZm9yZSB0aGUgQCBzaWduLgorcmV2aWV3ZXJzX2xpc3QgPSBbCisgICAg
UmV2aWV3ZXIoIkFkYW0gQmFydGgiLCAiYWJhcnRoQHdlYmtpdC5vcmciKSwKKyAgICBSZXZpZXdl
cigiQWRhbSBSb2JlbiIsICJhcm9iZW5AYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIoIkFkYW0g
VHJlYXQiLCAidHJlYXQiKSwKKyAgICBSZXZpZXdlcigiQWRlbGUgUGV0ZXJzb24iLCAiYWRlbGVA
YXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIoIkFsZXhleSBQcm9za3VyeWFrb3YiLCAiYXAiKSwK
KyAgICBSZXZpZXdlcigiQW5kZXJzIENhcmxzc29uIiwgImFuZGVyc2NhIiksCisgICAgUmV2aWV3
ZXIoIkFudHRpIEtvaXZpc3RvIiwgImtvaXZpc3RvIiksCisgICAgUmV2aWV3ZXIoIkFyaXlhIEhp
ZGF5YXQiLCAiYXJpeWEuaGlkYXlhdCIpLAorICAgIFJldmlld2VyKCJCcmFkeSBFaWRzb24iLCAi
YmVpZHNvbiIpLAorICAgIFJldmlld2VyKCJEYW4gQmVybnN0ZWluIiwgIm1pdHoiKSwKKyAgICBS
ZXZpZXdlcigiRGFyaW4gQWRsZXIiLCAiZGFyaW5AYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIo
IkRhcmluIEZpc2hlciIsICJmaXNoZCIpLAorICAgIFJldmlld2VyKCJEYXZpZCBIeWF0dCIsICJo
eWF0dEBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiRGF2aWQgS2lsemVyIiwgImRka2lsemVy
IiksCisgICAgUmV2aWV3ZXIoIkRhdmlkIExldmluIiwgImxldmluIiksCisgICAgUmV2aWV3ZXIo
IkRpbWl0cmkgR2xhemtvdiIsICJkZ2xhemtvdiIpLAorICAgIFJldmlld2VyKCJFcmljIFNlaWRl
bCIsICJlcmljQHdlYmtpdC5vcmciKSwKKyAgICBSZXZpZXdlcigiR2F2aW4gQmFycmFjbG91Z2gi
LCAiYmFycmFjbG91Z2giKSwKKyAgICBSZXZpZXdlcigiR2VvcmdlIFN0YWlrb3MiLCAic3RhaWtv
cyIpLAorICAgIFJldmlld2VyKCJHdXN0YXZvIE5vcm9uaGEiLCAiZ25zIiksCisgICAgUmV2aWV3
ZXIoIkhvbGdlciBGcmV5dGhlciIsICJ6ZWNrZSIpLAorICAgIFJldmlld2VyKCJKYW4gQWxvbnpv
IiwgImptYWxvbnpvIiksCisgICAgUmV2aWV3ZXIoIkp1c3RpbiBHYXJjaWEiLCAianVzdGluLmdh
cmNpYSIpLAorICAgIFJldmlld2VyKCJLZXZpbiBNY0N1bGxvdWdoIiwgImttY2N1bGxvdWdoIiks
CisgICAgUmV2aWV3ZXIoIktldmluIE9sbGl2aWVyIiwgImtldmlubyIpLAorICAgIFJldmlld2Vy
KCJNYWNpZWogU3RhY2hvd2lhayIsICJtanNAYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIoIk1h
cmsgUm93ZSIsICJtcm93ZSIpLAorICAgIFJldmlld2VyKCJOaWtvbGFzIFppbW1lcm1hbm4iLCAi
emltbWVybWFubiIpLAorICAgIFJldmlld2VyKCJPbGl2ZXIgSHVudCIsICJvbGl2ZXIiKSwKKyAg
ICBSZXZpZXdlcigiU2FtIFdlaW5pZyIsICJzYW1Ad2Via2l0Lm9yZyIpLAorICAgIFJldmlld2Vy
KCJTaW1vbiBGcmFzZXIiLCAic2ltb24uZnJhc2VyQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2Vy
KCJTaW1vbiBIYXVzbWFubiIsICJoYXVzbWFubiIpLAorICAgIFJldmlld2VyKCJTdGV2ZSBGYWxr
ZW5idXJnIiwgInNmYWxrZW5AYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIoIlRpbW90aHkgSGF0
Y2hlciIsICJ0aW1vdGh5QGhhdGNoZXIubmFtZSIpLAorICAgIFJldmlld2VyKHUnVG9yIEFybmUg
VmVzdGJceGY4JywgInZlc3RibyIpLAorICAgIFJldmlld2VyKCJYYW4gTG9wZXoiLCAieGFuLmxv
cGV6IiksCitdCisKKworY2xhc3MgQ29tbWl0dGVyTGlzdDoKKyAgICAjIENvbW1pdHRlcnMgYW5k
IHJldmlld2VycyBhcmUgcGFzc2VkIGluIHRvIGFsbG93IGVhc3kgdGVzdGluZworICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBjb21taXR0ZXJzPWNvbW1pdHRlcnNfdW5hYmxlX3RvX3JldmlldywgcmV2
aWV3ZXJzPXJldmlld2Vyc19saXN0KToKKyAgICAgICAgc2VsZi5fY29tbWl0dGVycyA9IGNvbW1p
dHRlcnMgKyByZXZpZXdlcnMKKyAgICAgICAgc2VsZi5fcmV2aWV3ZXJzID0gcmV2aWV3ZXJzCisg
ICAgICAgIHNlbGYuX2NvbW1pdHRlcnNfYnlfc2hvcnRfbmFtZSA9IHt9CisKKyAgICBkZWYgY29t
bWl0dGVycyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdHRlcnMKKworICAgIGRl
ZiBfc2hvcnRfbmFtZV90b19jb21taXR0ZXIoc2VsZik6CisgICAgICAgIGlmIG5vdCBsZW4oc2Vs
Zi5fY29tbWl0dGVyc19ieV9zaG9ydF9uYW1lKToKKyAgICAgICAgICAgIGZvciBjb21taXR0ZXIg
aW4gc2VsZi5fY29tbWl0dGVyczoKKyAgICAgICAgICAgICAgICBzZWxmLl9jb21taXR0ZXJzX2J5
X3Nob3J0X25hbWVbY29tbWl0dGVyLnNob3J0X25hbWVdID0gY29tbWl0dGVyCisgICAgICAgIHJl
dHVybiBzZWxmLl9jb21taXR0ZXJzX2J5X3Nob3J0X25hbWUKKworICAgIGRlZiBjb21taXR0ZXJf
YnlfYnVnemlsbGFfZW1haWwoc2VsZiwgYnVnemlsbGFfZW1haWwpOgorICAgICAgICBzaG9ydF9u
YW1lID0gQ29tbWl0dGVyLmVtYWlsX3RvX3Nob3J0X25hbWUoYnVnemlsbGFfZW1haWwpCisgICAg
ICAgIGNvbW1pdHRlciA9IHNlbGYuX3Nob3J0X25hbWVfdG9fY29tbWl0dGVyKCkuZ2V0KHNob3J0
X25hbWUpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXI6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oIlVua25vd24gY29tbWl0dGVyOiAlcyIgJSBidWd6aWxsYV9lbWFpbCkKKyAgICAgICAg
cmV0dXJuIGNvbW1pdHRlcgorCisgICAgZGVmIHJldmlld2VyX2J5X2J1Z3ppbGxhX2VtYWlsKHNl
bGYsIGJ1Z3ppbGxhX2VtYWlsKToKKyAgICAgICAgY29tbWl0dGVyID0gc2VsZi5jb21taXR0ZXJf
YnlfYnVnemlsbGFfZW1haWwoYnVnemlsbGFfZW1haWwpCisgICAgICAgIGlmIG5vdCBjb21taXR0
ZXIuY2FuX3JldmlldzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ29tbWl0dGVyICVz
IGRvZXMgbm90IGhhdmUgcmV2aWV3IHJpZ2h0cy4iICUgY29tbWl0dGVyKQorICAgICAgICByZXR1
cm4gY29tbWl0dGVy
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34044</attachid>
            <date>2009-08-04 01:08:17 -0700</date>
            <delta_ts>2009-08-04 01:09:33 -0700</delta_ts>
            <desc>Updated to remove short_name code</desc>
            <filename>bug-27972-20090804010814.patch</filename>
            <type>text/plain</type>
            <size>18957</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjMTlhNjUzLi4xOTYzMjhmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDgt
MDQgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNvbW1pdHRlciBsb2dpYyBzaG91bGQgYmUgc3Bs
aXQgb3V0IG9mIGJ1Z3ppbGxhLnB5IGludG8gaXRzIG93biBtb2R1bGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3OTcyCisKKyAgICAgICAgSSBhbHNv
IGFkZGVkIHVuaXQgdGVzdHMgZm9yIHRoZSBmdW5jdGlvbmFsaXR5IEkgYWRkZWQuCisKKyAgICAg
ICAgKiBTY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHk6CisgICAgICAgICogU2NyaXB0cy9tb2R1
bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY29tbWl0ZXJzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY29tbWl0dGVycy5weTogQWRkZWQuCisKIDIwMDktMDgtMDMgIFBldGVyIEthc3RpbmcgIDxw
a2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9idWd6aWxsYS5weQppbmRleCAzNzk3NzFlLi40MjI2
ZTA0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvYnVnemlsbGEucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2J1Z3ppbGxhLnB5CkBAIC0zOSw2ICsz
OSw3IEBAIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lICMgdXNlZCBpbiB0aW1lc3RhbXAo
KQogCiAjIEltcG9ydCBXZWJLaXQtc3BlY2lmaWMgbW9kdWxlcy4KIGZyb20gbW9kdWxlcy5sb2dn
aW5nIGltcG9ydCBlcnJvciwgbG9nCitmcm9tIG1vZHVsZXMuY29tbWl0dGVycyBpbXBvcnQgQ29t
bWl0dGVyTGlzdAogCiAjIFdlYktpdCBpbmNsdWRlcyBhIGJ1aWx0IGNvcHkgb2YgQmVhdXRpZnVs
U291cCBpbiBTY3JpcHRzL21vZHVsZXMKICMgc28gdGhpcyBpbXBvcnQgc2hvdWxkIGFsd2F5cyBz
dWNjZWVkLgpAQCAtMTE5LDY0ICsxMjAsMjAgQEAgZGVmIHRpbWVzdGFtcCgpOgogICAgIHJldHVy
biBkYXRldGltZS5ub3coKS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKIAogY2xhc3MgQnVnemls
bGE6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRyeXJ1bj1GYWxzZSk6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGRyeXJ1bj1GYWxzZSwgY29tbWl0dGVycz1Db21taXR0ZXJMaXN0KCkpOgogICAg
ICAgICBzZWxmLmRyeXJ1biA9IGRyeXJ1bgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBG
YWxzZQogCiAgICAgICAgIHNlbGYuYnJvd3NlciA9IEJyb3dzZXIoKQogICAgICAgICAjIElnbm9y
ZSBidWdzLndlYmtpdC5vcmcvcm9ib3RzLnR4dCB1bnRpbCB3ZSBmaXggaXQgdG8gYWxsb3cgdGhp
cyBzY3JpcHQKICAgICAgICAgc2VsZi5icm93c2VyLnNldF9oYW5kbGVfcm9ib3RzKEZhbHNlKQor
ICAgICAgICBzZWxmLmNvbW1pdHRlcnMgPSBjb21taXR0ZXJzCiAKICAgICAjIERlZmF1bHRzICh1
bnRpbCB3ZSBzdXBwb3J0IGJldHRlciBvcHRpb24gcGFyc2luZyk6CiAgICAgYnVnX3NlcnZlcl9o
b3N0ID0gImJ1Z3Mud2Via2l0Lm9yZyIKICAgICBidWdfc2VydmVyX3JlZ2V4ID0gImh0dHBzPzov
LyVzLyIgJSByZS5zdWIoJ1wuJywgJ1xcLicsIGJ1Z19zZXJ2ZXJfaG9zdCkKICAgICBidWdfc2Vy
dmVyX3VybCA9ICJodHRwczovLyVzLyIgJSBidWdfc2VydmVyX2hvc3QKIAotICAgICMgVGhpcyBj
b3VsZCBldmVudHVhbGx5IGJlIGEgdGV4dCBmaWxlCi0gICAgcmV2aWV3ZXJfdXNlcm5hbWVzX3Rv
X2Z1bGxfbmFtZXMgPSB7Ci0gICAgICAgICJhYmFydGgiIDogIkFkYW0gQmFydGgiLAotICAgICAg
ICAiYWRlbGUiIDogIkFkZWxlIFBldGVyc29uIiwKLSAgICAgICAgImFuZGVyc2NhIiA6ICJBbmRl
cnMgQ2FybHNzb24iLAotICAgICAgICAiYXJvYmVuIiA6ICJBZGFtIFJvYmVuIiwKLSAgICAgICAg
ImFwIiA6ICJBbGV4ZXkgUHJvc2t1cnlha292IiwKLSAgICAgICAgImFyaXlhLmhpZGF5YXQiIDog
IkFyaXlhIEhpZGF5YXQiLAotICAgICAgICAiYmFycmFjbG91Z2giIDogIkdhdmluIEJhcnJhY2xv
dWdoIiwKLSAgICAgICAgImJlaWRzb24iIDogIkJyYWR5IEVpZHNvbiIsCi0gICAgICAgICJkYXJp
biIgOiAiRGFyaW4gQWRsZXIiLAotICAgICAgICAiZGRraWx6ZXIiIDogIkRhdmlkIEtpbHplciIs
Ci0gICAgICAgICJkZ2xhemtvdiIgOiAiRGltaXRyaSBHbGF6a292IiwKLSAgICAgICAgImVyaWMi
IDogIkVyaWMgU2VpZGVsIiwKLSAgICAgICAgImZpc2hkIiA6ICJEYXJpbiBGaXNoZXIiLAotICAg
ICAgICAiZ25zIiA6ICJHdXN0YXZvIE5vcm9uaGEiLAotICAgICAgICAiaGF1c21hbm4iIDogIlNp
bW9uIEhhdXNtYW5uIiwKLSAgICAgICAgImh5YXR0IiA6ICJEYXZpZCBIeWF0dCIsCi0gICAgICAg
ICJqbWFsb256byIgOiAiSmFuIEFsb256byIsCi0gICAgICAgICJqdXN0aW4uZ2FyY2lhIiA6ICJK
dXN0aW4gR2FyY2lhIiwKLSAgICAgICAgImtldmlubyIgOiAiS2V2aW4gT2xsaXZpZXIiLAotICAg
ICAgICAia21jY3VsbG91Z2giIDogIktldmluIE1jQ3VsbG91Z2giLAotICAgICAgICAia29pdmlz
dG8iIDogIkFudHRpIEtvaXZpc3RvIiwKLSAgICAgICAgImxldmluIiA6ICJEYXZpZCBMZXZpbiIs
Ci0gICAgICAgICJtaXR6IiA6ICJEYW4gQmVybnN0ZWluIiwKLSAgICAgICAgIm1qcyIgOiAiTWFj
aWVqIFN0YWNob3dpYWsiLAotICAgICAgICAibXJvd2UiIDogIk1hcmsgUm93ZSIsCi0gICAgICAg
ICJvbGl2ZXIiIDogIk9saXZlciBIdW50IiwKLSAgICAgICAgInNhbSIgOiAiU2FtIFdlaW5pZyIs
Ci0gICAgICAgICJzZmFsa2VuIiA6ICJTdGV2ZSBGYWxrZW5idXJnIiwKLSAgICAgICAgInNpbW9u
LmZyYXNlciIgOiAiU2ltb24gRnJhc2VyIiwKLSAgICAgICAgInN0YWlrb3MiIDogIkdlb3JnZSBT
dGFpa29zIiwKLSAgICAgICAgInRpbW90aHkiIDogIlRpbW90aHkgSGF0Y2hlciIsCi0gICAgICAg
ICJ0cmVhdCIgOiAiQWRhbSBUcmVhdCIsCi0gICAgICAgICJ2ZXN0Ym8iIDogdSdUb3IgQXJuZSBW
ZXN0Ylx4ZjgnLAotICAgICAgICAieGFuLmxvcGV6IiA6ICJYYW4gTG9wZXoiLAotICAgICAgICAi
emVja2UiIDogIkhvbGdlciBGcmV5dGhlciIsCi0gICAgICAgICJ6aW1tZXJtYW5uIiA6ICJOaWtv
bGFzIFppbW1lcm1hbm4iLAotICAgIH0KLQotICAgIGRlZiBmdWxsX25hbWVfZnJvbV9idWd6aWxs
YV9uYW1lKHNlbGYsIGJ1Z3ppbGxhX25hbWUpOgotICAgICAgICBpZiBub3QgYnVnemlsbGFfbmFt
ZSBpbiBzZWxmLnJldmlld2VyX3VzZXJuYW1lc190b19mdWxsX25hbWVzOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCJFUlJPUjogVW5rbm93biByZXZpZXdlciEgIiArIGJ1Z3ppbGxhX25h
bWUpCi0gICAgICAgIHJldHVybiBzZWxmLnJldmlld2VyX3VzZXJuYW1lc190b19mdWxsX25hbWVz
W2J1Z3ppbGxhX25hbWVdCi0KICAgICBkZWYgYnVnX3VybF9mb3JfYnVnX2lkKHNlbGYsIGJ1Z19p
ZCwgeG1sPUZhbHNlKToKICAgICAgICAgY29udGVudF90eXBlID0gIiZjdHlwZT14bWwiIGlmIHht
bCBlbHNlICIiCiAgICAgICAgIHJldHVybiAiJXNzaG93X2J1Zy5jZ2k/aWQ9JXMlcyIgJSAoc2Vs
Zi5idWdfc2VydmVyX3VybCwgYnVnX2lkLCBjb250ZW50X3R5cGUpCkBAIC0xODcsMzEgKzE0NCwz
MyBAQCBjbGFzcyBCdWd6aWxsYToKICAgICAgICAgICAgIGFjdGlvbl9wYXJhbSA9ICImYWN0aW9u
PSIgKyBhY3Rpb24KICAgICAgICAgcmV0dXJuICIlc2F0dGFjaG1lbnQuY2dpP2lkPSVzJXMiICUg
KHNlbGYuYnVnX3NlcnZlcl91cmwsIGF0dGFjaG1lbnRfaWQsIGFjdGlvbl9wYXJhbSkKIAorICAg
IGRlZiBfcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KHNlbGYsIGVsZW1lbnQsIGJ1Z19pZCk6Cisg
ICAgICAgIGF0dGFjaG1lbnQgPSB7fQorICAgICAgICBhdHRhY2htZW50WydidWdfaWQnXSA9IGJ1
Z19pZAorICAgICAgICBhdHRhY2htZW50Wydpc19vYnNvbGV0ZSddID0gKGVsZW1lbnQuaGFzX2tl
eSgnaXNvYnNvbGV0ZScpIGFuZCBlbGVtZW50Wydpc29ic29sZXRlJ10gPT0gIjEiKQorICAgICAg
ICBhdHRhY2htZW50Wydpc19wYXRjaCddID0gKGVsZW1lbnQuaGFzX2tleSgnaXNwYXRjaCcpIGFu
ZCBlbGVtZW50Wydpc3BhdGNoJ10gPT0gIjEiKQorICAgICAgICBhdHRhY2htZW50WydpZCddID0g
c3RyKGVsZW1lbnQuZmluZCgnYXR0YWNoaWQnKS5zdHJpbmcpCisgICAgICAgIGF0dGFjaG1lbnRb
J3VybCddID0gc2VsZi5hdHRhY2htZW50X3VybF9mb3JfaWQoYXR0YWNobWVudFsnaWQnXSkKKyAg
ICAgICAgYXR0YWNobWVudFsnbmFtZSddID0gdW5pY29kZShlbGVtZW50LmZpbmQoJ2Rlc2MnKS5z
dHJpbmcpCisgICAgICAgIGF0dGFjaG1lbnRbJ3R5cGUnXSA9IHN0cihlbGVtZW50LmZpbmQoJ3R5
cGUnKS5zdHJpbmcpCisKKyAgICAgICAgcmV2aWV3X2ZsYWcgPSBlbGVtZW50LmZpbmQoJ2ZsYWcn
LCBhdHRycz17Im5hbWUiIDogInJldmlldyJ9KQorICAgICAgICBpZiByZXZpZXdfZmxhZyBhbmQg
cmV2aWV3X2ZsYWdbJ3N0YXR1cyddID09ICcrJzoKKyAgICAgICAgICAgIHJldmlld2VyX2VtYWls
ID0gcmV2aWV3X2ZsYWdbJ3NldHRlciddCisgICAgICAgICAgICByZXZpZXdlciA9IHNlbGYuY29t
bWl0dGVycy5yZXZpZXdlcl9ieV9idWd6aWxsYV9lbWFpbChyZXZpZXdlcl9lbWFpbCkKKyAgICAg
ICAgICAgIGF0dGFjaG1lbnRbJ3Jldmlld2VyJ10gPSByZXZpZXdlci5mdWxsX25hbWUKKyAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQKKwogICAgIGRlZiBmZXRjaF9hdHRhY2htZW50c19mcm9tX2J1
ZyhzZWxmLCBidWdfaWQpOgogICAgICAgICBidWdfdXJsID0gc2VsZi5idWdfdXJsX2Zvcl9idWdf
aWQoYnVnX2lkLCB4bWw9VHJ1ZSkKICAgICAgICAgbG9nKCJGZXRjaGluZzogIiArIGJ1Z191cmwp
CiAKICAgICAgICAgcGFnZSA9IHVybGxpYjIudXJsb3BlbihidWdfdXJsKQogICAgICAgICBzb3Vw
ID0gQmVhdXRpZnVsU291cChwYWdlKQotICAgIAorCiAgICAgICAgIGF0dGFjaG1lbnRzID0gW10K
ICAgICAgICAgZm9yIGVsZW1lbnQgaW4gc291cC5maW5kQWxsKCdhdHRhY2htZW50Jyk6Ci0gICAg
ICAgICAgICBhdHRhY2htZW50ID0ge30KLSAgICAgICAgICAgIGF0dGFjaG1lbnRbJ2J1Z19pZCdd
ID0gYnVnX2lkCi0gICAgICAgICAgICBhdHRhY2htZW50Wydpc19vYnNvbGV0ZSddID0gKGVsZW1l
bnQuaGFzX2tleSgnaXNvYnNvbGV0ZScpIGFuZCBlbGVtZW50Wydpc29ic29sZXRlJ10gPT0gIjEi
KQotICAgICAgICAgICAgYXR0YWNobWVudFsnaXNfcGF0Y2gnXSA9IChlbGVtZW50Lmhhc19rZXko
J2lzcGF0Y2gnKSBhbmQgZWxlbWVudFsnaXNwYXRjaCddID09ICIxIikKLSAgICAgICAgICAgIGF0
dGFjaG1lbnRbJ2lkJ10gPSBzdHIoZWxlbWVudC5maW5kKCdhdHRhY2hpZCcpLnN0cmluZykKLSAg
ICAgICAgICAgIGF0dGFjaG1lbnRbJ3VybCddID0gc2VsZi5hdHRhY2htZW50X3VybF9mb3JfaWQo
YXR0YWNobWVudFsnaWQnXSkKLSAgICAgICAgICAgIGF0dGFjaG1lbnRbJ25hbWUnXSA9IHVuaWNv
ZGUoZWxlbWVudC5maW5kKCdkZXNjJykuc3RyaW5nKQotICAgICAgICAgICAgYXR0YWNobWVudFsn
dHlwZSddID0gc3RyKGVsZW1lbnQuZmluZCgndHlwZScpLnN0cmluZykKLQotICAgICAgICAgICAg
cmV2aWV3X2ZsYWcgPSBlbGVtZW50LmZpbmQoJ2ZsYWcnLCBhdHRycz17Im5hbWUiIDogInJldmll
dyJ9KQotICAgICAgICAgICAgaWYgcmV2aWV3X2ZsYWcgYW5kIHJldmlld19mbGFnWydzdGF0dXMn
XSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgcmV2aWV3ZXJfZW1haWwgPSByZXZpZXdfZmxhZ1sn
c2V0dGVyJ10KLSAgICAgICAgICAgICAgICAjIFdlIGNvdWxkIGxvb2t1cCB0aGUgZnVsbCBlbWFp
bCBhZGRyZXNzIGluc3RlYWQgb25jZSB3ZSB1cGRhdGUgZnVsbF9uYW1lX2Zyb21fYnVnemlsbGFf
bmFtZQotICAgICAgICAgICAgICAgIGJ1Z3ppbGxhX25hbWUgPSByZXZpZXdlcl9lbWFpbC5zcGxp
dCgnQCcpWzBdCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudFsncmV2aWV3ZXInXSA9IHNlbGYu
ZnVsbF9uYW1lX2Zyb21fYnVnemlsbGFfbmFtZShidWd6aWxsYV9uYW1lKQotCisgICAgICAgICAg
ICBhdHRhY2htZW50ID0gc2VsZi5fcGFyc2VfYXR0YWNobWVudF9lbGVtZW50KGVsZW1lbnQsIGJ1
Z19pZCkKICAgICAgICAgICAgIGF0dGFjaG1lbnRzLmFwcGVuZChhdHRhY2htZW50KQogICAgICAg
ICByZXR1cm4gYXR0YWNobWVudHMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2J1Z3ppbGxhX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVz
L2J1Z3ppbGxhX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU4ODhkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
YnVnemlsbGFfdW5pdHRlc3QucHkKQEAgLTAsMCArMSw4MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCB1bml0dGVzdAorCitmcm9tIG1vZHVsZXMuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVy
TGlzdCwgUmV2aWV3ZXIKK2Zyb20gbW9kdWxlcy5idWd6aWxsYSBpbXBvcnQgQnVnemlsbGEKKwor
ZnJvbSBtb2R1bGVzLkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKKworY2xhc3Mg
QnVnemlsbGFUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIF9leGFtcGxlX2F0dGFjaG1l
bnQgPSAnJycKKyAgICAgICAgPGF0dGFjaG1lbnQKKyAgICAgICAgICBpc29ic29sZXRlPSIxIgor
ICAgICAgICAgIGlzcGF0Y2g9IjEiCisgICAgICAgICAgaXNwcml2YXRlPSIwIgorICAgICAgICA+
CisgICAgICAgIDxhdHRhY2hpZD4zMzcyMTwvYXR0YWNoaWQ+CisgICAgICAgIDxkYXRlPjIwMDkt
MDctMjkgMTA6MjMgUERUPC9kYXRlPgorICAgICAgICA8ZGVzYz5GaXhlZCB3aGl0ZXNwYWNlIGlz
c3VlPC9kZXNjPgorICAgICAgICA8ZmlsZW5hbWU+cGF0Y2g8L2ZpbGVuYW1lPgorICAgICAgICA8
dHlwZT50ZXh0L3BsYWluPC90eXBlPgorICAgICAgICA8c2l6ZT45NzE5PC9zaXplPgorICAgICAg
ICA8YXR0YWNoZXI+Y2hyaXN0aWFuLnBsZXNuZXIuaGFuc2VuQGdtYWlsLmNvbTwvYXR0YWNoZXI+
CisgICAgICAgICAgPGZsYWcgbmFtZT0icmV2aWV3IgorICAgICAgICAgICAgICAgIGlkPSIxNzkz
MSIKKyAgICAgICAgICAgICAgICBzdGF0dXM9IisiCisgICAgICAgICAgICAgICAgc2V0dGVyPSJv
bmVAdGVzdC5jb20iCisgICAgICAgICAgIC8+CisgICAgICAgIDwvYXR0YWNobWVudD4KKycnJwor
ICAgIF9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFyc2luZyA9IHsKKyAgICAgICAgJ2J1
Z19pZCcgOiAiMTAwIiwKKyAgICAgICAgJ2lzX29ic29sZXRlJyA6IFRydWUsCisgICAgICAgICdp
c19wYXRjaCcgOiBUcnVlLAorICAgICAgICAnaWQnIDogIjMzNzIxIiwKKyAgICAgICAgJ3VybCcg
OiAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYXR0YWNobWVudC5jZ2k/aWQ9MzM3MjEiLAorICAg
ICAgICAnbmFtZScgOiAiRml4ZWQgd2hpdGVzcGFjZSBpc3N1ZSIsCisgICAgICAgICd0eXBlJyA6
ICJ0ZXh0L3BsYWluIiwKKyAgICAgICAgJ3Jldmlld2VyJyA6ICdUZXN0IE9uZScKKyAgICB9CisK
KyAgICBkZWYgdGVzdF9hdHRhY2htZW50X3BhcnNpbmcoc2VsZik6CisgICAgICAgIHJldmlld2Vy
ID0gUmV2aWV3ZXIoJ1Rlc3QgT25lJywgJ29uZUB0ZXN0LmNvbScpCisgICAgICAgIGNvbW1pdHRl
cl9saXN0ID0gQ29tbWl0dGVyTGlzdChjb21taXR0ZXJzPVtdLCByZXZpZXdlcnM9W3Jldmlld2Vy
XSkKKyAgICAgICAgYnVnemlsbGEgPSBCdWd6aWxsYShjb21taXR0ZXJzPWNvbW1pdHRlcl9saXN0
KQorCisgICAgICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHNlbGYuX2V4YW1wbGVfYXR0YWNobWVu
dCkKKyAgICAgICAgYXR0YWNobWVudF9lbGVtZW50ID0gc291cC5maW5kKCJhdHRhY2htZW50IikK
KyAgICAgICAgYXR0YWNobWVudCA9IGJ1Z3ppbGxhLl9wYXJzZV9hdHRhY2htZW50X2VsZW1lbnQo
YXR0YWNobWVudF9lbGVtZW50LCBzZWxmLl9leHBlY3RlZF9leGFtcGxlX2F0dGFjaG1lbnRfcGFy
c2luZ1snYnVnX2lkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhdHRhY2htZW50KQorCisg
ICAgICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIHNlbGYuX2V4cGVjdGVkX2V4YW1wbGVf
YXR0YWNobWVudF9wYXJzaW5nLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhhdHRhY2htZW50W2tleV0sIGV4cGVjdGVkX3ZhbHVlLCAoIkZhaWx1cmUgZm9yIGtleTogJXMi
ICUga2V5KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWlu
KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jb21taXRlcnNfdW5p
dHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0ZXJzX3VuaXR0ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMjFjOGIKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0ZXJzX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgdW5pdHRlc3QKK2Zy
b20gY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdCwgQ29tbWl0dGVyLCBSZXZpZXdlcgor
CitjbGFzcyBDb21taXR0ZXJzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVz
dF9jb21taXR0ZXJfbG9va3VwKHNlbGYpOgorICAgICAgICBjb21taXR0ZXIgPSBDb21taXR0ZXIo
J1Rlc3QgT25lJywgJ29uZUB0ZXN0LmNvbScpCisgICAgICAgIHJldmlld2VyID0gUmV2aWV3ZXIo
J1Rlc3QgVHdvJywgJ3R3b0B0ZXN0LmNvbScpCisgICAgICAgIGNvbW1pdHRlcl9saXN0ID0gQ29t
bWl0dGVyTGlzdChjb21taXR0ZXJzPVtjb21taXR0ZXJdLCByZXZpZXdlcnM9W3Jldmlld2VyXSkK
KworICAgICAgICAjIFRlc3QgdmFsaWQgY29tbWl0dGVyIGFuZCByZXZpZXdlciBsb29rdXAKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXR0ZXJfbGlzdC5jb21taXR0ZXJfYnlfYnVnemls
bGFfZW1haWwoJ29uZUB0ZXN0LmNvbScpLCBjb21taXR0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY29tbWl0dGVyX2xpc3QucmV2aWV3ZXJfYnlfYnVnemlsbGFfZW1haWwoJ3R3b0B0ZXN0
LmNvbScpLCByZXZpZXdlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXR0ZXJfbGlz
dC5jb21taXR0ZXJfYnlfYnVnemlsbGFfZW1haWwoJ3R3b0B0ZXN0LmNvbScpLCByZXZpZXdlcikK
KworICAgICAgICAjIFRlc3QgdGhhdCBhIGtub3duIGNvbW1pdHRlciBpcyBub3QgcmV0dXJuZWQg
ZHVyaW5nIHJldmlld2VyIGxvb2t1cAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRp
b24sIGNvbW1pdHRlcl9saXN0LnJldmlld2VyX2J5X2J1Z3ppbGxhX2VtYWlsLCAnb25lQHRlc3Qu
Y29tJykKKworICAgICAgICAjIFRlc3QgdGhhdCB1bmtub3duIGVtYWlsIGFkZHJlc3MgZmFpbCBi
b3RoIGNvbW1pdHRlciBhbmQgcmV2aWV3ZXIgbG9va3VwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKEV4Y2VwdGlvbiwgY29tbWl0dGVyX2xpc3QuY29tbWl0dGVyX2J5X2J1Z3ppbGxhX2VtYWls
LCAnYmFyQGJhci5jb20nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sIGNv
bW1pdHRlcl9saXN0LnJldmlld2VyX2J5X2J1Z3ppbGxhX2VtYWlsLCAnYmFyQGJhci5jb20nKQor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvY29tbWl0dGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi41ODMyOTBjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy9tb2R1bGVzL2NvbW1pdHRlcnMucHkKQEAgLTAsMCArMSwxMjAgQEAKKyMgQ29weXJpZ2h0
IChjKSAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyAKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIyAKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMgCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyMKKyMgV2ViS2l0J3MgUHl0aG9uIG1vZHVsZSBmb3IgY29tbWl0dGVyIGFuZCBy
ZXZpZXdlciB2YWxpZGF0aW9uCisKK2NsYXNzIENvbW1pdHRlcjoKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgZW1haWwpOgorICAgICAgICBzZWxmLmZ1bGxfbmFtZSA9IG5hbWUKKyAgICAg
ICAgc2VsZi5idWd6aWxsYV9lbWFpbCA9IGVtYWlsCisgICAgICAgIHNlbGYuY2FuX3JldmlldyA9
IEZhbHNlCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICciJXMiIDwl
cz4nICUgKHNlbGYuZnVsbF9uYW1lLCBzZWxmLmJ1Z3ppbGxhX2VtYWlsKQorCitjbGFzcyBSZXZp
ZXdlcihDb21taXR0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBlbWFpbCk6Cisg
ICAgICAgIENvbW1pdHRlci5fX2luaXRfXyhzZWxmLCBuYW1lLCBlbWFpbCkKKyAgICAgICAgc2Vs
Zi5jYW5fcmV2aWV3ID0gVHJ1ZQorCisjIEFsbCByZXZpZXdlcnMgYXJlIGNvbW1pdHRlcnMsIHNv
IHRoaXMgbGlzdCBpcyBvbmx5IG9mIGNvbW1pdHRlcnMKKyMgd2hvIGFyZSBub3QgcmV2aWV3ZXJz
LgorY29tbWl0dGVyc191bmFibGVfdG9fcmV2aWV3ID0gWworICAgIENvbW1pdHRlcigiQWxiZXJ0
IEouIFdvbmciLCAiYWp3b25nQGNocm9taXVtLm9yZyIpLAorICAgIENvbW1pdHRlcigiQmVuIE11
cmRvY2giLCAiYmVubUBnb29nbGUuY29tIiksCisgICAgQ29tbWl0dGVyKCJTaGluaWNoaXJvIEhh
bWFqaSIsICJoYW1hamlAZ29vZ2xlLmNvbSIpLAorICAgIENvbW1pdHRlcigiWm9sdGFuIEhvcnZh
dGgiLCAiaHpvbHRhbkBpbmYudS1zemVnZWQuaHUiKSwKK10KKworcmV2aWV3ZXJzX2xpc3QgPSBb
CisgICAgUmV2aWV3ZXIoIkFkYW0gQmFydGgiLCAiYWJhcnRoQHdlYmtpdC5vcmciKSwKKyAgICBS
ZXZpZXdlcigiQWRhbSBSb2JlbiIsICJhcm9iZW5AYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIo
IkFkYW0gVHJlYXQiLCAidHJlYXRAa2RlLm9yZyIpLAorICAgIFJldmlld2VyKCJBZGVsZSBQZXRl
cnNvbiIsICJhZGVsZUBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiQWxleGV5IFByb3NrdXJ5
YWtvdiIsICJhcEB3ZWJraXQub3JnIiksCisgICAgUmV2aWV3ZXIoIkFuZGVycyBDYXJsc3NvbiIs
ICJhbmRlcnNjYUBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiQW50dGkgS29pdmlzdG8iLCAi
a29pdmlzdG9AaWtpLmZpIiksCisgICAgUmV2aWV3ZXIoIkFyaXlhIEhpZGF5YXQiLCAiYXJpeWEu
aGlkYXlhdEB0cm9sbHRlY2guY29tIiksCisgICAgUmV2aWV3ZXIoIkJyYWR5IEVpZHNvbiIsICJi
ZWlkc29uQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJEYW4gQmVybnN0ZWluIiwgIm1pdHpA
d2Via2l0Lm9yZyIpLAorICAgIFJldmlld2VyKCJEYXJpbiBBZGxlciIsICJkYXJpbkBhcHBsZS5j
b20iKSwKKyAgICBSZXZpZXdlcigiRGFyaW4gRmlzaGVyIiwgImZpc2hkQGNocm9taXVtLm9yZyIp
LAorICAgIFJldmlld2VyKCJEYXZpZCBIeWF0dCIsICJoeWF0dEBhcHBsZS5jb20iKSwKKyAgICBS
ZXZpZXdlcigiRGF2aWQgS2lsemVyIiwgImRka2lsemVyQHdlYmtpdC5vcmciKSwKKyAgICBSZXZp
ZXdlcigiRGF2aWQgTGV2aW4iLCAibGV2aW5AY2hyb21pdW0ub3JnIiksCisgICAgUmV2aWV3ZXIo
IkRpbWl0cmkgR2xhemtvdiIsICJkZ2xhemtvdkBjaHJvbWl1bS5vcmciKSwKKyAgICBSZXZpZXdl
cigiRXJpYyBTZWlkZWwiLCAiZXJpY0B3ZWJraXQub3JnIiksCisgICAgUmV2aWV3ZXIoIkdhdmlu
IEJhcnJhY2xvdWdoIiwgImJhcnJhY2xvdWdoQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJH
ZW9yZ2UgU3RhaWtvcyIsICJzdGFpa29zQGtkZS5vcmciKSwKKyAgICBSZXZpZXdlcigiR3VzdGF2
byBOb3JvbmhhIiwgImduc0Bnbm9tZS5vcmciKSwKKyAgICBSZXZpZXdlcigiSG9sZ2VyIEZyZXl0
aGVyIiwgInplY2tlQHNlbGZpc2gub3JnIiksCisgICAgUmV2aWV3ZXIoIkphbiBBbG9uem8iLCAi
am1hbG9uem9AZ21haWwuY29tIiksCisgICAgUmV2aWV3ZXIoIkp1c3RpbiBHYXJjaWEiLCAianVz
dGluLmdhcmNpYUBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiS2V2aW4gTWNDdWxsb3VnaCIs
ICJrbWNjdWxsb3VnaEBhcHBsZS5jb20iKSwKKyAgICBSZXZpZXdlcigiS2V2aW4gT2xsaXZpZXIi
LCAia2V2aW5vQHRoZW9sbGl2aWVycy5jb20iKSwKKyAgICBSZXZpZXdlcigiTWFjaWVqIFN0YWNo
b3dpYWsiLCAibWpzQGFwcGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJNYXJrIFJvd2UiLCAibXJv
d2VAYXBwbGUuY29tIiksCisgICAgUmV2aWV3ZXIoIk5pa29sYXMgWmltbWVybWFubiIsICJ6aW1t
ZXJtYW5uQGtkZS5vcmciKSwKKyAgICBSZXZpZXdlcigiT2xpdmVyIEh1bnQiLCAib2xpdmVyQGFw
cGxlLmNvbSIpLAorICAgIFJldmlld2VyKCJTYW0gV2VpbmlnIiwgInNhbUB3ZWJraXQub3JnIiks
CisgICAgUmV2aWV3ZXIoIlNpbW9uIEZyYXNlciIsICJzaW1vbi5mcmFzZXJAYXBwbGUuY29tIiks
CisgICAgUmV2aWV3ZXIoIlNpbW9uIEhhdXNtYW5uIiwgImhhdXNtYW5uQHdlYmtpdC5vcmciKSwK
KyAgICBSZXZpZXdlcigiU3RldmUgRmFsa2VuYnVyZyIsICJzZmFsa2VuQGFwcGxlLmNvbSIpLAor
ICAgIFJldmlld2VyKCJUaW1vdGh5IEhhdGNoZXIiLCAidGltb3RoeUBoYXRjaGVyLm5hbWUiKSwK
KyAgICBSZXZpZXdlcih1J1RvciBBcm5lIFZlc3RiXHhmOCcsICJ2ZXN0Ym9Ad2Via2l0Lm9yZyIp
LAorICAgIFJldmlld2VyKCJYYW4gTG9wZXoiLCAieGFuLmxvcGV6QGdtYWlsLmNvbSIpLAorXQor
CisKK2NsYXNzIENvbW1pdHRlckxpc3Q6CisgICAgIyBDb21taXR0ZXJzIGFuZCByZXZpZXdlcnMg
YXJlIHBhc3NlZCBpbiB0byBhbGxvdyBlYXN5IHRlc3RpbmcKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgY29tbWl0dGVycz1jb21taXR0ZXJzX3VuYWJsZV90b19yZXZpZXcsIHJldmlld2Vycz1yZXZp
ZXdlcnNfbGlzdCk6CisgICAgICAgIHNlbGYuX2NvbW1pdHRlcnMgPSBjb21taXR0ZXJzICsgcmV2
aWV3ZXJzCisgICAgICAgIHNlbGYuX3Jldmlld2VycyA9IHJldmlld2VycworICAgICAgICBzZWxm
Ll9jb21taXR0ZXJzX2J5X2VtYWlsID0ge30KKworICAgIGRlZiBjb21taXR0ZXJzKHNlbGYpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0dGVycworCisgICAgZGVmIF9lbWFpbF90b19jb21t
aXR0ZXJfbWFwKHNlbGYpOgorICAgICAgICBpZiBub3QgbGVuKHNlbGYuX2NvbW1pdHRlcnNfYnlf
ZW1haWwpOgorICAgICAgICAgICAgZm9yIGNvbW1pdHRlciBpbiBzZWxmLl9jb21taXR0ZXJzOgor
ICAgICAgICAgICAgICAgIHNlbGYuX2NvbW1pdHRlcnNfYnlfZW1haWxbY29tbWl0dGVyLmJ1Z3pp
bGxhX2VtYWlsXSA9IGNvbW1pdHRlcgorICAgICAgICByZXR1cm4gc2VsZi5fY29tbWl0dGVyc19i
eV9lbWFpbAorCisgICAgZGVmIGNvbW1pdHRlcl9ieV9idWd6aWxsYV9lbWFpbChzZWxmLCBidWd6
aWxsYV9lbWFpbCk6CisgICAgICAgIGNvbW1pdHRlciA9IHNlbGYuX2VtYWlsX3RvX2NvbW1pdHRl
cl9tYXAoKS5nZXQoYnVnemlsbGFfZW1haWwpCisgICAgICAgIGlmIG5vdCBjb21taXR0ZXI6Cisg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlVua25vd24gY29tbWl0dGVyOiAlcyIgJSBidWd6
aWxsYV9lbWFpbCkKKyAgICAgICAgcmV0dXJuIGNvbW1pdHRlcgorCisgICAgZGVmIHJldmlld2Vy
X2J5X2J1Z3ppbGxhX2VtYWlsKHNlbGYsIGJ1Z3ppbGxhX2VtYWlsKToKKyAgICAgICAgY29tbWl0
dGVyID0gc2VsZi5jb21taXR0ZXJfYnlfYnVnemlsbGFfZW1haWwoYnVnemlsbGFfZW1haWwpCisg
ICAgICAgIGlmIG5vdCBjb21taXR0ZXIuY2FuX3JldmlldzoKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbigiQ29tbWl0dGVyICVzIGRvZXMgbm90IGhhdmUgcmV2aWV3IHJpZ2h0cy4iICUgY29t
bWl0dGVyKQorICAgICAgICByZXR1cm4gY29tbWl0dGVy
</data>
<flag name="review"
          id="18212"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>