Content-Type: multipart/related; start=; boundary=----------cFmFh9kCdFXB8HV7rcn0VF Content-Location: http://en.wikipedia.org/wiki/Sfumato Subject: =?utf-8?Q?Sfumato=20-=20Wikipedia,=20the=20free=20encyclopedia?= MIME-Version: 1.0 ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=Sfumato.htm Content-Type: text/html; charset=UTF-8; name=Sfumato.htm Content-ID: Content-Location: http://en.wikipedia.org/wiki/Sfumato Content-Transfer-Encoding: Quoted-Printable Sfumato - Wikipedia, the free encyclopedia =

Sfumato

From Wikipedia, the free encyclopedia

3D""
3D=
Detail of the face of Mo= na Lisa showing the use of sfumato, particularly in the shading arou= nd the eyes.

Sfumato is one of the four canonical painting modes of the Renaissance (the ot= her three being Cangiant= e, Chiaroscuro, and Unione).[1] It refers to = a mode of painting in which there are no extreme darks or lights, as the= brightness values are grouped more or less tightly together around middle gray. It corr= esponds to the concept of 'low-contrast' in photography. The Italian word sfumato= (pp. of sfumare, 'to smoke') captures the idea pre= cisely. The finished product appears as though a veil of smoke had drift= ed between the subject of the painting and the viewer and had added some= brightness to the pure darks and had blocked some of the pure brights o= f the subject.

It is not a difficult technique in practice. It requires competence i= n brushwork and judgement of value (brightness) but does not necessarily= require a high degree of skill. It consists in painting with a transluc= ent dark such as asphaltum and then, while wet, painting back into this = dark with an opaque light (e.g., some colour based on lead white or titanium white). Some = of the colour of the dark will now darken the opaque light and, simultan= eously, the darks will be lightened. This operation can be repeated if n= ecessary and, by so doing, very subtle blending effects may be achieved.= It is not ipso facto<= /a> a technique using translucent layers as is sometimes supposed; one w= ill wish to draw a distinction between this technique and the straight-f= orward translucent painting of Titian. However the translucency of the darks, repeatedly applied a= nd blended into the lights, does lend an enamelled character to the resu= lt which, in the hands of a competent practitioner, can be charming and = can yield extremely subtle results.

The most prominent practitioner of sfumato was Leonardo da Vinci a= nd his famous painting of the Mona Lisa exhibits all the advantages of the technique. The hi= storical value of this painting consists precisely in the subtle but acc= urate way in which emotions are expressed. This expression is due in no = small part to the gentle shading that sfumato promotes. Leonardo = da Vinci described sfumato as "without lines or borders, in the m= anner of smoke or beyond the focus plane."[2]


[edi= t] See also

[edit] Notes

  1. ^ Hall, Marcia (1994). Color and Meaning: Practice and = Theory in Renaissance Painting. Cambridge University Press. ISBN 978-0521457330. 
  2. ^ Earls, Irene (1987). Renaissance Art: A Topical Dicti= onary. Greenwood Press. pp. 263. ISBN=  0313246580. 


=
Personal tools
------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://en.wikipedia.org/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAA AAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9 /AAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiI gzuIV4iIiIhndo53KIiIiB/WvXoYiIiIfEZfWBSIiIEGi/foqoiIgzuL84i9iIjp GIoMiEHoiMkos3FojmiLlUipYliEWIF+iDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=shared.css Content-Type: text/css; charset=UTF-8; name=shared.css Content-Location: http://bits.wikimedia.org/skins-1.5/common/shared.css?270z52 Content-Transfer-Encoding: 8bit /** * CSS in this file is used by *all* skins (that have any CSS at all). Be * careful what you put in here, since what looks good in one skin may not in * another, but don't ignore the poor non-Monobook users either. */ /* Colored watchlist and recent changes numbers */ .mw-plusminus-pos { color: #006400; } /* dark green */ .mw-plusminus-neg { color: #8b0000; } /* dark red */ .mw-plusminus-null { color: #aaa; } /* gray */ /* Comment and username portions of RC entries */ span.comment { font-style: italic; } span.changedby { font-size: 95%; } /* Math */ .texvc { direction: ltr; unicode-bidi: embed; } img.tex { vertical-align: middle; } span.texhtml { font-family: serif; } /* add a bit of margin space between the preview and the toolbar */ /* this replaces the ugly


we used to insert into the page source */ #wikiPreview.ontop { margin-bottom: 1em; } /* Stop floats from intruding into edit area in previews */ #editform, #toolbar, #wpTextbox1 { clear: both; } div#mw-js-message { margin: 1em 5%; padding: 0.5em 2.5%; border: solid 1px #ddd; background-color: #fcfcfc; } /* Edit section links */ .editsection { float: right; margin-left: 5px; } /** * File histories */ h2#filehistory { clear: both; } table.filehistory th, table.filehistory td { vertical-align:top; } table.filehistory th { text-align: left; } table.filehistory td.mw-imagepage-filesize, table.filehistory th.mw-imagepage-filesize { white-space:nowrap; } table.filehistory td.filehistory-selected { font-weight: bold; } /* * rev_deleted stuff */ li span.deleted, span.history-deleted { text-decoration: line-through; color: #888; font-style: italic; } /** * Patrol stuff */ .not-patrolled { background-color: #ffa; } .unpatrolled { font-weight: bold; color: red; } div.patrollink { font-size: 75%; text-align: right; } /** * Forms */ body.ltr td.mw-label { text-align: right; } body.ltr td.mw-input { text-align: left; } body.ltr td.mw-submit { text-align: left; } body.rtl td.mw-label { text-align: left; } body.rtl td.mw-input { text-align: right; } body.rtl td.mw-submit { text-align: right; } td.mw-label { vertical-align: top; } .prefsection td.mw-label { width: 20%; } .prefsection table { width: 100%; } td.mw-submit { white-space: nowrap; } table.mw-htmlform-nolabel td.mw-label { width: 0 !important; } /** * Image captions */ body.rtl .thumbcaption { text-align:right; } body.rtl .magnify { float:left; } body.ltr .thumbcaption { text-align:left; } body.ltr .magnify { float:right; } /** * Hidden categories */ .mw-hidden-cats-hidden { display: none; } .catlinks-allhidden { display: none; } /* Convenience links to edit block, delete and protect reasons */ p.mw-ipb-conveniencelinks, p.mw-protect-editreasons, p.mw-filedelete-editreasons, p.mw-delete-editreasons, p.mw-revdel-editreasons { font-size: 90%; float: right; } /* Search results */ .searchresults { } .searchresults p { margin-left: 0.4em; margin-top: 1em; margin-bottom: 1.2em; } div.searchresult { font-size: 95%; width:38em; } .mw-search-results { margin-left: 0.4em; } .mw-search-results li { padding-bottom: 1em; list-style:none; list-style-image:none; } .mw-search-results li a { font-size: 108%; } .mw-search-result-data { color: green; font-size: 97%; } .mw-search-formheader { background-color: #f3f3f3; margin-top: 1em; border: 1px solid silver; } .mw-search-formheader div.search-types { float:left; padding-left: 0.25em; } .rtl .mw-search-formheader div.search-types { float: right; } .mw-search-formheader div.search-types ul { margin: 0 !important; padding: 0 !important; list-style: none !important; } .mw-search-formheader div.search-types ul li { float: left; margin: 0; padding: 0; } .mw-search-formheader div.search-types ul li a { display: block; padding: 0.5em; } .mw-search-formheader div.search-types ul li.current a { color: #333333; cursor: default; } .mw-search-formheader div.search-types ul li.current a:hover { text-decoration: none; } .mw-search-formheader div.results-info { float: right; padding: 0.5em; padding-right: 0.75em; } .mw-search-formheader div.results-info ul { margin: 0 !important; padding: 0 !important; list-style: none !important; } .mw-search-formheader div.results-info ul li { float: right; margin: 0; padding: 0; } fieldset#mw-searchoptions { margin: 0; padding-left: 0.75em !important; padding-right: 0.75em !important; padding-bottom: 0.5em !important; padding-top: 0.5em !important; border: none; background-color: #f9f9f9; border: 1px solid silver !important; border-top-width: 0 !important; } fieldset#mw-searchoptions legend { display: none; } fieldset#mw-searchoptions h4 { padding: 0; margin: 0; float: left; } .rtl fieldset#mw-searchoptions h4 { float: right; } fieldset#mw-searchoptions div#mw-search-togglebox { float: right; } .rtl fieldset#mw-searchoptions div#mw-search-togglebox { float: left; } fieldset#mw-searchoptions div#mw-search-togglebox label { margin-right: 0.25em; } fieldset#mw-searchoptions div#mw-search-togglebox input { margin-left: 0.25em; } fieldset#mw-searchoptions table { float: left; margin-right: 3em; } fieldset#mw-searchoptions table td { padding-right: 1em; } .rtl fieldset#mw-searchoptions table td { padding-left: 1em; padding-right: 0; } body.rtl fieldset#mw-searchoptions table { margin-right: 0; margin-left: 3em; float: right; } fieldset#mw-searchoptions div.divider { clear: both; border-bottom: 1px solid #DDDDDD; padding-top: 0.5em; margin-bottom: 0.5em; } td#mw-search-menu { padding-left:6em; font-size:85%; } div#mw-search-interwiki { float: right; width: 18em; border-style: solid; border-color: #AAAAAA; border-width: 1px; margin-top: 2ex; } .rtl div#mw-search-interwiki { float: left; } div#mw-search-interwiki li { font-size: 95%; } .mw-search-interwiki-more { float: right; font-size: 90%; } .rtl .mw-search-interwiki-more { float: left; } div#mw-search-interwiki-caption { text-align: center; font-weight: bold; font-size: 95%; } .mw-search-interwiki-project { font-size: 97%; text-align: left; padding-left: 0.2em; padding-right: 0.15em; padding-bottom: 0.2em; padding-top: 0.15em; background-color:#ececec; border-top:1px solid #BBBBBB; } .rtl .mw-search-interwiki-project { text-align: right; } span.searchalttitle { font-size: 95%; } div.searchdidyoumean { font-size: 127%; margin-top: 0.8em; /* Note that this color won't affect the link, as desired. */ color: #c00; } div.searchdidyoumean em { font-weight: bold; } .searchmatch { font-weight: bold; } table#mw-search-top-table { background-color: transparent; } /* * Advanced PowerSearch box */ td#mw-search-togglebox { text-align: right; } table#mw-search-powertable { width:100%; } form#powersearch { clear: both; } /* * UserRights stuff */ .mw-userrights-disabled { color: #888; } table.mw-userrights-groups * td,table.mw-userrights-groups * th { padding-right: 1.5em; } /* * OpenSearch ajax suggestions */ .os-suggest { overflow: auto; overflow-x: hidden; position: absolute; top: 0px; left: 0px; width: 0px; background-color: white; background-color: Window; border-style: solid; border-color: #AAAAAA; border-width: 1px; z-index:99; font-size:95%; } table.os-suggest-results { font-size: 95%; cursor: pointer; border: 0; border-collapse: collapse; width: 100%; } .os-suggest-result, .os-suggest-result-hl { white-space: nowrap; background-color: white; background-color: Window; color: black; color: WindowText; padding: 2px; } .os-suggest-result-hl, .os-suggest-result-hl-webkit { background-color: #4C59A6; color: white; } .os-suggest-result-hl { /* System colors are misimplemented in Safari 3.0 and earlier, making highlighted text illegible... */ background-color: Highlight; color: HighlightText; } .os-suggest-toggle { position: relative; left: 1ex; font-size: 65%; } .os-suggest-toggle-def { position: absolute; top: 0px; left: 0px; font-size: 65%; visibility: hidden; } /* Page history styling */ /* the auto-generated edit comments */ .autocomment { color: gray; } #pagehistory .history-user { margin-left: 0.4em; margin-right: 0.2em; } #pagehistory span.minor { font-weight: bold; } #pagehistory li { border: 1px solid white; } #pagehistory li.selected { background-color: #f9f9f9; border: 1px dashed #aaa; } /** Generic minor/bot/newpage styling */ .newpage, .minor, .bot { font-weight: bold; } /* Special:Contributions styling */ .mw-uctop { font-weight: bold; } /* Special:ListGroupRights styling */ table.mw-listgrouprights-table tr { vertical-align: top; } .listgrouprights-revoked { text-decoration: line-through; } /* Special:Statistics styling */ td.mw-statistics-numbers { text-align: right; } /* Special:SpecialPages styling */ h4.mw-specialpagesgroup { background-color: #dcdcdc; padding: 2px; margin: .3em 0em 0em 0em; } .mw-specialpagerestricted { font-weight: bold; } #shared-image-dup, #shared-image-conflict { font-style: italic; } /* Special:EmailUser styling */ table.mw-emailuser-table { width: 98%; } td#mw-emailuser-sender, td#mw-emailuser-recipient { font-weight: bold; } /* Special:Allpages styling */ table.allpageslist { background-color: transparent; } table.mw-allpages-table-form, table.mw-allpages-table-chunk { background-color: transparent; width: 100%; } td.mw-allpages-alphaindexline { text-align: right; } td.mw-allpages-nav, p.mw-allpages-nav { text-align: right; font-size: smaller; margin-bottom: 1em; } table.mw-allpages-table-form tr { vertical-align: top; } /* Special:Prefixindex styling */ table#mw-prefixindex-list-table, table#mw-prefixindex-nav-table { width: 98%; background-color: transparent; } td#mw-prefixindex-nav-form { font-size: smaller; margin-bottom: 1em; text-align: right; vertical-align: top; } /* * Recreating deleted page warning * Reupload file warning * Page protection warning * incl. log entries for these warnings */ div.mw-warning-with-logexcerpt { padding: 3px; margin-bottom: 3px; border: 2px solid #2F6FAB; clear: both; } div.mw-warning-with-logexcerpt ul li { font-size: 90%; } /* (show/hide) revision deletion links */ span.mw-revdelundel-link, strong.mw-revdelundel-link { font-size: 90%; } span.mw-revdelundel-hidden, input.mw-revdelundel-hidden { visibility: hidden; } td.mw-revdel-checkbox, th.mw-revdel-checkbox { padding-right: 10px; text-align: center; } /* feed links */ a.feedlink { background: url("images/feed-icon.png") center left no-repeat; padding-left: 16px; } /* Plainlinks - this can be used to switch * off special external link styling */ .plainlinks a { background: none !important; padding: 0 !important; } /* wikitable class for skinning normal tables */ table.wikitable { margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; } .wikitable th, .wikitable td { border: 1px #aaa solid; padding: 0.2em; } .wikitable th { background: #f2f2f2; text-align: center; } .wikitable caption { font-weight: bold; } /* hide initially collapsed collapsable tables */ table.collapsed tr.collapsable { display: none; } /* success and error messages */ .success { color: green; font-size: larger; } .error { color: red; font-size: larger; } .errorbox, .successbox { font-size: larger; border: 2px solid; padding: .5em 1em; float: left; margin-bottom: 2em; color: #000; } .errorbox { border-color: red; background-color: #fff2f2; } .successbox { border-color: green; background-color: #dfd; } .errorbox h2, .successbox h2 { font-size: 1em; font-weight: bold; display: inline; margin: 0 .5em 0 0; border: none; } .visualClear { clear: both; } #mw_trackbacks { border: solid 1px #bbbbff; background-color: #eeeeff; padding: 0.2em; } /* Table pager (e.g. Special:Imagelist) - remove underlines from the navigation link - collapse borders - set the borders to outsets (similar to Special:Allmessages) - remove line wrapping for all td and th, set background color - restore line wrapping for the last two table cells (description and size) */ .TablePager { min-width: 80%; } .TablePager_nav a { text-decoration: none; } .TablePager { border-collapse: collapse; } .TablePager, .TablePager td, .TablePager th { border: 1px solid #aaaaaa; padding: 0 0.15em 0 0.15em; } .TablePager th { background-color: #eeeeff } .TablePager td { background-color: #ffffff } .TablePager tr:hover td { background-color: #eeeeff } .imagelist td, .imagelist th { white-space: nowrap } .imagelist .TablePager_col_links { background-color: #eeeeff } .imagelist .TablePager_col_img_description { white-space: normal } .imagelist th.TablePager_sort { background-color: #ccccff } /* Allmessages table */ #mw-allmessagestable .allmessages-customised td.am_default { background-color: #fcffc4; } #mw-allmessagestable tr.allmessages-customised:hover td.am_default { background-color: #faff90; } #mw-allmessagestable td.am_actual { background-color: #e2ffe2; } #mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual { background-color: #b1ffb1; } /* filetoc */ ul#filetoc { text-align: center; border: 1px solid #aaaaaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; margin-bottom: 0.5em; margin-left: 0; margin-right: 0; } #filetoc li { display: inline; list-style-type: none; padding-right: 2em; } /* Classes for EXIF data display */ table.mw_metadata { font-size: 0.8em; margin-left: 0.5em; margin-bottom: 0.5em; width: 300px; } table.mw_metadata caption { font-weight: bold; } table.mw_metadata th { font-weight: normal; } table.mw_metadata td { padding: 0.1em; } table.mw_metadata { border: none; border-collapse: collapse; } table.mw_metadata td, table.mw_metadata th { text-align: center; border: 1px solid #aaaaaa; padding-left: 0.1em; padding-right: 0.1em; } table.mw_metadata th { background-color: #f9f9f9; } table.mw_metadata td { background-color: #fcfcfc; } /* Galleries */ table.gallery { border: 1px solid #ccc; margin: 2px; padding: 2px; background-color: white; } table.gallery tr { vertical-align: top; } table.gallery td { vertical-align: top; background-color: #f9f9f9; border: solid 2px white; } table.gallery caption { font-weight: bold; } div.gallerybox { margin: 2px; } div.gallerybox div.thumb { text-align: center; border: 1px solid #ccc; margin: 2px; } div.gallerytext { overflow: hidden; font-size: 94%; padding: 2px 4px; } table.mw-enhanced-rc { background: none; border:0; border-spacing:0; } td.mw-enhanced-rc { white-space:nowrap; padding:0; vertical-align:top; font-family:monospace } #mw-addcategory-prompt { display: inline; margin-left: 1em; } #mw-addcategory-prompt input { margin-left: 0.5em; margin-right: 0.5em; } .mw-remove-category { padding: 8px; background-image: url(images/remove.png); background-position: center center; background-repeat: no-repeat; } .mw-ajax-addcategory { padding-left: 20px; background-image: url(images/add.png); background-position: left center; background-repeat: no-repeat; } .mw-ajax-loader { background-image: url(images/ajax-loader.gif); background-position: center center; background-repeat: no-repeat; padding: 16px; position: relative; top: -16px; } .mw-small-spinner { padding: 10px !important; margin-right: 0.6em; background-image: url(images/spinner.gif); background-position: center center; background-repeat: no-repeat; } /* Sort arrows added by SortableTables */ a.sortheader { margin: 0 0.3em; } ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=commonPrint.css Content-Type: text/css; charset=UTF-8; name=commonPrint.css Content-Location: http://bits.wikimedia.org/skins-1.5/common/commonPrint.css?270z52 Content-Transfer-Encoding: 8bit /* ** MediaWiki Print style sheet for CSS2-capable browsers. ** Copyright Gabriel Wicke, http://www.aulinx.de/ ** ** Derived from the plone (http://plone.org/) styles ** Copyright Alexander Limi */ /* Thanks to A List Apart (http://alistapart.com/) for useful extras */ a.stub, a.new{ color:#ba0000; text-decoration:none; } #toc { /*border:1px solid #2f6fab;*/ border:1px solid #aaaaaa; background-color:#f9f9f9; padding:5px; } .tocindent { margin-left: 2em; } .tocline { margin-bottom: 0px; } /* images */ div.floatright { float: right; clear: right; margin: 0; position:relative; border: 0.5em solid White; border-width: 0.5em 0 0.8em 1.4em; } div.floatright p { font-style: italic;} div.floatleft { float: left; margin: 0.3em 0.5em 0.5em 0; position:relative; border: 0.5em solid White; border-width: 0.5em 1.4em 0.8em 0; } div.floatleft p { font-style: italic; } /* thumbnails */ div.thumb { margin-bottom: 0.5em; border-style: solid; border-color: White; width: auto; overflow: hidden; } div.thumbinner { border:1px solid #cccccc; padding: 3px !important; background-color:#f9f9f9; font-size: 94%; text-align: center; } html .thumbimage { border:1px solid #cccccc; } html .thumbcaption { border: none; padding: 0.3em 0 0.1em 0; } div.magnify { display: none; } div.tright { float: right; clear: right; border-width: 0.5em 0 0.8em 1.4em; } div.tleft { float: left; margin-right:0.5em; border-width: 0.5em 1.4em 0.8em 0; } img.thumbborder { border: 1px solid #dddddd; } /* table standards */ table.rimage { float:right; width:1pt; position:relative; margin-left:1em; margin-bottom:1em; text-align:center; } body { background: White; /*font-size: 11pt !important;*/ color: Black; margin: 0; padding: 0; } .noprint, div#jump-to-nav, div.top, div#column-one, #colophon, .editsection, .toctoggle, .tochidden, div#f-poweredbyico, div#f-copyrightico, li#viewcount, li#about, li#disclaimer, li#privacy, #mw-hidden-catlinks { /* Hides all the elements irrelevant for printing */ display: none; } ul { list-style-type: square; } #content { background: none; border: none ! important; padding: 0 ! important; margin: 0 ! important; } #footer { background : white; color : black; border-top: 1px solid black; } h1, h2, h3, h4, h5, h6 { font-weight: bold; } p, .documentDescription { margin: 1em 0 ! important; line-height: 1.2em; } .tocindent p { margin: 0 0 0 0 ! important; } pre { border: 1pt dashed black; white-space: pre; font-size: 8pt; overflow: auto; padding: 1em 0; background : white; color : black; } table.listing, table.listing td { border: 1pt solid black; border-collapse: collapse; } a { color: Black !important; background: none !important; padding: 0 !important; } a:link, a:visited { color: #520; background: transparent; text-decoration: underline; } #content a.external.text:after, #content a.external.autonumber:after { /* Expand URLs for printing */ content: " (" attr(href) ") "; } #globalWrapper { width: 100% !important; min-width: 0 !important; } #content { background : white; color : black; } #column-content { margin: 0 !important; } #column-content #content { padding: 1em; margin: 0 !important; } /* MSIE/Win doesn't understand 'inherit' */ a, a.external, a.new, a.stub { color: black ! important; text-decoration: none ! important; } /* Continue ... */ a, a.external, a.new, a.stub { color: inherit ! important; text-decoration: inherit ! important; } img { border: none; } img.tex { vertical-align: middle; } span.texhtml { font-family: serif; } #siteNotice { display: none; } div.gallerybox { border: 1px solid #cccccc; background-color:#f9f9f9; width: 150px; } div.gallerytext { overflow: visible; } /* ** Diff rendering */ table.diff { background:white; } td.diff-otitle { background:#ffffff; } td.diff-ntitle { background:#ffffff; } td.diff-addedline { background:#ccffcc; font-size: smaller; border: solid 2px black; } td.diff-deletedline { background:#ffffaa; font-size: smaller; border: dotted 2px black; } td.diff-context { background:#eeeeee; font-size: smaller; } .diffchange { color: silver; font-weight: bold; text-decoration: underline; } ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://bits.wikimedia.org/skins-1.5/monobook/headbg.jpg Content-Transfer-Encoding: Base64 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 pqmqalFqtJUGrOhqk4mqUtJqampqa/RqapquqRhbcdOIbqoSWMoZnG01aiZjs3Gf tdoO6lFFFFFFFFJRRRRRytyX9LwVBqmpqUclytrcHACgBSUqKJRRQALZYAFFABQB SUUUlFFHK2XClAAAFABCoUAAAABQAFACoFAqKAhl2c6KXHu6AiZdkpKWkprGFopR FSlAEUAARQAAABFEVAAAKKKKKKAKKTU1TU1KkAoqDWDWE1NTU0NTQ1NV1gqFSWZT WzU1NTU1KWpOVv6WxSiiiiiikoooooooXkDgoopKWjkF4ABRAoACgABQBAUAEKKK KSiilLAoAFBBQAAAAAARQAQUAAAEyZoopfLVgkpRQUsKAAAAAAAAAAAAAFAUUUUU UUUUUUUAAAUUUmpRRRQFFFFFAJRRqUUUUUUUUUUampRSgBRRRRRRRRRRRRRQKBRS UUUoAABRQAUAFAAAFFABRRRRQFFFAFFFAUUAUACoUUFAABQAUAAUAoIqSlFFFLEK gUUUUAAoAioqCoKICiCgAAAAAAAAAAAAAAAIogKAAAAIoAigAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAD//Z ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline Content-Type: image/gif Content-Location: http://bits.wikimedia.org/skins-1.5/monobook/bullet.gif Content-Transfer-Encoding: Base64 R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4Sp ADs= ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline Content-Type: image/png Content-Location: http://bits.wikimedia.org/skins-1.5/monobook/external.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAMAAAC67D+PAAAAFVBMVEVmmcwzmcyZ zP8AZswAZv////////9E6giVAAAAB3RSTlP///////8AGksDRgAAADhJREFUGFcl y0ESAEAEA0Ei6/9P3sEcVB8kmrwFyni0bOeyyDpy9JTLEaOhQq7Ongf5FeMhHS/4 AVnsAZubxDVmAAAAAElFTkSuQmCC ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline Content-Type: image/gif Content-Location: http://bits.wikimedia.org/skins-1.5/monobook/user.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQAKU5AFtJMlpJNFxIMU5OTm2XH3aIVJNkK5FmMJZnPbt6NIZzXId0 XpVwQZRzR5p7VI1+baZ3Tdl+Kt1/LIO2JYe5K4q8M4idYZKBbJK/QLqddZfDR5rF TZ/HVqfMZanNacKVWuKVQ+ejVuelVu21bPC/e5+XjKOjo7rXhr3aiM+1kNi4icff m8rio83jqNHmrtXotOPEl/HDg/LKjvfaq/ngut3Z1Nvrwd/tx/vqz/////////// /////////////////yH5BAEAAD8ALAAAAAAQABAAAAZiwJ9wSCwafxfF5VhUNBgH AVO4cKRgHwNg+sjQZrFEYFpSyUihyGD6M4lAEgRbCKnPTaYRjjRYH00vLAUkFhoV fkQmNy4rJxYcGBQTiEImNi0TKB0bHgSTRX2hon1zpaanP0EAOw== ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=main.css Content-Type: text/css; charset=UTF-8; name=main.css Content-Location: http://bits.wikimedia.org/skins-1.5/monobook/main.css?270z52 Content-Transfer-Encoding: 8bit /* ** MediaWiki 'monobook' style sheet for CSS2-capable browsers. ** Copyright Gabriel Wicke - http://wikidev.net/ ** License: GPL (http://www.gnu.org/copyleft/gpl.html) ** ** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John ** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher, ** Michael Zeltner and Geir Bækholt) ** All you guys rock :) */ #column-content { width: 100%; float: right; margin: 0 0 .6em -12.2em; padding: 0; } #content { margin: 2.8em 0 0 12.2em; padding: 0 1em 1em 1em; position: relative; z-index: 2; } #column-one { padding-top: 160px; } #content { background: white; color: black; border: 1px solid #aaa; border-right: none; line-height: 1.5em; } /* the left column width is specified in class .portlet */ /* Font size: ** We take advantage of keyword scaling- browsers won't go below 9px ** More at http://www.w3.org/2003/07/30-font-size ** http://style.cleverchimp.com/font_size_intervals/altintervals.html */ body { font: x-small sans-serif; background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat; color: black; margin: 0; padding: 0; } /* scale back up to a sane default */ #globalWrapper { font-size: 127%; width: 100%; margin: 0; padding: 0; } /* general styles */ table { font-size: 100%; color: black; /* we don't want the bottom borders of

s to be visible through floated tables */ background-color: white; } fieldset table { /* but keep table layouts in forms clean... */ background: none; } a { text-decoration: none; color: #002bb8; background: none; } a:visited { color: #5a3696; } a:active { color: #faa700; } a:hover { text-decoration: underline; } a.stub { color: #772233; } a.new, #p-personal a.new { color: #ba0000; } a.new:visited, #p-personal a.new:visited { color: #a55858; } img { border: none; vertical-align: middle; } p { margin: .4em 0 .5em 0; line-height: 1.5em; } p img { margin: 0; } hr { height: 1px; color: #aaa; background-color: #aaa; border: 0; margin: .2em 0 .2em 0; } h1, h2, h3, h4, h5, h6 { color: black; background: none; font-weight: normal; margin: 0; padding-top: .5em; padding-bottom: .17em; border-bottom: 1px solid #aaa; } h1 { font-size: 188%; } h1 .editsection { font-size: 53%; } h2 { font-size: 150%; } h2 .editsection { font-size: 67%; } h3, h4, h5, h6 { border-bottom: none; font-weight: bold; } h3 { font-size: 132%; } h3 .editsection { font-size: 76%; font-weight: normal; } h4 { font-size: 116%; } h4 .editsection { font-size: 86%; font-weight: normal; } h5 { font-size: 100%; } h5 .editsection { font-weight: normal; } h6 { font-size: 80%; } h6 .editsection { font-size: 125%; font-weight: normal; } ul { line-height: 1.5em; list-style-type: square; margin: .3em 0 0 1.5em; padding: 0; list-style-image: url(bullet.gif); } ol { line-height: 1.5em; margin: .3em 0 0 3.2em; padding: 0; list-style-image: none; } li { margin-bottom: .1em; } dt { font-weight: bold; margin-bottom: .1em; } dl { margin-top: .2em; margin-bottom: .5em; } dd { line-height: 1.5em; margin-left: 2em; margin-bottom: .1em; } fieldset { border: 1px solid #2f6fab; margin: 1em 0 1em 0; padding: 0 1em 1em; line-height: 1.5em; } fieldset.nested { margin: 0 0 0.5em 0; padding: 0 0.5em 0.5em; } legend { padding: .5em; font-size: 95%; } form { border: none; margin: 0; } textarea { width: 100%; padding: .1em; } input.historysubmit { padding: 0 .3em .3em .3em !important; font-size: 94%; cursor: pointer; height: 1.7em !important; margin-left: 1.6em; } select { vertical-align: top; } abbr, acronym, .explain { border-bottom: 1px dotted black; color: black; background: none; cursor: help; } q { font-family: Times, "Times New Roman", serif; font-style: italic; } /* disabled for now blockquote { font-family: Times, "Times New Roman", serif; font-style: italic; }*/ code { background-color: #f9f9f9; } pre { padding: 1em; border: 1px dashed #2f6fab; color: black; background-color: #f9f9f9; line-height: 1.1em; } /* ** the main content area */ #siteSub { display: none; } #jump-to-nav { display: none; } #contentSub, #contentSub2 { font-size: 84%; line-height: 1.2em; margin: 0 0 1.4em 1em; color: #7d7d7d; width: auto; } span.subpages { display: block; } /* Some space under the headers in the content area */ #bodyContent h1, #bodyContent h2 { margin-bottom: .6em; } #bodyContent h3, #bodyContent h4, #bodyContent h5 { margin-bottom: .3em; } #firstHeading { margin-bottom: .1em; /* These two rules hack around bug 2013 (fix for more limited bug 11325). When bug 2013 is fixed properly, they should be removed. */ line-height: 1.2em; padding-bottom: 0; } /* user notification thing */ .usermessage { background-color: #ffce7b; border: 1px solid #ffa500; color: black; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; } #siteNotice { text-align: center; font-size: 95%; padding: 0 0.9em; } #siteNotice p { margin: 0; padding: 0; } .catlinks { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; margin-top: 1em; clear: both; } /* currently unused, intended to be used by a metadata box in the bottom-right corner of the content area */ .documentDescription { /* The summary text describing the document */ font-weight: bold; display: block; margin: 1em 0; line-height: 1.5em; } .documentByLine { text-align: right; font-size: 90%; clear: both; font-weight: normal; color: #76797c; } /* emulate center */ .center { width: 100%; text-align: center; } *.center * { margin-left: auto; margin-right: auto; } /* small for tables and similar */ .small, .small * { font-size: 94%; } table.small { font-size: 100%; } /* ** content styles */ #toc, .toc, .mw-warning { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; } #toc h2, .toc h2 { display: inline; border: none; padding: 0; font-size: 100%; font-weight: bold; } #toc #toctitle, .toc #toctitle, #toc .toctitle, .toc .toctitle { text-align: center; } #toc ul, .toc ul { list-style-type: none; list-style-image: none; margin-left: 0; padding-left: 0; text-align: left; } #toc ul ul, .toc ul ul { margin: 0 0 0 2em; } #toc .toctoggle, .toc .toctoggle { font-size: 94%; } .mw-warning { margin-left: 50px; margin-right: 50px; text-align: center; } /* images */ div.floatright, table.floatright { clear: right; float: right; position: relative; margin: 0 0 .5em .5em; border: 0; /* border: .5em solid white; border-width: .5em 0 .8em 1.4em; */ } div.floatright p { font-style: italic; } div.floatleft, table.floatleft { float: left; clear: left; position: relative; margin: 0 .5em .5em 0; border: 0; /* margin: .3em .5em .5em 0; border: .5em solid white; border-width: .5em 1.4em .8em 0; */ } div.floatleft p { font-style: italic; } /* thumbnails */ div.thumb { margin-bottom: .5em; border-style: solid; border-color: white; width: auto; } div.thumbinner { border: 1px solid #ccc; padding: 3px !important; background-color: #f9f9f9; font-size: 94%; text-align: center; overflow: hidden; } html .thumbimage { border: 1px solid #ccc; } html .thumbcaption { border: none; text-align: left; line-height: 1.4em; padding: 3px !important; font-size: 94%; } div.magnify { float: right; border: none !important; background: none !important; } div.magnify a, div.magnify img { display: block; border: none !important; background: none !important; } div.tright { clear: right; float: right; border-width: .5em 0 .8em 1.4em; } div.tleft { float: left; clear: left; margin-right: .5em; border-width: .5em 1.4em .8em 0; } img.thumbborder { border: 1px solid #dddddd; } .hiddenStructure { display: none; } /* ** classes for special content elements like town boxes ** intended to be referenced directly from the wiki src */ /* ** User styles */ /* table standards */ table.rimage { float: right; position: relative; margin-left: 1em; margin-bottom: 1em; text-align: center; } .toccolours { border: 1px solid #aaa; background-color: #f9f9f9; padding: 5px; font-size: 95%; } /* ** edit views etc */ .special li { line-height: 1.4em; margin: 0; padding: 0; } /* ** keep the whitespace in front of the ^=, hides rule from konqueror ** this is css3, the validator doesn't like it when validating as css2 */ #bodyContent a.external, #bodyContent a.external[href ^="gopher://"] { background: url(external.png) center right no-repeat; padding: 0 13px; } .rtl #bodyContent a.external, .rtl #bodyContent a.external[href ^="gopher://"] { background-image: url(external-rtl.png); } #bodyContent a.external[href ^="https://"], .link-https { background: url(lock_icon.gif) center right no-repeat; padding: 0 16px; } #bodyContent a.external[href ^="mailto:"], .link-mailto { background: url(mail_icon.gif) center right no-repeat; padding: 0 18px; } #bodyContent a.external[href ^="news://"] { background: url(news_icon.png) center right no-repeat; padding: 0 18px; } #bodyContent a.external[href ^="ftp://"], .link-ftp { background: url(file_icon.gif) center right no-repeat; padding: 0 18px; } #bodyContent a.external[href ^="irc://"], .link-irc { background: url(discussionitem_icon.gif) center right no-repeat; padding: 0 18px; } #bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"], #bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"], #bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"], #bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"], #bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"], #bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"], .link-audio { background: url("audio.png") center right no-repeat; padding: 0 13px; } #bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"], #bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"], #bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"], #bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"], .link-video { background: url("video.png") center right no-repeat; padding: 0 13px; } #bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"], #bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"], #bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"], .link-document { background: url("document.png") center right no-repeat; padding: 0 12px; } /* for rtl wikis */ .rtl #bodyContent a.external { background-position: left; padding-right: 0; } .rtl a.feedlink { background-position: right; padding-right: 16px; padding-left: 0; } /* correction for ltr wikis */ .ltr #bodyContent a.external { padding-left: 0; } /* disable interwiki styling */ #bodyContent a.extiw, #bodyContent a.extiw:active { color: #36b; } #bodyContent a.external { color: #36b; } /* ** Structural Elements */ /* ** general portlet styles (elements in the quickbar) */ .portlet { border: none; margin: 0 0 .5em; padding: 0; float: none; width: 11.6em; overflow: hidden; } .portlet h4 { font-size: 95%; font-weight: normal; white-space: nowrap; } .portlet h5 { background: transparent; padding: 0 1em 0 .5em; display: inline; height: 1em; text-transform: lowercase; font-size: 91%; font-weight: normal; white-space: nowrap; } .portlet h6 { background: #ffae2e; border: 1px solid #2f6fab; border-style: solid solid none solid; padding: 0 1em 0 1em; text-transform: lowercase; display: block; font-size: 1em; height: 1.2em; font-weight: normal; white-space: nowrap; } .pBody { font-size: 95%; background-color: white; color: black; border-collapse: collapse; border: 1px solid #aaa; padding: 0 .8em .3em .5em; } .portlet h1, .portlet h2, .portlet h3, .portlet h4 { margin: 0; padding: 0; } .portlet ul { line-height: 1.5em; list-style-type: square; list-style-image: url(bullet.gif); font-size: 95%; } .portlet li { padding: 0; margin: 0; } /* ** Logo properties */ #p-logo { top: 0; left: 0; position: absolute; /*needed to use z-index */ z-index: 3; height: 155px; width: 12em; overflow: visible; } #p-logo h5 { display: none; } #p-logo a, #p-logo a:hover { display: block; height: 155px; width: 12.2em; background-repeat: no-repeat; background-position: 35% 50% !important; text-decoration: none; } /* ** Search portlet */ #p-search { position: relative; z-index: 3; } input.searchButton { margin-top: 1px; font-size: 95%; } #searchGoButton { padding-left: .5em; padding-right: .5em; font-weight: bold; } #searchInput { width: 10.9em; margin: 0; font-size: 95%; } #p-search .pBody { padding: .5em .4em .4em .4em; text-align: center; } #p-search #searchform div div { margin-top: .4em; font-size: 95%; } /* ** the personal toolbar */ #p-personal { position: absolute; left: 0; top: 0; z-index: 0; } #p-personal { width: 100%; white-space: nowrap; padding: 0; margin: 0; border: none; background: none; overflow: visible; line-height: 1.2em; } #p-personal h5 { display: none; } #p-personal .portlet, #p-personal .pBody { z-index: 0; padding: 0; margin: 0; border: none; overflow: visible; background: none; } /* this is the ul contained in the portlet */ #p-personal ul { border: none; line-height: 1.4em; color: #2f6fab; padding: 0 2em 0 3em; margin: 0; text-align: right; list-style: none; z-index: 0; background: none; cursor: default; } #p-personal li { z-index: 0; border: none; padding: 0; display: inline; color: #2f6fab; margin-left: 1em; line-height: 1.2em; background: none; } #p-personal li a { text-decoration: none; color: #005896; padding-bottom: .2em; background: none; } #p-personal li a:hover { background-color: white; padding-bottom: .2em; text-decoration: none; } #p-personal li.active a:hover { background-color: transparent; } /* the icon in front of the user name, single quotes in bg url to hide it from iemac */ li#pt-userpage, li#pt-anonuserpage, li#pt-login { background: url(user.gif) top left no-repeat; padding-left: 20px; text-transform: none; } #p-personal ul { text-transform: lowercase; } #p-personal li.active { font-weight: bold; } /* ** the page-related actions- page/talk, edit etc */ #p-cactions { position: absolute; top: 1.3em; left: 11.5em; margin: 0; white-space: nowrap; width: 76%; line-height: 1.1em; overflow: visible; background: none; border-collapse: collapse; padding-left: 1em; list-style: none; font-size: 95%; } #p-cactions ul { list-style: none; } #p-cactions li { display: inline; border: 1px solid #aaa; border-bottom: none; padding: 0 0 .1em 0; margin: 0 .3em 0 0; overflow: visible; background: white; } #p-cactions li.selected { border-color: #fabd23; padding: 0 0 .2em 0; font-weight: bold; } #p-cactions li a { background-color: #fbfbfb; color: #002bb8; border: none; padding: 0 .8em .3em; position: relative; z-index: 0; margin: 0; text-decoration: none; } #p-cactions li.selected a { z-index: 3; padding: 0 1em .2em!important; background-color: white; } #p-cactions .new a { color: #ba0000; } #p-cactions li a:hover { z-index: 3; text-decoration: none; background-color: white; } #p-cactions h5 { display: none; } #p-cactions li.istalk { margin-right: 0; } #p-cactions li.istalk a { padding-right: .5em; } #p-cactions #ca-addsection a { padding-left: .4em; padding-right: .4em; } /* offsets to distinguish the tab groups */ li#ca-talk { margin-right: 1.6em; } li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print { margin-left: 1.6em; } #p-cactions .pBody { font-size: 1em; background-color: transparent; color: inherit; border-collapse: inherit; border: 0; padding: 0; } #p-cactions .hiddenStructure { display: none; } #p-cactions li a { text-transform: lowercase; } #p-lang { position: relative; z-index: 3; } /* Override text-transform on languages where capitalization is significant */ .capitalize-all-nouns .portlet h5, .capitalize-all-nouns .portlet h6, .capitalize-all-nouns #p-personal ul, .capitalize-all-nouns #p-cactions ul li a { text-transform: none; } /* TODO: #t-iscite is only used by the Cite extension, come up with some * system which allows extensions to add to this file on the fly */ #t-ispermalink, #t-iscite { color: #999; } /* ** footer */ #footer { background-color: white; border-top: 1px solid #fabd23; border-bottom: 1px solid #fabd23; margin: .6em 0 1em 0; padding: .4em 0 1.2em 0; text-align: center; font-size: 90%; } #footer li { display: inline; margin: 0 1.3em; } #f-poweredbyico, #f-copyrightico { margin: 0 8px; position: relative; top: -2px; /* Bump it up just a tad */ } #f-poweredbyico { float: right; height: 1%; } #f-copyrightico { float: left; height: 1%; } .mw-htmlform-submit { font-weight: bold; padding-left: .3em; padding-right: .3em; margin-right: 2em; } /* js pref toc */ #preftoc { margin: 0; padding: 0; width: 100%; clear: both; } #preftoc li { background-color: #f0f0f0; color: #000; } #preftoc li { margin: 1px -2px 1px 2px; float: left; padding: 2px 0 3px 0; border: 1px solid #fff; border-right-color: #716f64; border-bottom: 0; position: relative; white-space: nowrap; list-style-type: none; list-style-image: none; z-index: 3; } #preftoc li.selected { font-weight: bold; background-color: #f9f9f9; border: 1px solid #aaa; border-bottom: none; cursor: default; top: 1px; padding-top: 2px; margin-right: -3px; } #preftoc > li.selected { top: 2px; } #preftoc a, #preftoc a:active { display: block; color: #000; padding: 0 .7em; position: relative; text-decoration: none; } #preftoc li.selected a { cursor: default; text-decoration: none; } #preferences { margin: 0; border: 1px solid #aaa; clear: both; padding: 1.5em; background-color: #F9F9F9; } .prefsection { border: none; padding: 0; margin: 0; } .prefsection legend { font-weight: bold; } .prefsection table, .prefsection legend { background-color: #F9F9F9; } .mainLegend { display: none; } td.htmlform-tip { font-size: x-small; padding: .2em 2em; color: #666; } .preferences-login { clear: both; margin-bottom: 1.5em; } .prefcache { font-size: 90%; margin-top: 2em; } div#userloginForm form, div#userlogin form#userlogin2 { margin: 0 3em 1em 0; border: 1px solid #aaa; clear: both; padding: 1.5em 2em; background-color: #f9f9f9; float: left; } .rtl div#userloginForm form, .rtl div#userlogin form#userlogin2 { float: right; } div#userloginForm table, div#userlogin form#userlogin2 table { background-color: #f9f9f9; } div#userloginForm h2, div#userlogin form#userlogin2 h2 { padding-top: 0; } div#userlogin .captcha, div#userloginForm .captcha { border: 1px solid #bbb; padding: 1.5em 2em; background-color: white; } #loginend, #signupend { clear: both; } #userloginprompt, #languagelinks { font-size: 85%; } #login-sectiontip { font-size: 85%; line-height: 1.2; padding-top: 2em; } #userlogin .loginText, #userlogin .loginPassword { width: 12em; } #userloginlink a, #wpLoginattempt, #wpCreateaccount { font-weight: bold; } /* ** IE/Mac fixes, hope to find a validating way to move this ** to a separate stylesheet. This would work but doesn't validate: ** @import("IEMacFixes.css"); */ /* tabs: border on the a, not the div */ * > html #p-cactions li { border: none; } * > html #p-cactions li a { border: 1px solid #aaa; border-bottom: none; } * > html #p-cactions li.selected a { border-color: #fabd23; } /* footer icons need a fixed width */ * > html #f-poweredbyico, * > html #f-copyrightico { width: 88px; } * > html #bodyContent, * > html #bodyContent pre { overflow-x: auto; width: 100%; padding-bottom: 25px; } /* more IE fixes */ /* float/negative margin brokenness */ * html #footer {margin-top: 0;} * html #column-content { display: inline; margin-bottom: 0; } * html div.editsection { font-size: smaller; } #pagehistory li.selected { position: relative; } /* Mac IE 5.0 fix; floated content turns invisible */ * > html #column-content { float: none; } * > html #column-one { position: absolute; left: 0; top: 0; } * > html #footer { margin-left: 13.2em; } .redirectText { font-size: 150%; margin: 5px; } .printfooter { display: none; } div.patrollink { clear: both; } .sharedUploadNotice { font-style: italic; } span.updatedmarker { color: black; background-color: #0f0; } .previewnote { color: #c00; margin-bottom: 1em; } .previewnote p { text-indent: 3em; margin: 0.8em 0; } .editExternally { border: 1px solid gray; background-color: #ffffff; padding: 3px; margin-top: 0.5em; float: left; font-size: small; text-align: center; } .editExternallyHelp { font-style: italic; color: gray; } .toggle { margin-left: 2em; text-indent: -2em; } input#wpSummary { width: 80%; } /* @bug 1714 */ input#wpSave, input#wpDiff { margin-right: 0.33em; } #wpSave { font-weight: bold; } /* Classes for article validation */ table.revisionform_default { border: 1px solid #000000; } table.revisionform_focus { border: 1px solid #000000; background-color:#00BBFF; } tr.revision_tr_default { background-color:#EEEEEE; } tr.revision_tr_first { background-color:#DDDDDD; } p.revision_saved { color: green; font-weight:bold; } /* noarticletext */ div.noarticletext { border: 1px solid #ccc; background: #fff; padding: .2em 1em; color: #000; } div#searchTargetContainer { left: 10px; top: 10px; width: 90%; background: white; } div#searchTarget { padding: 3px; margin: 5px; background: #F0F0F0; border: solid 1px blue; } div#searchTarget ul li { list-style: none; } div#searchTarget ul li:before { color: orange; content: "\00BB \0020"; } div#searchTargetHide { float:right; border:solid 1px black; background:#DCDCDC; padding:2px; } #powersearch p { margin-top:0px; } div.multipageimagenavbox { border: solid 1px silver; padding: 4px; margin: 1em; background: #f0f0f0; } div.multipageimagenavbox div.thumb { border: none; margin-left: 2em; margin-right: 2em; } div.multipageimagenavbox hr { margin: 6px; } table.multipageimage td { text-align: center; } .templatesUsed { margin-top: 1.5em; } .mw-summary-preview { margin: 0.1em 0; } /* Friendlier slave lag warnings */ div.mw-lag-warn-normal, div.mw-lag-warn-high { padding: 3px; text-align: center; margin: 3px auto; } div.mw-lag-warn-normal { border: 1px solid #FFCC66; background-color: #FFFFCC; } div.mw-lag-warn-high { font-weight: bold; border: 2px solid #FF0033; background-color: #FFCCCC; } .MediaTransformError { background-color: #ccc; padding: 0.1em; } .MediaTransformError td { text-align: center; vertical-align: middle; font-size: 90%; } /* God-damned hack for the crappy layout */ .os-suggest { font-size: 127%; } /* Sometimes people don't want personal tools to be lowercase! */ .no-text-transform { text-transform: none; } ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=main.css Content-Type: text/css; charset=UTF-8; name=main.css Content-Location: http://bits.wikimedia.org/skins-1.5/chick/main.css?270z52 Content-Transfer-Encoding: 8bit /* ** MediaWiki 'chick' style sheet for PDAs or other small-screen devices. ** Copyright Timwi ** License: GPL (http://www.gnu.org/copyleft/gpl.html) ** ** Loosely based on Monobook by Gabriel Wicke */ body { font-family: sans-serif; color: black; background: white; margin: 0; padding: 0.3em; } a { color: #002bb8; } a:visited { color: #5a3696; } a:active { color: #ffa500; } a.stub { color: #772233; } a.new, #p-personal a.new { color:#ba0000; } a.new:visited, #p-personal a.new:visited { color:#a55858; } img { border: none; vertical-align: middle; } p { margin: 0.4em 0em 0.5em 0em; line-height: 1.5em; } p img { margin: 0; } hr { height: 1px; color: #aaaaaa; background-color: #aaaaaa; border: 0; margin: 0.2em 0 0.2em 0; } h1, h2, h3, h4, h5, h6 { color: black; background: none; font-weight: normal; margin: 0; padding-top: 0.5em; padding-bottom: 0.17em; border-bottom: 1px solid #aaaaaa; } .editsection { font-weight: normal; } h1 { font-size: 188%; } h1 .editsection { font-size: 53.2%; } h2 { font-size: 150%; } h2 .editsection { font-size: 66.7%; } h3, h4, h5, h6 { border-bottom: none; font-weight: bold; } h3 { font-size: 132%; } h3 .editsection { font-size: 75.8%; } h4 { font-size: 116%; } h4 .editsection { font-size: 86.2%; } h5 { font-size: 100%; } h6 { font-size: 80%; } h6 .editsection { font-size: 125%; } ul { line-height: 1.5em; margin: 0.3em 0 0 1.5em; padding:0; } ol { line-height: 1.5em; margin: 0.3em 0 0 3.2em; padding:0; list-style-image: none; } li { margin-bottom: 0.1em; } dt { font-weight: bold; margin-bottom: 0.1em; } dl{ margin-top: 0.2em; margin-bottom: 0.5em; } dd { line-height: 1.5em; margin-left: 2em; margin-bottom: 0.1em; } fieldset { border: 1px solid #2f6fab; margin: 1em 0em 1em 0em; padding: 0em 1em 1em 1em; line-height: 1.5em; } legend { background: white; padding: 0.5em; font-size: 95%; } form { border: none; margin: 0; } textarea { border: 1px solid #2f6fab; color: black; background-color: white; width: 100%; padding: 0.1em; overflow: auto; } /* hide this from ie/mac and konq2.2 */ @media All { head:first-child+body input { visibility: visible; border: 1px solid #2f6fab; color: black; background-color: white; vertical-align: middle; padding: 0.2em; } } input.historysubmit { padding: 0 0.3em 0.3em 0.3em !important; font-size: 94%; cursor: pointer; height: 1.7em !important; margin-left: 1.6em; } input[type="radio"], input[type="checkbox"] { border:none; } select { border: 1px solid #2f6fab; color: black; vertical-align: top; } abbr, acronym, .explain { border-bottom: 1px dotted black; color: black; background: none; cursor: help; } q { font-family: Times, "Times New Roman", serif; font-style: italic; } code { background-color: #f9f9f9; } pre { padding: 1em; border: 1px dashed #2f6fab; color: black; background-color: #f9f9f9; line-height: 1.1em; } /* ** the main content area */ span.subpages { display: block; } /* Some space under the headers in the content area */ #bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; } #bodyContent h3, #bodyContent h4, #bodyContent h5 { margin-bottom: 0.3em; } #firstHeading { margin-bottom:0.1em; } /* user notification thing */ .usermessage { background-color: #ffce7b; border: 1px solid #ffa500; color: black; font-weight: bold; margin: 0.1em 0 0 0; padding: 2px 5px; vertical-align: middle; } #siteNotice { text-align: center; font-size: 95%; padding: 0 0.9em 0 0.9em; } #siteNotice p { margin: 0; padding: 0; } .error { color: red; font-size: larger; } .catlinks { border:1px solid #aaaaaa; background-color:#f9f9f9; padding: 2px 5px; margin: 0.1em 0 0 0; clear: both; } .catlinks { margin: 0; padding: 0; } /* currently unused, intended to be used by a metadata box in the bottom-right corner of the content area */ .documentDescription { /* The summary text describing the document */ font-weight: bold; display: block; margin: 1em 0em; line-height: 1.5em; } .documentByLine { text-align: right; font-size: 90%; clear: both; font-weight: normal; color: #76797c; } /* emulate center */ .center { width: 100%; text-align: center; } *.center * { margin-left: auto; margin-right: auto; } /* small for tables and similar */ .small, .small * { font-size: 94%; } table.small { font-size: 100% } /* ** content styles */ #toc { /*border:1px solid #2f6fab;*/ border:1px solid #aaaaaa; background-color:#f9f9f9; padding:5px; font-size: 95%; } #toc ul { margin-left: 2em; } #toc .toctoggle { font-size: 94%; } #toc .editsection { margin-top: 0.7em; font-size: 94%; } /* images */ div.floatright, table.floatright { clear: right; float: right; margin: 0; position: relative; border: 0.5em solid white; border-width: 0.5em 0 0.8em 1.4em; } div.floatright p { font-style: italic; } div.floatleft, table.floatleft { float: left; clear: left; margin: 0.3em 0.5em 0.5em 0; position: relative; border: 0.5em solid white; border-width: 0.5em 1.4em 0.8em 0; } div.floatleft p { font-style: italic; } /* thumbnails */ div.thumb { margin-bottom: 0.5em; border-style: solid; border-color: white; width: auto; } div.thumbinner { border:1px solid #cccccc; padding: 3px !important; background-color:#f9f9f9; font-size: 94%; text-align: center; overflow: hidden; } html .thumbimage { border:1px solid #cccccc; } html .thumbcaption { border: none; text-align: left; line-height: 1.4em; padding: 0.3em 0 0.1em 0; } div.magnify { float: right; border: none !important; background: none !important; } div.magnify a, div.magnify img { display: block; border: none !important; background: none !important; } div.tright { clear: right; float: right; border-width: 0.5em 0 0.8em 1.4em; } div.tleft { float: left; clear: left; margin-right:0.5em; border-width: 0.5em 1.4em 0.8em 0; } img.thumbborder { border: 1px solid #dddddd; } .hiddenStructure { display: none; } /* ** classes for special content elements like town boxes ** intended to be referenced directly from the wiki src */ /* ** User styles */ /* table standards */ table.rimage { float:right; position:relative; margin-left:1em; margin-bottom:1em; text-align:center; } .toccolours { border:1px solid #aaaaaa; background-color:#f9f9f9; padding:5px; font-size: 95%; } /* ** edit views etc */ .special li { line-height: 1.4em; margin: 0; padding: 0; } a.external { color: #3366bb; } div#footer { text-align: center; } ul#f-list li { list-style: none; text-align: center; } div.portlet { margin: 0.5em 0; } .redirectText { font-size:150%; margin:5px; } ul.special li.not-patrolled, ol.special li.not-patrolled { background-color: #ffa; } div.patrollink { font-size: 75%; text-align: right; } span.updatedmarker { color:black; background-color:#00FF00; } div.gallerybox { width: 150px; } #xjump-to-nav { display: none; } .templatesUsed { margin-top: 1.5em; } .printfooter { display: none; } #footer { background-color: white; border-top: 1px solid #fabd23; border-bottom: 1px solid #fabd23; margin: .6em 0 1em 0; padding: .4em 0 1.2em 0; text-align: center; font-size: 90%; } #f-poweredbyico, #f-copyrightico { display: inline; } ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=index.css Content-Type: text/css; charset=UTF-8; name=index.css Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Common.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400 Content-Transfer-Encoding: 8bit /* */ /* Main page fixes */ #interwiki-completelist { font-weight: bold; } body.page-Main_Page #ca-delete { display: none !important; } body.page-Main_Page #mp-topbanner { clear: both; } /* Edit window toolbar */ #toolbar { height: 22px; margin-bottom: 6px; } /* Margins for
    and
      */ #content ol, #content ul, #mw_content ol, #mw_content ul { margin-bottom: 0.5em; } /* Make the list of references in [[Template:Reflist]] smaller */ .references-small { font-size: 90%; } /* Highlight clicked reference in blue to help navigation */ ol.references > li:target, sup.reference:target, span.citation:target { background-color: #DEF; } /* Ensure refs in table headers and the like aren't bold or italic */ sup.reference { font-weight: normal; font-style: normal; } /* Styling for citations */ span.citation, cite { font-style: normal; word-wrap: break-word; } /* For linked citation numbers and document IDs, where the number need not be shown on a screen or a handheld, but should be included in the printed version */ @media screen, handheld { span.citation *.printonly { display: none; } } /* wikitable/prettytable class for skinning normal tables */ table.wikitable, table.prettytable { margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse; } .wikitable th, .wikitable td, .prettytable th, .prettytable td { border: 1px #aaa solid; padding: 0.2em; } .wikitable th, .prettytable th { background: #f2f2f2; text-align: center; } .wikitable caption, .prettytable caption { font-weight: bold; } /* Default skin for navigation boxes */ table.navbox { /* Navbox container style */ border: 1px solid #aaa; width: 100%; margin: auto; clear: both; font-size: 88%; text-align: center; padding: 1px; } table.navbox + table.navbox { /* Single pixel border between adjacent navboxes */ margin-top: -1px; /* (doesn't work for IE6, but that's okay) */ } .navbox-title, .navbox-abovebelow, table.navbox th { text-align: center; /* Title and above/below styles */ padding-left: 1em; padding-right: 1em; } .navbox-group { /* Group style */ white-space: nowrap; text-align: right; font-weight: bold; padding-left: 1em; padding-right: 1em; } .navbox, .navbox-subgroup { background: #fdfdfd; /* Background color */ } .navbox-list { border-color: #fdfdfd; /* Must match background color */ } .navbox-title, table.navbox th { background: #ccccff; /* Level 1 color */ } .navbox-abovebelow, .navbox-group, .navbox-subgroup .navbox-title { background: #ddddff; /* Level 2 color */ } .navbox-subgroup .navbox-group, .navbox-subgroup .navbox-abovebelow { background: #e6e6ff; /* Level 3 color */ } .navbox-even { background: #f7f7f7; /* Even row striping */ } .navbox-odd { background: transparent; /* Odd row striping */ } .collapseButton { /* 'show'/'hide' buttons created dynamically */ float: right; /* by the CollapsibleTables javascript in */ font-weight: normal; /* [[MediaWiki:Common.js]]are styled here */ text-align: right; /* so they can be customised. */ width: auto; } .navbox .collapseButton { /* In navboxes, the show/hide button balances */ width: 6em; /* the vde links from [[Template:Tnavbar]], */ } /* so they need to be the same width. */ /* Infobox template style */ .infobox { border: 1px solid #aaa; background-color: #f9f9f9; color: black; margin: 0.5em 0 0.5em 1em; padding: 0.2em; float: right; clear: right; } .infobox td, .infobox th { vertical-align: top; } .infobox caption { font-size: larger; } .infobox.bordered { border-collapse: collapse; } .infobox.bordered td, .infobox.bordered th { border: 1px solid #aaa; } .infobox.bordered .borderless td, .infobox.bordered .borderless th { border: 0; } .infobox.sisterproject { width: 20em; font-size: 90%; } .infobox.standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; } .infobox.standard-talk.bordered td, .infobox.standard-talk.bordered th { border: 1px solid #c0c090; } /* styles for bordered infobox with merged rows */ .infobox.bordered .mergedtoprow td, .infobox.bordered .mergedtoprow th { border: 0; border-top: 1px solid #aaa; border-right: 1px solid #aaa; } .infobox.bordered .mergedrow td, .infobox.bordered .mergedrow th { border: 0; border-right: 1px solid #aaa; } /* Styles for geography infoboxes, eg countries, country subdivisions, cities, etc. */ .infobox.geography { text-align: left; border-collapse: collapse; line-height: 1.2em; font-size: 90%; } .infobox.geography td, .infobox.geography th { border-top: solid 1px #aaa; padding: 0.4em 0.6em 0.4em 0.6em; } .infobox.geography .mergedtoprow td, .infobox.geography .mergedtoprow th { border-top: solid 1px #aaa; padding: 0.4em 0.6em 0.2em 0.6em; } .infobox.geography .mergedrow td, .infobox.geography .mergedrow th { border: 0; padding: 0 0.6em 0.2em 0.6em; } .infobox.geography .mergedbottomrow td, .infobox.geography .mergedbottomrow th { border-top: 0; border-bottom: solid 1px #aaa; padding: 0 0.6em 0.4em 0.6em; } .infobox.geography .maptable td, .infobox.geography .maptable th { border: 0; padding: 0; } /* Makes redirects appear in italics in categories and on [[Special:Allpages]] */ .redirect-in-category, .allpagesredirect { font-style: italic; } /* Icons for medialist templates [[Template:Listen]], [[Template:Multi-listen_start]], [[Template:Video]], [[Template:Multi-video_start]] */ div.listenlist { background: url("http://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Gnome-speakernotes.png/30px-Gnome-speakernotes.png"); padding-left: 40px; } /* Style rules for media list templates */ div.medialist { min-height: 50px; margin: 1em; background-position: top left; background-repeat: no-repeat; } div.medialist ul { list-style-type: none; list-style-image: none; margin: 0; } div.medialist ul li { padding-bottom: 0.5em; } div.medialist ul li li { font-size: 91%; padding-bottom: 0; } /* Change the external link icon to an Adobe icon for all PDF files in browsers that support these CSS selectors, like Mozilla and Opera */ #content a[href$=".pdf"].external, #content a[href*=".pdf?"].external, #content a[href*=".pdf#"].external, #content a[href$=".PDF"].external, #content a[href*=".PDF?"].external, #content a[href*=".PDF#"].external, #mw_content a[href$=".pdf"].external, #mw_content a[href*=".pdf?"].external, #mw_content a[href*=".pdf#"].external, #mw_content a[href$=".PDF"].external, #mw_content a[href*=".PDF?"].external, #mw_content a[href*=".PDF#"].external { background: url("http://upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") center right no-repeat; padding-right: 16px; } /* Change the external link icon to an Adobe icon anywhere the PDFlink class is used (notably Template:PDFlink). This works in IE, unlike the above. */ #content span.PDFlink a, #mw_content span.PDFlink a { background: url("http://upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") center right no-repeat; padding-right: 17px; } /* Content in columns with CSS instead of tables [[Template:Columns]] */ div.columns-2 div.column { float: left; width: 50%; min-width: 300px; } div.columns-3 div.column { float: left; width: 33.3%; min-width: 200px; } div.columns-4 div.column { float: left; width: 25%; min-width: 150px; } div.columns-5 div.column { float: left; width: 20%; min-width: 120px; } /* Messagebox templates */ .messagebox { border: 1px solid #aaa; background-color: #f9f9f9; width: 80%; margin: 0 auto 1em auto; padding: .2em; } .messagebox.merge { border: 1px solid #c0b8cc; background-color: #f0e5ff; text-align: center; } .messagebox.cleanup { border: 1px solid #9f9fff; background-color: #efefff; text-align: center; } .messagebox.standard-talk { border: 1px solid #c0c090; background-color: #f8eaba; margin: 4px auto; } /* For old WikiProject banners inside banner shells. */ .mbox-inside .standard-talk, .messagebox.nested-talk { border: 1px solid #c0c090; background-color: #f8eaba; width: 100%; margin: 2px 0; padding: 2px; } .messagebox.small { width: 238px; font-size: 85%; float: right; clear: both; margin: 0 0 1em 1em; line-height: 1.25em; } .messagebox.small-talk { width: 238px; font-size: 85%; float: right; clear: both; margin: 0 0 1em 1em; line-height: 1.25em; background: #F8EABA; } /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */ th.mbox-text, td.mbox-text { /* The message body cell(s) */ border: none; padding: 0.25em 0.9em; /* 0.9em left/right */ width: 100%; /* Make all mboxes the same width regardless of text length */ } td.mbox-image { /* The left image cell */ border: none; padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */ text-align: center; } td.mbox-imageright { /* The right image cell */ border: none; padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */ text-align: center; } td.mbox-empty-cell { /* An empty narrow cell */ border: none; padding: 0px; width: 1px; } /* Article message box styles */ table.ambox { margin: 0px 10%; /* 10% = Will not overlap with other elements */ border: 1px solid #aaa; border-left: 10px solid #1e90ff; /* Default "notice" blue */ background: #fbfbfb; } table.ambox + table.ambox { /* Single border between stacked boxes. */ margin-top: -1px; } .ambox th.mbox-text, .ambox td.mbox-text { /* The message body cell(s) */ padding: 0.25em 0.5em; /* 0.5em left/right */ } .ambox td.mbox-image { /* The left image cell */ padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */ } .ambox td.mbox-imageright { /* The right image cell */ padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */ } table.ambox-notice { border-left: 10px solid #1e90ff; /* Blue */ } table.ambox-speedy { border-left: 10px solid #b22222; /* Red */ background: #fee; /* Pink */ } table.ambox-delete { border-left: 10px solid #b22222; /* Red */ } table.ambox-content { border-left: 10px solid #f28500; /* Orange */ } table.ambox-style { border-left: 10px solid #f4c430; /* Yellow */ } table.ambox-move { border-left: 10px solid #9932cc; /* Purple */ } table.ambox-protection { border-left: 10px solid #bba; /* Gray-gold */ } /* Image message box styles */ table.imbox { margin: 4px 10%; border-collapse: collapse; border: 3px solid #1e90ff; /* Default "notice" blue */ background: #fbfbfb; } .imbox .mbox-text .imbox { /* For imboxes inside imbox-text cells. */ margin: 0 -0.5em; /* 0.9 - 0.5 = 0.4em left/right. */ } .mbox-inside .imbox { /* For imboxes inside other templates. */ margin: 4px; } table.imbox-notice { border: 3px solid #1e90ff; /* Blue */ } table.imbox-speedy { border: 3px solid #b22222; /* Red */ background: #fee; /* Pink */ } table.imbox-delete { border: 3px solid #b22222; /* Red */ } table.imbox-content { border: 3px solid #f28500; /* Orange */ } table.imbox-style { border: 3px solid #f4c430; /* Yellow */ } table.imbox-move { border: 3px solid #9932cc; /* Purple */ } table.imbox-protection { border: 3px solid #bba; /* Gray-gold */ } table.imbox-license { border: 3px solid #88a; /* Dark gray */ background: #f7f8ff; /* Light gray */ } table.imbox-featured { border: 3px solid #cba135; /* Brown-gold */ } /* Category message box styles */ table.cmbox { margin: 3px 10%; border-collapse: collapse; border: 1px solid #aaa; background: #DFE8FF; /* Default "notice" blue */ } table.cmbox-notice { background: #D8E8FF; /* Blue */ } table.cmbox-speedy { margin-top: 4px; margin-bottom: 4px; border: 4px solid #b22222; /* Red */ background: #FFDBDB; /* Pink */ } table.cmbox-delete { background: #FFDBDB; /* Red */ } table.cmbox-content { background: #FFE7CE; /* Orange */ } table.cmbox-style { background: #FFF9DB; /* Yellow */ } table.cmbox-move { background: #E4D8FF; /* Purple */ } table.cmbox-protection { background: #EFEFE1; /* Gray-gold */ } /* Other pages message box styles */ table.ombox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #aaa; /* Default "notice" gray */ background: #f9f9f9; } table.ombox-notice { border: 1px solid #aaa; /* Gray */ } table.ombox-speedy { border: 2px solid #b22222; /* Red */ background: #fee; /* Pink */ } table.ombox-delete { border: 2px solid #b22222; /* Red */ } table.ombox-content { border: 1px solid #f28500; /* Orange */ } table.ombox-style { border: 1px solid #f4c430; /* Yellow */ } table.ombox-move { border: 1px solid #9932cc; /* Purple */ } table.ombox-protection { border: 2px solid #bba; /* Gray-gold */ } /* Talk page message box styles */ table.tmbox { margin: 4px 10%; border-collapse: collapse; border: 1px solid #c0c090; /* Default "notice" gray-brown */ background: #f8eaba; } .mediawiki .mbox-inside .tmbox { /* For tmboxes inside other templates. The "mediawiki" */ margin: 2px 0; /* class ensures that this declaration overrides other */ width: 100%; /* For Safari and Opera */ /* styles (including mbox-small above) */ } .mbox-inside .tmbox.mbox-small { /* "small" tmboxes should not be small when */ line-height: 1.5em; /* also "nested", so reset styles that are */ font-size: 100%; /* set in "mbox-small" above. */ } table.tmbox-speedy { border: 2px solid #b22222; /* Red */ background: #fee; /* Pink */ } table.tmbox-delete { border: 2px solid #b22222; /* Red */ } table.tmbox-content { border: 2px solid #f28500; /* Orange */ } table.tmbox-style { border: 2px solid #f4c430; /* Yellow */ } table.tmbox-move { border: 2px solid #9932cc; /* Purple */ } table.tmbox-protection, table.tmbox-notice { border: 1px solid #c0c090; /* Gray-brown */ } /* Disambig and set index box styles */ table.dmbox { clear: both; margin: 0.9em 1em; border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; background: transparent; } /* Footer and header message box styles */ table.fmbox { clear: both; margin: 0.2em 0; width: 100%; border: 1px solid #aaa; background: #f9f9f9; /* Default "system" gray */ } table.fmbox-system { background: #f9f9f9; } table.fmbox-warning { border: 1px solid #bb7070; /* Dark pink */ background: #ffdbdb; /* Pink */ } table.fmbox-editnotice { background: transparent; } /* Div based "warning" style fmbox messages. */ div.mw-warning-with-logexcerpt, div.mw-lag-warn-high, div.mw-cascadeprotectedwarning, div#mw-protect-cascadeon { clear: both; margin: 0.2em 0; border: 1px solid #bb7070; background: #ffdbdb; padding: 0.25em 0.9em; } /* Div based "system" style fmbox messages. Used in [[MediaWiki:Readonly lag]]. */ div.mw-lag-warn-normal, div.fmbox-system { clear: both; margin: 0.2em 0; border: 1px solid #aaa; background: #f9f9f9; padding: 0.25em 0.9em; } /* These mbox-small classes must be placed after all other ambox/tmbox/ombox etc classes. "body.mediawiki" is so they override "table.ambox + table.ambox" above. */ body.mediawiki table.mbox-small { /* For the "small=yes" option. */ clear: right; float: right; margin: 4px 0 4px 1em; width: 238px; font-size: 88%; line-height: 1.25em; } body.mediawiki table.mbox-small-left { /* For the "small=left" option. */ margin: 4px 1em 4px 0; width: 238px; border-collapse: collapse; font-size: 88%; line-height: 1.25em; } /* Remove default styles for [[MediaWiki:Noarticletext]]. */ div.noarticletext { border: none; background: transparent; padding: 0; } /* Support for Template:IPA, Template:Unicode and Template:Polytonic. The second declarations reset the styles for all browsers except IE6, which chokes on the empty comment tags. Please copy any changes to [[Template:IPA fonts]] and [[Template:Unicode fonts]]. */ .IPA { font-family: "Charis SIL", "Doulos SIL", Gentium, GentiumAlt, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode"; font-family /**/: inherit; } .Unicode { font-family: Code2000, Code2001, "Free Serif", "TITUS Cyberbit Basic", "Doulos SIL", "Chrysanthi Unicode", "Bitstream Cyberbit", "Bitstream CyberBase", Thryomanes, Gentium, GentiumAlt, "Lucida Grande", "Free Sans", "Arial Unicode MS", "Microsoft Sans Serif", "Lucida Sans Unicode"; font-family /**/: inherit; } .polytonic { font-family: "Athena Unicode", Gentium, "Palatino Linotype", "Arial Unicode MS", "Lucida Sans Unicode", "Lucida Grande", Code2000; font-family /**/: inherit; } #wpSave { font-weight: bold; } /* class hiddenStructure is defunct. See [[Wikipedia:hiddenStructure]] */ .hiddenStructure { display: inline ! important; color: #f00; background-color: #0f0; } /* suppress missing interwiki image links where #ifexist cannot be used due to high number of requests see .hidden-redlink on http://meta.wikimedia.org/wiki/MediaWiki:Common.css */ .check-icon a.new { display: none; speak: none; } /* Removes underlines from links */ .nounderlines a { text-decoration: none; } /* Remove underline from IPA links */ .IPA a:link, .IPA a:visited { text-decoration: none; } /* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */ div.NavFrame { margin: 0; padding: 4px; border: 1px solid #aaa; text-align: center; border-collapse: collapse; font-size: 95%; } div.NavFrame + div.NavFrame { border-top-style: none; border-top-style: hidden; } div.NavPic { background-color: #fff; margin: 0; padding: 2px; float: left; } div.NavFrame div.NavHead { height: 1.6em; font-weight: bold; background-color: #ccf; position: relative; } div.NavFrame p, div.NavFrame div.NavContent, div.NavFrame div.NavContent p { font-size: 100%; } div.NavEnd { margin: 0; padding: 0; line-height: 1px; clear: both; } a.NavToggle { position: absolute; top: 0; right: 3px; font-weight: normal; font-size: 90%; } /* Hatnotes and disambiguation notices */ .rellink, .dablink { font-style: italic; padding-left: 2em; margin-bottom: 0.5em; } .rellink i, .dablink i { font-style: normal; } /* Style for horizontal UL lists */ .horizontal ul { padding: 0; margin: 0; } .horizontal li { padding: 0 0.6em 0 0.4em; display: inline; border-right: 1px solid; } .horizontal li:last-child { border-right: none; padding-right: 0; } /* Allow transcluded pages to display in lists rather than a table. Compatible in Firefox; incompatible in IE6. */ .listify td { display: list-item; } .listify tr { display: block; } .listify table { display: block; } /* Geographical coordinates defaults. See [[Template:Coord/link]] for how these are used. The classes "geo", "longitude", and "latitude" are used by the [[Geo microformat]]. */ .geo-default, .geo-dms, .geo-dec { display: inline; } .geo-nondefault, .geo-multi-punct { display: none; } .longitude, .latitude { white-space: nowrap; } /* When
      is used on the table of contents, the ToC will display without numbers */ .nonumtoc .tocnumber { display: none; } .nonumtoc #toc ul, .nonumtoc .toc ul { line-height: 1.5em; list-style: none; margin: .3em 0 0; padding: 0; } .nonumtoc #toc ul ul, .nonumtoc .toc ul ul { margin: 0 0 0 2em; } /* Allow limiting of which header levels are shown in a TOC;
      , for instance, will limit to showing ==headings== and ===headings=== but no further (as long as there are no =headings= on the page, which there shouldn't be according to the MoS). */ .toclimit-2 .toclevel-1 ul, .toclimit-3 .toclevel-2 ul, .toclimit-4 .toclevel-3 ul, .toclimit-5 .toclevel-4 ul, .toclimit-6 .toclevel-5 ul, .toclimit-7 .toclevel-6 ul { display: none; } /* Styling for Template:Quote */ blockquote.templatequote { margin-top: 0; } blockquote.templatequote div.templatequotecite { line-height: 1em; text-align: left; padding-left: 2em; margin-top: 0; } blockquote.templatequote div.templatequotecite cite { font-size: 85%; } div.user-block { padding: 5px; border: 1px solid #A9A9A9; background-color: #FFEFD5; } /* Prevent line breaks in silly places: 1) Links when we don't want them to 2) Bold "links" to the page itself 2) HTML formulae 3) Ref tags with group names --> "[Note 1]" */ .nowraplinks a, .nowraplinks .selflink, span.texhtml, sup.reference a { white-space: nowrap; } /* For template documentation */ .template-documentation { clear: both; margin: 1em 0 0 0; border: 1px solid #aaa; background-color: #ecfcf4; padding: 1em; } .thumbinner { min-width: 100px; } /* Inline divs in ImageMaps (code borrowed from de.wiki) */ .imagemap-inline div { display: inline; } /* Increase the height of the image upload box */ #wpUploadDescription { height: 13em; } /* Reduce line-height for and */ sup, sub { line-height: 1em; } /* Remove white border from thumbnails */ div.thumb { border: none; } div.tright { border: none; margin: 0.5em 0 0.8em 1.4em; } div.tleft { border: none; margin: 0.5em 1.4em 0.8em 0; } /* Makes the background of a framed image white instead of gray. */ /* Only visible with transparent images. */ div.thumb img.thumbimage { background-color: #fff; } /* The backgrounds for galleries. */ #content .gallerybox div.thumb { background-color: #F9F9F9; /* Light gray padding */ } /* Put a chequered background behind images, only visible if they have transparency */ .gallerybox .thumb img, #file img { background: white url("http://upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png") repeat; } /* But not on articles, user pages, portals or with opt-out. */ .ns-0 .gallerybox .thumb img, .ns-2 .gallerybox .thumb img, .ns-100 .gallerybox .thumb img, .nochecker .gallerybox .thumb img { background: white; } /* Prevent floating boxes from overlapping any category listings, file histories, edit previews, and edit [Show changes] views */ #mw-subcategories, #mw-pages, #mw-category-media, #filehistory, #wikiPreview, #wikiDiff { clear: both; } /* Selectively hide headers in WikiProject banners */ .wpb .wpb-header { display: none; } .wpbs-inner .wpb .wpb-header { display: block; } /* for IE */ .wpbs-inner .wpb .wpb-header { display: table-row; } /* for real browsers */ .wpbs-inner .wpb-outside { display: none; } /* hide things that should only display outside shells */ /* Styling for Abuse Filter tags */ .mw-tag-markers { font-family:sans-serif; font-style:italic; font-size:90%; } /* Fix so , and
       tags get normal text size also in 
         some versions of Firefox, Safari, Konqueror, Chrome etc. */
      tt, code, pre {
          font-family: monospace, sans-serif;
      }
      
      /* Remove bullets when there are multiple edit page warnings */
      ul.permissions-errors > li {
          list-style: none;
      }
      ul.permissions-errors {
          margin: 0;
      }
      
      /* No linewrap on the labels of the login/signup page */
      body.page-Special_UserLogin .mw-label label,
      body.page-Special_UserLogin_signup .mw-label label { white-space : nowrap; }
      
      /*  */
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=index.css
      Content-Type: text/css; charset=UTF-8; name=index.css
      Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Print.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
      Content-Transfer-Encoding: 8bit
      
      /*  */
      
      /* Do not print:
         1: When in mainspace: Article message boxes,
            navboxes, sister project boxes, disambig links,
            and items marked as metadata.
         2: Privacy, about, disclaimer, redirect and section edit links.
         3: Show/hide toggles for collapsible items.
         4: Items marked as noprint.
      */
      .ns-0 .ambox, 
      .ns-0 .navbox, 
      .ns-0 .infobox.sisterproject, 
      .ns-0 .dablink, 
      .ns-0 .metadata, 
      #privacy, #about, #disclaimer, .editlink,
      span.collapseButton, a.NavToggle,
      .noprint {
          display: none;
      }
      
      /* Add formatting to make sure that "external references" from templates
         like [[Template:Ref]] do not get URL expansion, not even when printed.
         The anchor itself has class "external autonumber" and the url expansion
         is inserted when printing (see the common printing style sheet at
         http://en.wikipedia.org/skins-1.5/common/commonPrint.css) using the
         ":after" pseudo-element of CSS. Also hide in  elements.
      */
      #content cite a.external.text:after,
      .nourlexpansion a.external.text:after,
      .nourlexpansion a.external.autonumber:after {
          display: none !important;
      }
      
      /* Uncollapse collapsible tables/divs.
         The proper way to do this for tables is to use display:table-row,
         but this is not supported by all browsers, so use display:block as fallback.
      */
      table.collapsible tr, div.NavPic, div.NavContent {
          display: block !important;
      }
      table.collapsible tr {
          display: table-row !important;
      }
      
      /* Hiding some items when printing with Simple skin */
      .skin-simple div#column-one,
      .skin-simple div#f-poweredbyico,
      .skin-simple div#f-copyrightico,
      .skin-simple .editsection { 
          display: none; 
      }
      
      /*  */
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=index.css
      Content-Type: text/css; charset=UTF-8; name=index.css
      Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Handheld.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
      Content-Transfer-Encoding: 8bit
      
      /* Flatten the main page table layout */
      table.layout,
      table.layout tbody,
      table.layout tr,
      table.layout th,
      table.layout td,
      #mp-topbanner,
      #mp-topbanner tbody,
      #mp-topbanner tr,
      #mp-topbanner th,
      #mp-topbanner td,
      #mp-upper,
      #mp-upper tbody,
      #mp-upper tr,
      #mp-upper th,
      #mp-upper td,
      #mp-tfp,
      #mp-tfp tbody,
      #mp-tfp tr,
      #mp-tfp th,
      #mp-tfp td {
        display: block !important;
        width: 100% !important;
      }
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline
      Content-Type: image/png
      Content-Location: http://upload.wikimedia.org/wikipedia/en/1/18/Monobook-bullet.png
      Content-Transfer-Encoding: Base64
      
      iVBORw0KGgoAAAANSUhEUgAAAAkAAAANAQMAAABBztZFAAAABlBMVEUAAwBjjJzG
      2b5OAAAAAXRSTlMAQObYZgAAABBJREFUCNdjYMAG7FARAwMADXkBNzRuJgIAAAAA
      SUVORK5CYII=
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline
      Content-Type: image/png
      Content-Location: http://upload.wikimedia.org/wikipedia/en/d/d4/Monobook-bullet-star.png
      Content-Transfer-Encoding: Base64
      
      iVBORw0KGgoAAAANSUhEUgAAAAkAAAANCAMAAABM3rQ0AAAAPFBMVEX6vSP6vST6
      wTD6wTH6wzb7xT/7xkH7y1L8023813n82YL935X94Jn+8tT+89j+9+X++On/+u7/
      /Pb///+vc6SvAAAAQklEQVQI14XLNxIAIAwDQZFz9P//ij0DNVdtIYFe+Ks+NbSr
      iCgqwQAwoWB6SH6ChmXYITvHcvLYSietNqvnRSt3OtJtBjsXtm3VAAAAAElFTkSu
      QmCC
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=index.css
      Content-Type: text/css; charset=UTF-8; name=index.css
      Content-Location: http://en.wikipedia.org/w/index.php?title=MediaWiki:Monobook.css&usemsgcache=yes&ctype=text%2Fcss&smaxage=2678400&action=raw&maxage=2678400
      Content-Transfer-Encoding: 8bit
      
      /*  */
      
      /* Don't display some stuff on the main page */
      body.page-Main_Page #deleteconfirm,
      body.page-Main_Page #t-cite,
      body.page-Main_Page #lastmod,
      body.page-Main_Page #siteSub,
      body.page-Main_Page #contentSub,
      body.page-Main_Page h1.firstHeading {
          display: none !important;
      }
      
      #siteNotice {
          margin-top: 5px;
          margin-bottom: -.5em;
      }
      #mw-dismissable-notice {
          background: transparent;
      }
      
      /* BEGIN LIGHT BLUE SECTION
         Make content area light blue in all namespaces except articles (main namespace). 
         This is done by setting the background color for all #content areas 
         to light blue, and then overriding it back to white for any #content 
         enclosed in a .ns-0 (main namespace). We do the same for the "tab" 
         backgrounds and some other objects. */
      
      #content,
      #p-cactions li a:hover, #p-cactions li.selected a,
      #content div.thumb {    /* "Margin" for thumbs, padding for galleries */
          background-color: #F8FCFF;   /* Light blue */
      }
      #p-cactions li a {
          background-color: #F7F9FB;   /* Light blue-gray inactive tabs */
      }
      
      .ns-0 #content,
      .ns-0 #p-cactions li a:hover, .ns-0 #p-cactions li.selected a, 
      .ns-0 #content div.thumb {
          background-color: white;     /* Set back to white for articles */
      }
      .ns-0 #p-cactions li a {
          background-color: #FBFBFB;   /* Light gray inactive tabs in articles */
      }
      
      @media print {
          #content { background: white; } /* White background on print */
      }
      
      /* Category lists and diffs transparent instead of white. */
      #mw-subcategories table, #mw-pages table,
      table.diff, td.diff-otitle, td.diff-ntitle {
          background-color: transparent;
      }
      
      /* END LIGHT BLUE SECTION */
      
      /* Talk page tab "+" / "new section". 
         Sets the same padding as the other tabs have. */
      #p-cactions #ca-addsection a {
          padding-left: .8em;
          padding-right: .8em;
      }
      
      
      /* Block quotations */
      #content blockquote {
          font-size: 93.75%; /* equivalent of 15px in 16px default */
          margin: 1em 1.6em; /* same indent as an unordered list */
      }
      #content blockquote p {
          line-height:inherit;
      }
      
      /* Display "From Wikipedia, the free encyclopedia" */
      #siteSub {
          display: inline;
          font-size: 92%;
          font-weight: normal;
      }
      
      /* Bold 'edit this page' link to encourage newcomers */
      #ca-edit a { font-weight: bold !important; }
      
      /* Accessibility experiment: make diff changes not just colour-based */ 
      .diffchange {
          font-weight: bold;
          background-color: inherit;
      }
      td.diff-addedline, td.diff-deletedline, td.diff-context {
          vertical-align: top;
          font-size: 85%;
          color: inherit;
      }
      
      #pt-login {
          font-weight: bold;
          font-size: 110%;
      }
      
      p.error {
          font-weight: bold;
      }
      
      
      /* TOC margin in articles (and article previews). */
      .ns-0 #wikiPreview > table#toc,
      .ns-0 #bodyContent > table#toc {
          margin-top: .5em;
      }
      
      
      /* Class styles */
      
      /* .toccolours added here because version in 
         monobook/main.css wasn't being used by the print style */
      .toccolours { 
          border: 1px solid #aaa;
          background-color: #f9f9f9;
          padding: 5px;
          font-size: 95%;
      }
      
      /* Don't underline links in portlets/specialchars even with pref "Underline links:Always" */
      .portlet a, #editpage-specialchars a  { text-decoration: none; }
      .portlet a:hover, #editpage-specialchars a:hover { text-decoration: underline; }
      
      /* For positioning icons at top-right, used in Templates
         "Spoken Article" and "Featured Article" */
      div.topicon {
          position: absolute; 
          z-index: 10; 
          top: 10px;
          display: block !important;
      }
      
      #coordinates {  
          position: absolute;
          z-index: 1;
          border: none;
          background: none;
          right: 30px;
          top: 3.7em;
          float: right;
          margin: 0.0em;
          padding: 0.0em;
          line-height: 1.5em;
          text-align: right;
          text-indent: 0;
          font-size: 85%;
          text-transform: none;
          white-space: nowrap;
      }
      
      .portlet li {
          list-style-image: url("http://upload.wikimedia.org/wikipedia/en/1/18/Monobook-bullet.png");
      }
      
      li.FA {
          list-style-image: url("http://upload.wikimedia.org/wikipedia/en/d/d4/Monobook-bullet-star.png");
      }
      
      /* Makes the background of a framed image white instead of gray. */
      /* Only visible with transparent images. */
      div.thumb div a img {
          background-color: #fff;
      }
      
      /* Remove bullets when there are multiple edit page warnings */
      ul.permissions-errors > li {
          list-style: none;
      }
      ul.permissions-errors {
          margin: 0;
      }
      
      /* Adjust font-size for inline HTML generated TeX formulae */
      .texhtml {
        font-size: 125%;
        line-height: 1.5em;
      }
      
      /* Blue instead of yellow padlock for secure links. */
      #bodyContent a.external[href ^="https://"],
      .link-https {
          background: url("http://upload.wikimedia.org/wikipedia/en/0/00/Lock_icon_blue.gif") center right no-repeat;
      }
      
      /*  */
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=index.css
      Content-Type: text/css; charset=UTF-8; name=index.css
      Content-Location: http://en.wikipedia.org/w/index.php?title=-&action=raw&maxage=2678400&gen=css
      Content-Transfer-Encoding: 8bit
      
      /* generated user stylesheet */
      a.new, #quickbar a.new { color: #CC2200; }
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=wikibits.js
      Content-Type: application/x-javascript; charset=UTF-8; name=wikibits.js
      Content-Location: http://bits.wikimedia.org/skins-1.5/common/wikibits.js?270z52
      Content-Transfer-Encoding: Base64
      
      Ly8gTWVkaWFXaWtpIEphdmFTY3JpcHQgc3VwcG9ydCBmdW5jdGlvbnMKCnZhciBj
      bGllbnRQQyA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTsgLy8g
      R2V0IGNsaWVudCBpbmZvCnZhciBpc19nZWNrbyA9IC9nZWNrby8udGVzdCggY2xp
      ZW50UEMgKSAmJgoJIS9raHRtbHxzcG9vZmVyfG5ldHNjYXBlXC83XC4wLy50ZXN0
      KGNsaWVudFBDKTsKdmFyIHdlYmtpdF9tYXRjaCA9IGNsaWVudFBDLm1hdGNoKC9h
      cHBsZXdlYmtpdFwvKFxkKykvKTsKaWYgKHdlYmtpdF9tYXRjaCkgewoJdmFyIGlz
      X3NhZmFyaSA9IGNsaWVudFBDLmluZGV4T2YoJ2FwcGxld2Via2l0JykgIT0gLTEg
      JiYKCQljbGllbnRQQy5pbmRleE9mKCdzcG9vZmVyJykgPT0gLTE7Cgl2YXIgaXNf
      c2FmYXJpX3dpbiA9IGlzX3NhZmFyaSAmJiBjbGllbnRQQy5pbmRleE9mKCd3aW5k
      b3dzJykgIT0gLTE7Cgl2YXIgd2Via2l0X3ZlcnNpb24gPSBwYXJzZUludCh3ZWJr
      aXRfbWF0Y2hbMV0pOwp9Ci8vIEZvciBhY2Nlc3NrZXlzOyBub3RlIHRoYXQgRkYz
      KyBpcyBpbmNsdWRlZCBoZXJlIQp2YXIgaXNfZmYyID0gL2ZpcmVmb3hcL1syLTld
      fG1pbmVmaWVsZFwvMy8udGVzdCggY2xpZW50UEMgKTsKdmFyIGZmMl9idWdzID0g
      L2ZpcmVmb3hcLzIvLnRlc3QoIGNsaWVudFBDICk7Ci8vIFRoZXNlIGFyZW4ndCB1
      c2VkIGhlcmUsIGJ1dCBzb21lIGN1c3RvbSBzY3JpcHRzIHJlbHkgb24gdGhlbQp2
      YXIgaXNfZmYyX3dpbiA9IGlzX2ZmMiAmJiBjbGllbnRQQy5pbmRleE9mKCd3aW5k
      b3dzJykgIT0gLTE7CnZhciBpc19mZjJfeDExID0gaXNfZmYyICYmIGNsaWVudFBD
      LmluZGV4T2YoJ3gxMScpICE9IC0xOwppZiAoY2xpZW50UEMuaW5kZXhPZignb3Bl
      cmEnKSAhPSAtMSkgewoJdmFyIGlzX29wZXJhID0gdHJ1ZTsKCXZhciBpc19vcGVy
      YV9wcmVzZXZlbiA9IHdpbmRvdy5vcGVyYSAmJiAhZG9jdW1lbnQuY2hpbGROb2Rl
      czsKCXZhciBpc19vcGVyYV9zZXZlbiA9IHdpbmRvdy5vcGVyYSAmJiBkb2N1bWVu
      dC5jaGlsZE5vZGVzOwoJdmFyIGlzX29wZXJhXzk1ID0gL29wZXJhXC8oOVwuWzUt
      OV18WzEtOV1bMC05XSkvLnRlc3QoIGNsaWVudFBDICk7Cgl2YXIgb3BlcmE2X2J1
      Z3MgPSBpc19vcGVyYV9wcmVzZXZlbjsKCXZhciBvcGVyYTdfYnVncyA9IGlzX29w
      ZXJhX3NldmVuICYmICFpc19vcGVyYV85NTsKCXZhciBvcGVyYTk1X2J1Z3MgPSAv
      b3BlcmFcLyg5XC41KS8udGVzdCggY2xpZW50UEMgKTsKfQovLyBTdGFydCBhdCA0
      IHRvIG1pbmltaXplIHRoZSBjaGFuY2Ugb2YgYnJlYWtpbmcgb24gSUUxMCA6KQp2
      YXIgaWU2X2J1Z3MgPSAvbXNpZSBbNC02XS8udGVzdCggY2xpZW50UEMgKTsKCi8v
      IEdsb2JhbCBleHRlcm5hbCBvYmplY3RzIHVzZWQgYnkgdGhpcyBzY3JpcHQuCi8q
      ZXh0ZXJuIHRhLCBzdHlsZXBhdGgsIHNraW4gKi8KCi8vIGFkZCBhbnkgb25sb2Fk
      IGZ1bmN0aW9ucyBpbiB0aGlzIGhvb2sgKHBsZWFzZSBkb24ndCBoYXJkLWNvZGUg
      YW55IGV2ZW50cyBpbiB0aGUgeGh0bWwgc291cmNlKQp2YXIgZG9uZU9ubG9hZEhv
      b2s7CgppZiAoIXdpbmRvdy5vbmxvYWRGdW5jdHMpIHsKCXZhciBvbmxvYWRGdW5j
      dHMgPSBbXTsKfQoKZnVuY3Rpb24gYWRkT25sb2FkSG9vayggaG9va0Z1bmN0ICkg
      ewoJLy8gQWxsb3dzIGFkZC1vbiBzY3JpcHRzIHRvIGFkZCBvbmxvYWQgZnVuY3Rp
      b25zCglpZiggIWRvbmVPbmxvYWRIb29rICkgewoJCW9ubG9hZEZ1bmN0c1tvbmxv
      YWRGdW5jdHMubGVuZ3RoXSA9IGhvb2tGdW5jdDsKCX0gZWxzZSB7CgkJaG9va0Z1
      bmN0KCk7ICAvLyBidWcgaW4gTVNJRSBzY3JpcHQgbG9hZGluZwoJfQp9CgpmdW5j
      dGlvbiBob29rRXZlbnQoIGhvb2tOYW1lLCBob29rRnVuY3QgKSB7CglhZGRIYW5k
      bGVyKCB3aW5kb3csIGhvb2tOYW1lLCBob29rRnVuY3QgKTsKfQoKZnVuY3Rpb24g
      aW1wb3J0U2NyaXB0KCBwYWdlICkgewoJLy8gVE9ETzogbWlnaHQgd2FudCB0byBp
      bnRyb2R1Y2UgYSB1dGlsaXR5IGZ1bmN0aW9uIHRvIG1hdGNoIHdmVXJsZW5jb2Rl
      KCkgaW4gUEhQCgl2YXIgdXJpID0gd2dTY3JpcHQgKyAnP3RpdGxlPScgKwoJCWVu
      Y29kZVVSSUNvbXBvbmVudChwYWdlLnJlcGxhY2UoLyAvZywnXycpKS5yZXBsYWNl
      KC8lMkYvaWcsJy8nKS5yZXBsYWNlKC8lM0EvaWcsJzonKSArCgkJJyZhY3Rpb249
      cmF3JmN0eXBlPXRleHQvamF2YXNjcmlwdCc7CglyZXR1cm4gaW1wb3J0U2NyaXB0
      VVJJKCB1cmkgKTsKfQoKdmFyIGxvYWRlZFNjcmlwdHMgPSB7fTsgLy8gaW5jbHVk
      ZWQtc2NyaXB0cyB0cmFja2VyCmZ1bmN0aW9uIGltcG9ydFNjcmlwdFVSSSggdXJs
      ICkgewoJaWYgKCBsb2FkZWRTY3JpcHRzW3VybF0gKSB7CgkJcmV0dXJuIG51bGw7
      Cgl9Cglsb2FkZWRTY3JpcHRzW3VybF0gPSB0cnVlOwoJdmFyIHMgPSBkb2N1bWVu
      dC5jcmVhdGVFbGVtZW50KCAnc2NyaXB0JyApOwoJcy5zZXRBdHRyaWJ1dGUoICdz
      cmMnLCB1cmwgKTsKCXMuc2V0QXR0cmlidXRlKCAndHlwZScsICd0ZXh0L2phdmFz
      Y3JpcHQnICk7Cglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcp
      WzBdLmFwcGVuZENoaWxkKCBzICk7CglyZXR1cm4gczsKfQoKZnVuY3Rpb24gaW1w
      b3J0U3R5bGVzaGVldCggcGFnZSApIHsKCXJldHVybiBpbXBvcnRTdHlsZXNoZWV0
      VVJJKCB3Z1NjcmlwdCArICc/YWN0aW9uPXJhdyZjdHlwZT10ZXh0L2NzcyZ0aXRs
      ZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KCBwYWdlLnJlcGxhY2UoLyAvZywnXycp
      ICkgKTsKfQoKZnVuY3Rpb24gaW1wb3J0U3R5bGVzaGVldFVSSSggdXJsLCBtZWRp
      YSApIHsKCXZhciBsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpbmsnICk7
      CglsLnR5cGUgPSAndGV4dC9jc3MnOwoJbC5yZWwgPSAnc3R5bGVzaGVldCc7Cgls
      LmhyZWYgPSB1cmw7CglpZiggbWVkaWEgKSB7CgkJbC5tZWRpYSA9IG1lZGlhOwoJ
      fQoJZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBl
      bmRDaGlsZCggbCApOwoJcmV0dXJuIGw7Cn0KCmZ1bmN0aW9uIGFwcGVuZENTUygg
      dGV4dCApIHsKCXZhciBzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ3N0eWxl
      JyApOwoJcy50eXBlID0gJ3RleHQvY3NzJzsKCXMucmVsID0gJ3N0eWxlc2hlZXQn
      OwoJaWYgKCBzLnN0eWxlU2hlZXQgKSB7CgkJcy5zdHlsZVNoZWV0LmNzc1RleHQg
      PSB0ZXh0OyAvLyBJRQoJfSBlbHNlIHsKCQlzLmFwcGVuZENoaWxkKCBkb2N1bWVu
      dC5jcmVhdGVUZXh0Tm9kZSggdGV4dCArICcnICkgKTsgLy8gU2FmYXJpIHNvbWV0
      aW1lcyBib3JrcyBvbiBudWxsCgl9Cglkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
      TmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKCBzICk7CglyZXR1cm4gczsKfQoK
      Ly8gU3BlY2lhbCBzdHlsZXNoZWV0IGxpbmtzIGZvciBNb25vYm9vayBvbmx5IChz
      ZWUgYnVnIDE0NzE3KQppZiAoIHR5cGVvZiBzdHlsZXBhdGggIT0gJ3VuZGVmaW5l
      ZCcgJiYgc2tpbiA9PSAnbW9ub2Jvb2snICkgewoJaWYgKCBvcGVyYTZfYnVncyAp
      IHsKCQlpbXBvcnRTdHlsZXNoZWV0VVJJKCBzdHlsZXBhdGggKyAnLycgKyBza2lu
      ICsgJy9PcGVyYTZGaXhlcy5jc3MnICk7Cgl9IGVsc2UgaWYgKCBvcGVyYTdfYnVn
      cyApIHsKCQlpbXBvcnRTdHlsZXNoZWV0VVJJKCBzdHlsZXBhdGggKyAnLycgKyBz
      a2luICsgJy9PcGVyYTdGaXhlcy5jc3MnICk7Cgl9IGVsc2UgaWYgKCBvcGVyYTk1
      X2J1Z3MgKSB7CgkJaW1wb3J0U3R5bGVzaGVldFVSSSggc3R5bGVwYXRoICsgJy8n
      ICsgc2tpbiArICcvT3BlcmE5Rml4ZXMuY3NzJyApOwoJfSBlbHNlIGlmICggZmYy
      X2J1Z3MgKSB7CgkJaW1wb3J0U3R5bGVzaGVldFVSSSggc3R5bGVwYXRoICsgJy8n
      ICsgc2tpbiArICcvRkYyRml4ZXMuY3NzJyApOwoJfQp9CgoKaWYgKCB3Z0JyZWFr
      RnJhbWVzICkgewoJLy8gVW4tdHJhcCB1cyBmcm9tIGZyYW1lc2V0cwoJaWYgKCB3
      aW5kb3cudG9wICE9IHdpbmRvdyApIHsKCQl3aW5kb3cudG9wLmxvY2F0aW9uID0g
      d2luZG93LmxvY2F0aW9uOwoJfQp9CgpmdW5jdGlvbiBzaG93VG9jVG9nZ2xlKCkg
      ewoJaWYgKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSApIHsKCQkvLyBVc2VzIERP
      TSBjYWxscyB0byBhdm9pZCBkb2N1bWVudC53cml0ZSArIFhIVE1MIGlzc3VlcwoK
      CQl2YXIgbGlua0hvbGRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAndG9j
      dGl0bGUnICk7CgkJdmFyIGV4aXN0aW5nTGluayA9IGRvY3VtZW50LmdldEVsZW1l
      bnRCeUlkKCAndG9nZ2xlbGluaycgKTsKCQlpZiAoICFsaW5rSG9sZGVyIHx8IGV4
      aXN0aW5nTGluayApIHsKCQkJLy8gRG9uJ3QgYWRkIHRoZSB0b2dnbGUgbGluayB0
      d2ljZQoJCQlyZXR1cm47CgkJfQoKCQl2YXIgb3V0ZXJTcGFuID0gZG9jdW1lbnQu
      Y3JlYXRlRWxlbWVudCggJ3NwYW4nICk7CgkJb3V0ZXJTcGFuLmNsYXNzTmFtZSA9
      ICd0b2N0b2dnbGUnOwoKCQl2YXIgdG9nZ2xlTGluayA9IGRvY3VtZW50LmNyZWF0
      ZUVsZW1lbnQoICdhJyApOwoJCXRvZ2dsZUxpbmsuaWQgPSAndG9nZ2xlbGluayc7
      CgkJdG9nZ2xlTGluay5jbGFzc05hbWUgPSAnaW50ZXJuYWwnOwoJCXRvZ2dsZUxp
      bmsuaHJlZiA9ICdqYXZhc2NyaXB0OnRvZ2dsZVRvYygpJzsKCQl0b2dnbGVMaW5r
      LmFwcGVuZENoaWxkKCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSggdG9jSGlkZVRl
      eHQgKSApOwoKCQlvdXRlclNwYW4uYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0
      ZVRleHROb2RlKCAnWycgKSApOwoJCW91dGVyU3Bhbi5hcHBlbmRDaGlsZCggdG9n
      Z2xlTGluayApOwoJCW91dGVyU3Bhbi5hcHBlbmRDaGlsZCggZG9jdW1lbnQuY3Jl
      YXRlVGV4dE5vZGUoICddJyApICk7CgoJCWxpbmtIb2xkZXIuYXBwZW5kQ2hpbGQo
      IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCAnICcgKSApOwoJCWxpbmtIb2xkZXIu
      YXBwZW5kQ2hpbGQoIG91dGVyU3BhbiApOwoKCQl2YXIgY29va2llUG9zID0gZG9j
      dW1lbnQuY29va2llLmluZGV4T2YoICJoaWRldG9jPSIgKTsKCQlpZiAoIGNvb2tp
      ZVBvcyA+IC0xICYmIGRvY3VtZW50LmNvb2tpZS5jaGFyQXQoIGNvb2tpZVBvcyAr
      IDggKSA9PSAxICkgewoJCQl0b2dnbGVUb2MoKTsKCQl9Cgl9Cn0KCmZ1bmN0aW9u
      IGNoYW5nZVRleHQoIGVsLCBuZXdUZXh0ICkgewoJLy8gU2FmYXJpIHdvcmsgYXJv
      dW5kCglpZiAoIGVsLmlubmVyVGV4dCApIHsKCQllbC5pbm5lclRleHQgPSBuZXdU
      ZXh0OwoJfSBlbHNlIGlmICggZWwuZmlyc3RDaGlsZCAmJiBlbC5maXJzdENoaWxk
      Lm5vZGVWYWx1ZSApIHsKCQllbC5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IG5ld1Rl
      eHQ7Cgl9Cn0KCmZ1bmN0aW9uIHRvZ2dsZVRvYygpIHsKCXZhciB0b2NtYWluID0g
      ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd0b2MnICk7Cgl2YXIgdG9jID0gZG9j
      dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RvYycpLmdldEVsZW1lbnRzQnlUYWdOYW1l
      KCd1bCcpWzBdOwoJdmFyIHRvZ2dsZUxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50
      QnlJZCggJ3RvZ2dsZWxpbmsnICk7CgoJaWYgKCB0b2MgJiYgdG9nZ2xlTGluayAm
      JiB0b2Muc3R5bGUuZGlzcGxheSA9PSAnbm9uZScgKSB7CgkJY2hhbmdlVGV4dCgg
      dG9nZ2xlTGluaywgdG9jSGlkZVRleHQgKTsKCQl0b2Muc3R5bGUuZGlzcGxheSA9
      ICdibG9jayc7CgkJZG9jdW1lbnQuY29va2llID0gImhpZGV0b2M9MCI7CgkJdG9j
      bWFpbi5jbGFzc05hbWUgPSAndG9jJzsKCX0gZWxzZSB7CgkJY2hhbmdlVGV4dCgg
      dG9nZ2xlTGluaywgdG9jU2hvd1RleHQgKTsKCQl0b2Muc3R5bGUuZGlzcGxheSA9
      ICdub25lJzsKCQlkb2N1bWVudC5jb29raWUgPSAiaGlkZXRvYz0xIjsKCQl0b2Nt
      YWluLmNsYXNzTmFtZSA9ICd0b2MgdG9jaGlkZGVuJzsKCX0KfQoKdmFyIG13RWRp
      dEJ1dHRvbnMgPSBbXTsKdmFyIG13Q3VzdG9tRWRpdEJ1dHRvbnMgPSBbXTsgLy8g
      ZWcgdG8gYWRkIGluIE1lZGlhV2lraTpDb21tb24uanMKCmZ1bmN0aW9uIGVzY2Fw
      ZVF1b3RlcyggdGV4dCApIHsKCXZhciByZSA9IG5ldyBSZWdFeHAoICInIiwgImci
      ICk7Cgl0ZXh0ID0gdGV4dC5yZXBsYWNlKCByZSwgIlxcJyIgKTsKCXJlID0gbmV3
      IFJlZ0V4cCggIlxcbiIsICJnIiApOwoJdGV4dCA9IHRleHQucmVwbGFjZSggcmUs
      ICJcXG4iICk7CglyZXR1cm4gZXNjYXBlUXVvdGVzSFRNTCggdGV4dCApOwp9Cgpm
      dW5jdGlvbiBlc2NhcGVRdW90ZXNIVE1MKCB0ZXh0ICkgewoJdmFyIHJlID0gbmV3
      IFJlZ0V4cCggJyYnLCAiZyIgKTsKCXRleHQgPSB0ZXh0LnJlcGxhY2UoIHJlLCAi
      JmFtcDsiICk7CglyZSA9IG5ldyBSZWdFeHAoICciJywgImciICk7Cgl0ZXh0ID0g
      dGV4dC5yZXBsYWNlKCByZSwgIiZxdW90OyIgKTsKCXJlID0gbmV3IFJlZ0V4cCgg
      JzwnLCAiZyIgKTsKCXRleHQgPSB0ZXh0LnJlcGxhY2UoIHJlLCAiJmx0OyIgKTsK
      CXJlID0gbmV3IFJlZ0V4cCggJz4nLCAiZyIgKTsKCXRleHQgPSB0ZXh0LnJlcGxh
      Y2UoIHJlLCAiJmd0OyIgKTsKCXJldHVybiB0ZXh0Owp9CgovKioKICogU2V0IHRo
      ZSBhY2Nlc3NrZXkgcHJlZml4IGJhc2VkIG9uIGJyb3dzZXIgZGV0ZWN0aW9uLgog
      Ki8KdmFyIHRvb2x0aXBBY2Nlc3NLZXlQcmVmaXggPSAnYWx0LSc7CmlmICggaXNf
      b3BlcmEgKSB7Cgl0b29sdGlwQWNjZXNzS2V5UHJlZml4ID0gJ3NoaWZ0LWVzYy0n
      Owp9IGVsc2UgaWYgKCAhaXNfc2FmYXJpX3dpbiAmJiBpc19zYWZhcmkgJiYgd2Vi
      a2l0X3ZlcnNpb24gPiA1MjYgKSB7Cgl0b29sdGlwQWNjZXNzS2V5UHJlZml4ID0g
      J2N0cmwtYWx0LSc7Cn0gZWxzZSBpZiAoICFpc19zYWZhcmlfd2luICYmICggaXNf
      c2FmYXJpCgkJfHwgY2xpZW50UEMuaW5kZXhPZignbWFjJykgIT0gLTEKCQl8fCBj
      bGllbnRQQy5pbmRleE9mKCdrb25xdWVyb3InKSAhPSAtMSApICkgewoJdG9vbHRp
      cEFjY2Vzc0tleVByZWZpeCA9ICdjdHJsLSc7Cn0gZWxzZSBpZiAoIGlzX2ZmMiAp
      IHsKCXRvb2x0aXBBY2Nlc3NLZXlQcmVmaXggPSAnYWx0LXNoaWZ0LSc7Cn0KdmFy
      IHRvb2x0aXBBY2Nlc3NLZXlSZWdleHAgPSAvXFsoY3RybC0pPyhhbHQtKT8oc2hp
      ZnQtKT8oZXNjLSk/KC4pXF0kLzsKCi8qKgogKiBBZGQgdGhlIGFwcHJvcHJpYXRl
      IHByZWZpeCB0byB0aGUgYWNjZXNza2V5IHNob3duIGluIHRoZSB0b29sdGlwLgog
      KiBJZiB0aGUgbm9kZUxpc3QgcGFyYW1ldGVyIGlzIGdpdmVuLCBvbmx5IHRob3Nl
      IG5vZGVzIGFyZSB1cGRhdGVkOwogKiBvdGhlcndpc2UsIGFsbCB0aGUgbm9kZXMg
      dGhhdCB3aWxsIHByb2JhYmx5IGhhdmUgYWNjZXNza2V5cyBieQogKiBkZWZhdWx0
      IGFyZSB1cGRhdGVkLgogKgogKiBAcGFyYW0gQXJyYXkgbm9kZUxpc3QgLS0gbGlz
      dCBvZiBlbGVtZW50cyB0byB1cGRhdGUKICovCmZ1bmN0aW9uIHVwZGF0ZVRvb2x0
      aXBBY2Nlc3NLZXlzKCBub2RlTGlzdCApIHsKCWlmICggIW5vZGVMaXN0ICkgewoJ
      CS8vIFJhdGhlciB0aGFuIHNjYW4gYWxsIGxpbmtzIG9uIHRoZSB3aG9sZSBwYWdl
      LCB3ZSBjYW4ganVzdCBzY2FuIHRoZXNlCgkJLy8gY29udGFpbmVycyB3aGljaCBj
      b250YWluIHRoZSByZWxldmFudCBsaW5rcy4gVGhpcyBpcyByZWFsbHkganVzdCBh
      bgoJCS8vIG9wdGltaXphdGlvbiB0ZWNobmlxdWUuCgkJdmFyIGxpbmtDb250YWlu
      ZXJzID0gWwoJCQknY29sdW1uLW9uZScsIC8vIE1vbm9ib29rIGFuZCBNb2Rlcm4K
      CQkJJ2hlYWQnLCAncGFuZWwnLCAncC1sb2dvJyAvLyBWZWN0b3IKCQldOwoJCWZv
      ciAoIHZhciBpIGluIGxpbmtDb250YWluZXJzICkgewoJCQl2YXIgbGlua0NvbnRh
      aW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBsaW5rQ29udGFpbmVyc1tp
      XSApOwoJCQlpZiAoIGxpbmtDb250YWluZXIgKSB7CgkJCQl1cGRhdGVUb29sdGlw
      QWNjZXNzS2V5cyggbGlua0NvbnRhaW5lci5nZXRFbGVtZW50c0J5VGFnTmFtZSgg
      J2EnICkgKTsKCQkJfQoJCX0KCQkvLyB0aGVzZSBhcmUgcmFyZSBlbm91Z2ggdGhh
      dCBubyBzdWNoIG9wdGltaXphdGlvbiBpcyBuZWVkZWQKCQl1cGRhdGVUb29sdGlw
      QWNjZXNzS2V5cyggZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoICdpbnB1
      dCcgKSApOwoJCXVwZGF0ZVRvb2x0aXBBY2Nlc3NLZXlzKCBkb2N1bWVudC5nZXRF
      bGVtZW50c0J5VGFnTmFtZSggJ2xhYmVsJyApICk7CgkJcmV0dXJuOwoJfQoKCWZv
      ciAoIHZhciBpID0gMDsgaSA8IG5vZGVMaXN0Lmxlbmd0aDsgaSsrICkgewoJCXZh
      ciBlbGVtZW50ID0gbm9kZUxpc3RbaV07CgkJdmFyIHRpcCA9IGVsZW1lbnQuZ2V0
      QXR0cmlidXRlKCAndGl0bGUnICk7CgkJaWYgKCB0aXAgJiYgdG9vbHRpcEFjY2Vz
      c0tleVJlZ2V4cC5leGVjKCB0aXAgKSApIHsKCQkJdGlwID0gdGlwLnJlcGxhY2Uo
      dG9vbHRpcEFjY2Vzc0tleVJlZ2V4cCwKCQkJCQkgICdbJyArIHRvb2x0aXBBY2Nl
      c3NLZXlQcmVmaXggKyAiJDVdIik7CgkJCWVsZW1lbnQuc2V0QXR0cmlidXRlKCAn
      dGl0bGUnLCB0aXAgKTsKCQl9Cgl9Cn0KCi8qKgogKiBBZGQgYSBsaW5rIHRvIG9u
      ZSBvZiB0aGUgcG9ydGxldCBtZW51cyBvbiB0aGUgcGFnZSwgaW5jbHVkaW5nOgog
      KgogKiBwLWNhY3Rpb25zOiBDb250ZW50IGFjdGlvbnMgKHNob3duIGFzIHRhYnMg
      YWJvdmUgdGhlIG1haW4gY29udGVudCBpbiBNb25vYm9vaykKICogcC1wZXJzb25h
      bDogUGVyc29uYWwgdG9vbHMgKHNob3duIGF0IHRoZSB0b3AgcmlnaHQgb2YgdGhl
      IHBhZ2UgaW4gTW9ub2Jvb2spCiAqIHAtbmF2aWdhdGlvbjogTmF2aWdhdGlvbgog
      KiBwLXRiOiBUb29sYm94CiAqCiAqIFRoaXMgZnVuY3Rpb24gZXhpc3RzIGZvciB0
      aGUgY29udmVuaWVuY2Ugb2YgY3VzdG9tIEpTIGF1dGhvcnMuICBBbGwKICogYnV0
      IHRoZSBmaXJzdCB0aHJlZSBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbCwgdGhvdWdo
      IHByb3ZpZGluZyBhdAogKiBsZWFzdCBhbiBpZCBhbmQgYSB0b29sdGlwIGlzIHJl
      Y29tbWVuZGVkLgogKgogKiBCeSBkZWZhdWx0IHRoZSBuZXcgbGluayB3aWxsIGJl
      IGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuICBUbwogKiBhZGQgdGhlIGxp
      bmsgYmVmb3JlIGEgZ2l2ZW4gZXhpc3RpbmcgaXRlbSwgcGFzcyB0aGUgRE9NIG5v
      ZGUgb2YKICogdGhhdCBpdGVtIChlYXNpbHkgb2J0YWluZWQgd2l0aCBkb2N1bWVu
      dC5nZXRFbGVtZW50QnlJZCgpKSBhcyB0aGUKICogbmV4dG5vZGUgcGFyYW1ldGVy
      OyB0byBhZGQgdGhlIGxpbmsgX2FmdGVyXyBhbiBleGlzdGluZyBpdGVtLCBwYXNz
      CiAqIHRoZSBub2RlJ3MgbmV4dFNpYmxpbmcgaW5zdGVhZC4KICoKICogQHBhcmFt
      IFN0cmluZyBwb3J0bGV0IC0tIGlkIG9mIHRoZSB0YXJnZXQgcG9ydGxldCAoInAt
      Y2FjdGlvbnMiLCAicC1wZXJzb25hbCIsICJwLW5hdmlnYXRpb24iIG9yICJwLXRi
      IikKICogQHBhcmFtIFN0cmluZyBocmVmIC0tIGxpbmsgVVJMCiAqIEBwYXJhbSBT
      dHJpbmcgdGV4dCAtLSBsaW5rIHRleHQgKHdpbGwgYmUgYXV0b21hdGljYWxseSBs
      b3dlcmNhc2VkIGJ5IENTUyBmb3IgcC1jYWN0aW9ucyBpbiBNb25vYm9vaykKICog
      QHBhcmFtIFN0cmluZyBpZCAtLSBpZCBvZiB0aGUgbmV3IGl0ZW0sIHNob3VsZCBi
      ZSB1bmlxdWUgYW5kIHByZWZlcmFibHkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgcHJl
      Zml4ICgiY2EtIiwgInB0LSIsICJuLSIgb3IgInQtIikKICogQHBhcmFtIFN0cmlu
      ZyB0b29sdGlwIC0tIHRleHQgdG8gc2hvdyB3aGVuIGhvdmVyaW5nIG92ZXIgdGhl
      IGxpbmssIHdpdGhvdXQgYWNjZXNza2V5IHN1ZmZpeAogKiBAcGFyYW0gU3RyaW5n
      IGFjY2Vzc2tleSAtLSBhY2Nlc3NrZXkgdG8gYWN0aXZhdGUgdGhpcyBsaW5rIChv
      bmUgY2hhcmFjdGVyLCB0cnkgdG8gYXZvaWQgY29uZmxpY3RzKQogKiBAcGFyYW0g
      Tm9kZSBuZXh0bm9kZSAtLSB0aGUgRE9NIG5vZGUgYmVmb3JlIHdoaWNoIHRoZSBu
      ZXcgaXRlbSBzaG91bGQgYmUgYWRkZWQsIHNob3VsZCBiZSBhbm90aGVyIGl0ZW0g
      aW4gdGhlIHNhbWUgbGlzdAogKgogKiBAcmV0dXJuIE5vZGUgLS0gdGhlIERPTSBu
      b2RlIG9mIHRoZSBuZXcgaXRlbSAoYW4gTEkgZWxlbWVudCkgb3IgbnVsbAogKi8K
      ZnVuY3Rpb24gYWRkUG9ydGxldExpbmsoIHBvcnRsZXQsIGhyZWYsIHRleHQsIGlk
      LCB0b29sdGlwLCBhY2Nlc3NrZXksIG5leHRub2RlICkgewoJdmFyIHJvb3QgPSBk
      b2N1bWVudC5nZXRFbGVtZW50QnlJZCggcG9ydGxldCApOwoJaWYgKCAhcm9vdCAp
      IHsKCQlyZXR1cm4gbnVsbDsKCX0KCXZhciBub2RlID0gcm9vdC5nZXRFbGVtZW50
      c0J5VGFnTmFtZSggJ3VsJyApWzBdOwoJaWYgKCAhbm9kZSApIHsKCQlyZXR1cm4g
      bnVsbDsKCX0KCgkvLyB1bmhpZGUgcG9ydGxldCBpZiBpdCB3YXMgaGlkZGVuIGJl
      Zm9yZQoJcm9vdC5jbGFzc05hbWUgPSByb290LmNsYXNzTmFtZS5yZXBsYWNlKCAv
      KF58ICllbXB0eVBvcnRsZXQoIHwkKS8sICIkMiIgKTsKCgl2YXIgc3BhbiA9IGRv
      Y3VtZW50LmNyZWF0ZUVsZW1lbnQoICdzcGFuJyApOwoJc3Bhbi5hcHBlbmRDaGls
      ZCggZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIHRleHQgKSApOwoKCXZhciBsaW5r
      ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2EnICk7CglsaW5rLmFwcGVuZENo
      aWxkKCBzcGFuICk7CglsaW5rLmhyZWYgPSBocmVmOwoKCXZhciBpdGVtID0gZG9j
      dW1lbnQuY3JlYXRlRWxlbWVudCggJ2xpJyApOwoJaXRlbS5hcHBlbmRDaGlsZCgg
      bGluayApOwoJaWYgKCBpZCApIHsKCQlpdGVtLmlkID0gaWQ7Cgl9CgoJaWYgKCBh
      Y2Nlc3NrZXkgKSB7CgkJbGluay5zZXRBdHRyaWJ1dGUoICdhY2Nlc3NrZXknLCBh
      Y2Nlc3NrZXkgKTsKCQl0b29sdGlwICs9ICcgWycgKyBhY2Nlc3NrZXkgKyAnXSc7
      Cgl9CglpZiAoIHRvb2x0aXAgKSB7CgkJbGluay5zZXRBdHRyaWJ1dGUoICd0aXRs
      ZScsIHRvb2x0aXAgKTsKCX0KCWlmICggYWNjZXNza2V5ICYmIHRvb2x0aXAgKSB7
      CgkJdXBkYXRlVG9vbHRpcEFjY2Vzc0tleXMoIG5ldyBBcnJheSggbGluayApICk7
      Cgl9CgoJaWYgKCBuZXh0bm9kZSAmJiBuZXh0bm9kZS5wYXJlbnROb2RlID09IG5v
      ZGUgKSB7CgkJbm9kZS5pbnNlcnRCZWZvcmUoIGl0ZW0sIG5leHRub2RlICk7Cgl9
      IGVsc2UgewoJCW5vZGUuYXBwZW5kQ2hpbGQoIGl0ZW0gKTsgIC8vIElFIGNvbXBh
      dGliaWxpdHkgKD8pCgl9CgoJcmV0dXJuIGl0ZW07Cn0KCmZ1bmN0aW9uIGdldElu
      bmVyVGV4dCggZWwgKSB7CglpZiAoIHR5cGVvZiBlbCA9PSAnc3RyaW5nJyApIHsK
      CQlyZXR1cm4gZWw7Cgl9CglpZiAoIHR5cGVvZiBlbCA9PSAndW5kZWZpbmVkJyAp
      IHsKCQlyZXR1cm4gZWw7Cgl9CglpZiAoIGVsLnRleHRDb250ZW50ICkgewoJCXJl
      dHVybiBlbC50ZXh0Q29udGVudDsgLy8gbm90IG5lZWRlZCBidXQgaXQgaXMgZmFz
      dGVyCgl9CglpZiAoIGVsLmlubmVyVGV4dCApIHsKCQlyZXR1cm4gZWwuaW5uZXJU
      ZXh0OyAvLyBJRSBkb2Vzbid0IGhhdmUgdGV4dENvbnRlbnQKCX0KCXZhciBzdHIg
      PSAnJzsKCgl2YXIgY3MgPSBlbC5jaGlsZE5vZGVzOwoJdmFyIGwgPSBjcy5sZW5n
      dGg7Cglmb3IgKCB2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSB7CgkJc3dpdGNoICgg
      Y3NbaV0ubm9kZVR5cGUgKSB7CgkJCWNhc2UgMTogLy8gRUxFTUVOVF9OT0RFCgkJ
      CQlzdHIgKz0gdHNfZ2V0SW5uZXJUZXh0KCBjc1tpXSApOwoJCQkJYnJlYWs7CgkJ
      CWNhc2UgMzoJLy8gVEVYVF9OT0RFCgkJCQlzdHIgKz0gY3NbaV0ubm9kZVZhbHVl
      OwoJCQkJYnJlYWs7CgkJfQoJfQoJcmV0dXJuIHN0cjsKfQoKLyogRHVtbXkgZm9y
      IGRlcHJlY2F0ZWQgZnVuY3Rpb24gKi8KZnVuY3Rpb24gYWtleXR0KCBkb0lkICkg
      ewp9Cgp2YXIgY2hlY2tib3hlczsKdmFyIGxhc3RDaGVja2JveDsKCmZ1bmN0aW9u
      IHNldHVwQ2hlY2tib3hTaGlmdENsaWNrKCkgewoJY2hlY2tib3hlcyA9IFtdOwoJ
      bGFzdENoZWNrYm94ID0gbnVsbDsKCXZhciBpbnB1dHMgPSBkb2N1bWVudC5nZXRF
      bGVtZW50c0J5VGFnTmFtZSggJ2lucHV0JyApOwoJYWRkQ2hlY2tib3hDbGlja0hh
      bmRsZXJzKCBpbnB1dHMgKTsKfQoKZnVuY3Rpb24gYWRkQ2hlY2tib3hDbGlja0hh
      bmRsZXJzKCBpbnB1dHMsIHN0YXJ0ICkgewoJaWYgKCAhc3RhcnQgKSB7CgkJc3Rh
      cnQgPSAwOwoJfQoKCXZhciBmaW5pc2ggPSBzdGFydCArIDI1MDsKCWlmICggZmlu
      aXNoID4gaW5wdXRzLmxlbmd0aCApIHsKCQlmaW5pc2ggPSBpbnB1dHMubGVuZ3Ro
      OwoJfQoKCWZvciAoIHZhciBpID0gc3RhcnQ7IGkgPCBmaW5pc2g7IGkrKyApIHsK
      CQl2YXIgY2IgPSBpbnB1dHNbaV07CgkJaWYgKCAhY2IudHlwZSB8fCBjYi50eXBl
      LnRvTG93ZXJDYXNlKCkgIT0gJ2NoZWNrYm94JyApIHsKCQkJY29udGludWU7CgkJ
      fQoJCXZhciBlbmQgPSBjaGVja2JveGVzLmxlbmd0aDsKCQljaGVja2JveGVzW2Vu
      ZF0gPSBjYjsKCQljYi5pbmRleCA9IGVuZDsKCQljYi5vbmNsaWNrID0gY2hlY2ti
      b3hDbGlja0hhbmRsZXI7Cgl9CgoJaWYgKCBmaW5pc2ggPCBpbnB1dHMubGVuZ3Ro
      ICkgewoJCXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgewoJCQlhZGRDaGVja2JveENs
      aWNrSGFuZGxlcnMoIGlucHV0cywgZmluaXNoICk7CgkJfSwgMjAwICk7Cgl9Cn0K
      CmZ1bmN0aW9uIGNoZWNrYm94Q2xpY2tIYW5kbGVyKCBlICkgewoJaWYgKCB0eXBl
      b2YgZSA9PSAndW5kZWZpbmVkJyApIHsKCQllID0gd2luZG93LmV2ZW50OwoJfQoJ
      aWYgKCAhZS5zaGlmdEtleSB8fCBsYXN0Q2hlY2tib3ggPT09IG51bGwgKSB7CgkJ
      bGFzdENoZWNrYm94ID0gdGhpcy5pbmRleDsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXZh
      ciBlbmRTdGF0ZSA9IHRoaXMuY2hlY2tlZDsKCXZhciBzdGFydCwgZmluaXNoOwoJ
      aWYgKCB0aGlzLmluZGV4IDwgbGFzdENoZWNrYm94ICkgewoJCXN0YXJ0ID0gdGhp
      cy5pbmRleCArIDE7CgkJZmluaXNoID0gbGFzdENoZWNrYm94OwoJfSBlbHNlIHsK
      CQlzdGFydCA9IGxhc3RDaGVja2JveDsKCQlmaW5pc2ggPSB0aGlzLmluZGV4IC0g
      MTsKCX0KCWZvciAoIHZhciBpID0gc3RhcnQ7IGkgPD0gZmluaXNoOyArK2kgKSB7
      CgkJY2hlY2tib3hlc1tpXS5jaGVja2VkID0gZW5kU3RhdGU7CgkJaWYoIGkgPiBz
      dGFydCAmJiB0eXBlb2YgY2hlY2tib3hlc1tpXS5vbmNoYW5nZSA9PSAnZnVuY3Rp
      b24nICkgewoJCQljaGVja2JveGVzW2ldLm9uY2hhbmdlKCk7IC8vIGZpcmUgdHJp
      Z2dlcnMKCQl9Cgl9CglsYXN0Q2hlY2tib3ggPSB0aGlzLmluZGV4OwoJcmV0dXJu
      IHRydWU7Cn0KCgovKgoJV3JpdHRlbiBieSBKb25hdGhhbiBTbm9vaywgaHR0cDov
      L3d3dy5zbm9vay5jYS9qb25hdGhhbgoJQWRkLW9ucyBieSBSb2JlcnQgTnltYW4s
      IGh0dHA6Ly93d3cucm9iZXJ0bnltYW4uY29tCglBdXRob3Igc2F5cyAiVGhlIGNy
      ZWRpdCBjb21tZW50IGlzIGFsbCBpdCB0YWtlcywgbm8gbGljZW5zZS4gR28gY3Jh
      enkgd2l0aCBpdCE6LSkiCglGcm9tIGh0dHA6Ly93d3cucm9iZXJ0bnltYW4uY29t
      LzIwMDUvMTEvMDcvdGhlLXVsdGltYXRlLWdldGVsZW1lbnRzYnljbGFzc25hbWUv
      CiovCmZ1bmN0aW9uIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoIG9FbG0sIHN0clRh
      Z05hbWUsIG9DbGFzc05hbWVzICkgewoJdmFyIGFyclJldHVybkVsZW1lbnRzID0g
      bmV3IEFycmF5KCk7CglpZiAoIHR5cGVvZiggb0VsbS5nZXRFbGVtZW50c0J5Q2xh
      c3NOYW1lICkgPT0gJ2Z1bmN0aW9uJyApIHsKCQkvKiBVc2UgYSBuYXRpdmUgaW1w
      bGVtZW50YXRpb24gd2hlcmUgcG9zc2libGUgRkYzLCBTYWYzLjIsIE9wZXJhIDku
      NSAqLwoJCXZhciBhcnJOYXRpdmVSZXR1cm4gPSBvRWxtLmdldEVsZW1lbnRzQnlD
      bGFzc05hbWUoIG9DbGFzc05hbWVzICk7CgkJaWYgKCBzdHJUYWdOYW1lID09ICcq
      JyApIHsKCQkJcmV0dXJuIGFyck5hdGl2ZVJldHVybjsKCQl9CgkJZm9yICggdmFy
      IGggPSAwOyBoIDwgYXJyTmF0aXZlUmV0dXJuLmxlbmd0aDsgaCsrICkgewoJCQlp
      ZiggYXJyTmF0aXZlUmV0dXJuW2hdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PSBz
      dHJUYWdOYW1lLnRvTG93ZXJDYXNlKCkgKSB7CgkJCQlhcnJSZXR1cm5FbGVtZW50
      c1thcnJSZXR1cm5FbGVtZW50cy5sZW5ndGhdID0gYXJyTmF0aXZlUmV0dXJuW2hd
      OwoJCQl9CgkJfQoJCXJldHVybiBhcnJSZXR1cm5FbGVtZW50czsKCX0KCXZhciBh
      cnJFbGVtZW50cyA9ICggc3RyVGFnTmFtZSA9PSAnKicgJiYgb0VsbS5hbGwgKSA/
      IG9FbG0uYWxsIDogb0VsbS5nZXRFbGVtZW50c0J5VGFnTmFtZSggc3RyVGFnTmFt
      ZSApOwoJdmFyIGFyclJlZ0V4cENsYXNzTmFtZXMgPSBuZXcgQXJyYXkoKTsKCWlm
      KCB0eXBlb2Ygb0NsYXNzTmFtZXMgPT0gJ29iamVjdCcgKSB7CgkJZm9yKCB2YXIg
      aSA9IDA7IGkgPCBvQ2xhc3NOYW1lcy5sZW5ndGg7IGkrKyApIHsKCQkJYXJyUmVn
      RXhwQ2xhc3NOYW1lc1thcnJSZWdFeHBDbGFzc05hbWVzLmxlbmd0aF0gPQoJCQkJ
      bmV3IFJlZ0V4cCgiKF58XFxzKSIgKyBvQ2xhc3NOYW1lc1tpXS5yZXBsYWNlKC9c
      LS9nLCAiXFwtIikgKyAiKFxcc3wkKSIpOwoJCX0KCX0gZWxzZSB7CgkJYXJyUmVn
      RXhwQ2xhc3NOYW1lc1thcnJSZWdFeHBDbGFzc05hbWVzLmxlbmd0aF0gPQoJCQlu
      ZXcgUmVnRXhwKCIoXnxcXHMpIiArIG9DbGFzc05hbWVzLnJlcGxhY2UoL1wtL2cs
      ICJcXC0iKSArICIoXFxzfCQpIik7Cgl9Cgl2YXIgb0VsZW1lbnQ7Cgl2YXIgYk1h
      dGNoZXNBbGw7Cglmb3IoIHZhciBqID0gMDsgaiA8IGFyckVsZW1lbnRzLmxlbmd0
      aDsgaisrICkgewoJCW9FbGVtZW50ID0gYXJyRWxlbWVudHNbal07CgkJYk1hdGNo
      ZXNBbGwgPSB0cnVlOwoJCWZvciggdmFyIGsgPSAwOyBrIDwgYXJyUmVnRXhwQ2xh
      c3NOYW1lcy5sZW5ndGg7IGsrKyApIHsKCQkJaWYoICFhcnJSZWdFeHBDbGFzc05h
      bWVzW2tdLnRlc3QoIG9FbGVtZW50LmNsYXNzTmFtZSApICkgewoJCQkJYk1hdGNo
      ZXNBbGwgPSBmYWxzZTsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJCWlmKCBiTWF0Y2hl
      c0FsbCApIHsKCQkJYXJyUmV0dXJuRWxlbWVudHNbYXJyUmV0dXJuRWxlbWVudHMu
      bGVuZ3RoXSA9IG9FbGVtZW50OwoJCX0KCX0KCXJldHVybiAoIGFyclJldHVybkVs
      ZW1lbnRzICk7Cn0KCmZ1bmN0aW9uIHJlZGlyZWN0VG9GcmFnbWVudCggZnJhZ21l
      bnQgKSB7Cgl2YXIgbWF0Y2ggPSBuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9B
      cHBsZVdlYktpdFwvKFxkKykvKTsKCWlmICggbWF0Y2ggKSB7CgkJdmFyIHdlYktp
      dFZlcnNpb24gPSBwYXJzZUludCggbWF0Y2hbMV0gKTsKCQlpZiAoIHdlYktpdFZl
      cnNpb24gPCA0MjAgKSB7CgkJCS8vIFJlbGVhc2VkIFNhZmFyaSB3LyBXZWJLaXQg
      NDE4LjkuMSBtZXNzZXMgdXAgaG9ycmlibHkKCQkJLy8gTmlnaHRsaWVzIG9mIDQy
      MCsgYXJlIG9rCgkJCXJldHVybjsKCQl9Cgl9CglpZiAoIGlzX2dlY2tvICkgewoJ
      CS8vIE1vemlsbGEgbmVlZHMgdG8gd2FpdCB1bnRpbCBhZnRlciBsb2FkLCBvdGhl
      cndpc2UgdGhlIHdpbmRvdyBkb2Vzbid0IHNjcm9sbAoJCWFkZE9ubG9hZEhvb2so
      ZnVuY3Rpb24oKSB7CgkJCWlmICggd2luZG93LmxvY2F0aW9uLmhhc2ggPT0gJycg
      KSB7CgkJCQl3aW5kb3cubG9jYXRpb24uaGFzaCA9IGZyYWdtZW50OwoJCQl9CgkJ
      fSk7Cgl9IGVsc2UgewoJCWlmICggd2luZG93LmxvY2F0aW9uLmhhc2ggPT0gJycg
      KSB7CgkJCXdpbmRvdy5sb2NhdGlvbi5oYXNoID0gZnJhZ21lbnQ7CgkJfQoJfQp9
      CgovKgogKiBUYWJsZSBzb3J0aW5nIHNjcmlwdCBiYXNlZCBvbiBvbmUgKGMpIDE5
      OTctMjAwNiBTdHVhcnQgTGFuZ3JpZGdlIGFuZCBKb29zdAogKiBkZSBWYWxrOgog
      KiBodHRwOi8vd3d3Lmpvb3N0ZGV2YWxrLm5sL2NvZGUvc29ydGFibGUtdGFibGUv
      CiAqIGh0dHA6Ly93d3cua3J5b2dlbml4Lm9yZy9jb2RlL2Jyb3dzZXIvc29ydHRh
      YmxlLwogKgogKiBAdG9kbyBkb24ndCBicmVhayBvbiBjb2xzcGFucy9yb3dzcGFu
      cyAoYnVnIDgwMjgpCiAqIEB0b2RvIGxhbmd1YWdlLXNwZWNpZmljIGRpZ2l0IGdy
      b3VwaW5nL2RlY2ltYWxzIChidWcgODA2MykKICogQHRvZG8gc3VwcG9ydCBhbGwg
      YWNjZXB0ZWQgZGF0ZSBmb3JtYXRzIChidWcgODIyNikKICovCgp2YXIgdHNfaW1h
      Z2VfcGF0aCA9IHN0eWxlcGF0aCArICcvY29tbW9uL2ltYWdlcy8nOwp2YXIgdHNf
      aW1hZ2VfdXAgPSAnc29ydF91cC5naWYnOwp2YXIgdHNfaW1hZ2VfZG93biA9ICdz
      b3J0X2Rvd24uZ2lmJzsKdmFyIHRzX2ltYWdlX25vbmUgPSAnc29ydF9ub25lLmdp
      Zic7CnZhciB0c19ldXJvcGVhbmRhdGUgPSB3Z0NvbnRlbnRMYW5ndWFnZSAhPSAn
      ZW4nOyAvLyBUaGUgbm9uLUFtZXJpY2FuLWluY2xpbmVkIGNhbiBjaGFuZ2UgdG8g
      InRydWUiCnZhciB0c19hbHRlcm5hdGVfcm93X2NvbG9ycyA9IGZhbHNlOwp2YXIg
      dHNfbnVtYmVyX3RyYW5zZm9ybV90YWJsZSA9IG51bGw7CnZhciB0c19udW1iZXJf
      cmVnZXggPSBudWxsOwoKZnVuY3Rpb24gc29ydGFibGVzX2luaXQoKSB7Cgl2YXIg
      aWRudW0gPSAwOwoJLy8gRmluZCBhbGwgdGFibGVzIHdpdGggY2xhc3Mgc29ydGFi
      bGUgYW5kIG1ha2UgdGhlbSBzb3J0YWJsZQoJdmFyIHRhYmxlcyA9IGdldEVsZW1l
      bnRzQnlDbGFzc05hbWUoIGRvY3VtZW50LCAndGFibGUnLCAnc29ydGFibGUnICk7
      Cglmb3IgKCB2YXIgdGkgPSAwOyB0aSA8IHRhYmxlcy5sZW5ndGggOyB0aSsrICkg
      ewoJCWlmICggIXRhYmxlc1t0aV0uaWQgKSB7CgkJCXRhYmxlc1t0aV0uc2V0QXR0
      cmlidXRlKCAnaWQnLCAnc29ydGFibGVfdGFibGVfaWRfJyArIGlkbnVtICk7CgkJ
      CSsraWRudW07CgkJfQoJCXRzX21ha2VTb3J0YWJsZSggdGFibGVzW3RpXSApOwoJ
      fQp9CgpmdW5jdGlvbiB0c19tYWtlU29ydGFibGUoIHRhYmxlICkgewoJdmFyIGZp
      cnN0Um93OwoJaWYgKCB0YWJsZS5yb3dzICYmIHRhYmxlLnJvd3MubGVuZ3RoID4g
      MCApIHsKCQlpZiAoIHRhYmxlLnRIZWFkICYmIHRhYmxlLnRIZWFkLnJvd3MubGVu
      Z3RoID4gMCApIHsKCQkJZmlyc3RSb3cgPSB0YWJsZS50SGVhZC5yb3dzW3RhYmxl
      LnRIZWFkLnJvd3MubGVuZ3RoLTFdOwoJCX0gZWxzZSB7CgkJCWZpcnN0Um93ID0g
      dGFibGUucm93c1swXTsKCQl9Cgl9CglpZiAoICFmaXJzdFJvdyApIHsKCQlyZXR1
      cm47Cgl9CgoJLy8gV2UgaGF2ZSBhIGZpcnN0IHJvdzogYXNzdW1lIGl0J3MgdGhl
      IGhlYWRlciwgYW5kIG1ha2UgaXRzIGNvbnRlbnRzIGNsaWNrYWJsZSBsaW5rcwoJ
      Zm9yICggdmFyIGkgPSAwOyBpIDwgZmlyc3RSb3cuY2VsbHMubGVuZ3RoOyBpKysg
      KSB7CgkJdmFyIGNlbGwgPSBmaXJzdFJvdy5jZWxsc1tpXTsKCQlpZiAoICgnICcg
      KyBjZWxsLmNsYXNzTmFtZSArICcgJykuaW5kZXhPZignIHVuc29ydGFibGUgJykg
      PT0gLTEgKSB7CgkJCWNlbGwuaW5uZXJIVE1MICs9ICc8YSBocmVmPSIjIiBjbGFz
      cz0ic29ydGhlYWRlciIgJwoJCQkJKyAnb25jbGljaz0idHNfcmVzb3J0VGFibGUo
      dGhpcyk7cmV0dXJuIGZhbHNlOyI+JwoJCQkJKyAnPHNwYW4gY2xhc3M9InNvcnRh
      cnJvdyI+JwoJCQkJKyAnPGltZyBzcmM9IicKCQkJCSsgdHNfaW1hZ2VfcGF0aAoJ
      CQkJKyB0c19pbWFnZV9ub25lCgkJCQkrICciIGFsdD0iJmRhcnI7Ii8+PC9zcGFu
      PjwvYT4nOwoJCX0KCX0KCWlmICggdHNfYWx0ZXJuYXRlX3Jvd19jb2xvcnMgKSB7
      CgkJdHNfYWx0ZXJuYXRlKCB0YWJsZSApOwoJfQp9CgpmdW5jdGlvbiB0c19nZXRJ
      bm5lclRleHQoIGVsICkgewoJcmV0dXJuIGdldElubmVyVGV4dCggZWwgKTsKfQoK
      ZnVuY3Rpb24gdHNfcmVzb3J0VGFibGUoIGxuayApIHsKCS8vIGdldCB0aGUgc3Bh
      bgoJdmFyIHNwYW4gPSBsbmsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsw
      XTsKCgl2YXIgdGQgPSBsbmsucGFyZW50Tm9kZTsKCXZhciB0ciA9IHRkLnBhcmVu
      dE5vZGU7Cgl2YXIgY29sdW1uID0gdGQuY2VsbEluZGV4OwoKCXZhciB0YWJsZSA9
      IHRyLnBhcmVudE5vZGU7Cgl3aGlsZSAoIHRhYmxlICYmICEoIHRhYmxlLnRhZ05h
      bWUgJiYgdGFibGUudGFnTmFtZS50b0xvd2VyQ2FzZSgpID09ICd0YWJsZScgKSAp
      IHsKCQl0YWJsZSA9IHRhYmxlLnBhcmVudE5vZGU7Cgl9CglpZiAoICF0YWJsZSAp
      IHsKCQlyZXR1cm47Cgl9CgoJaWYgKCB0YWJsZS5yb3dzLmxlbmd0aCA8PSAxICkg
      ewoJCXJldHVybjsKCX0KCgkvLyBHZW5lcmF0ZSB0aGUgbnVtYmVyIHRyYW5zZm9y
      bSB0YWJsZSBpZiBpdCdzIG5vdCBkb25lIGFscmVhZHkKCWlmICggdHNfbnVtYmVy
      X3RyYW5zZm9ybV90YWJsZSA9PT0gbnVsbCApIHsKCQl0c19pbml0VHJhbnNmb3Jt
      VGFibGUoKTsKCX0KCgkvLyBXb3JrIG91dCBhIHR5cGUgZm9yIHRoZSBjb2x1bW4K
      CS8vIFNraXAgdGhlIGZpcnN0IHJvdyBpZiB0aGF0J3Mgd2hlcmUgdGhlIGhlYWRp
      bmdzIGFyZQoJdmFyIHJvd1N0YXJ0ID0gKCB0YWJsZS50SGVhZCAmJiB0YWJsZS50
      SGVhZC5yb3dzLmxlbmd0aCA+IDAgPyAwIDogMSApOwoKCXZhciBpdG0gPSAnJzsK
      CWZvciAoIHZhciBpID0gcm93U3RhcnQ7IGkgPCB0YWJsZS5yb3dzLmxlbmd0aDsg
      aSsrICkgewoJCWlmICggdGFibGUucm93c1tpXS5jZWxscy5sZW5ndGggPiBjb2x1
      bW4gKSB7CgkJCWl0bSA9IHRzX2dldElubmVyVGV4dCh0YWJsZS5yb3dzW2ldLmNl
      bGxzW2NvbHVtbl0pOwoJCQlpdG0gPSBpdG0ucmVwbGFjZSgvXltcc1x4YTBdKy8s
      ICcnKS5yZXBsYWNlKC9bXHNceGEwXSskLywgJycpOwoJCQlpZiAoIGl0bSAhPSAn
      JyApIHsKCQkJCWJyZWFrOwoJCQl9CgkJfQoJfQoKCS8vIFRPRE86IGJ1ZyA4MjI2
      LCBsb2NhbGlzZWQgZGF0ZSBmb3JtYXRzCgl2YXIgc29ydGZuID0gdHNfc29ydF9n
      ZW5lcmljOwoJdmFyIHByZXByb2Nlc3NvciA9IHRzX3RvTG93ZXJDYXNlOwoJaWYg
      KCAvXlxkXGRbXC8uIC1dW2EtekEtWl17M31bXC8uIC1dXGRcZFxkXGQkLy50ZXN0
      KCBpdG0gKSApIHsKCQlwcmVwcm9jZXNzb3IgPSB0c19kYXRlVG9Tb3J0S2V5OwoJ
      fSBlbHNlIGlmICggL15cZFxkW1wvLi1dXGRcZFtcLy4tXVxkXGRcZFxkJC8udGVz
      dCggaXRtICkgKSB7CgkJcHJlcHJvY2Vzc29yID0gdHNfZGF0ZVRvU29ydEtleTsK
      CX0gZWxzZSBpZiAoIC9eXGRcZFtcLy4tXVxkXGRbXC8uLV1cZFxkJC8udGVzdCgg
      aXRtICkgKSB7CgkJcHJlcHJvY2Vzc29yID0gdHNfZGF0ZVRvU29ydEtleTsKCQkv
      LyAobWludXMgc2lnbikoW3BvdW5kIGRvbGxhciBldXJvIHllbiBjdXJyZW5jeV18
      Y2VudHMpCgl9IGVsc2UgaWYgKCAvKF4oWy1cdTIyMTJdICopP1tcdTAwYTMkXHUy
      MGFjXHUwMGE0XHUwMGE1XXxcdTAwYTIkKS8udGVzdCggaXRtICkgKSB7CgkJcHJl
      cHJvY2Vzc29yID0gdHNfY3VycmVuY3lUb1NvcnRLZXk7Cgl9IGVsc2UgaWYgKCB0
      c19udW1iZXJfcmVnZXgudGVzdCggaXRtICkgKSB7CgkJcHJlcHJvY2Vzc29yID0g
      dHNfcGFyc2VGbG9hdDsKCX0KCgl2YXIgcmV2ZXJzZSA9ICggc3Bhbi5nZXRBdHRy
      aWJ1dGUoICdzb3J0ZGlyJyApID09ICdkb3duJyApOwoKCXZhciBuZXdSb3dzID0g
      bmV3IEFycmF5KCk7Cgl2YXIgc3RhdGljUm93cyA9IG5ldyBBcnJheSgpOwoJZm9y
      ICggdmFyIGogPSByb3dTdGFydDsgaiA8IHRhYmxlLnJvd3MubGVuZ3RoOyBqKysg
      KSB7CgkJdmFyIHJvdyA9IHRhYmxlLnJvd3Nbal07CgkJaWYoICgnICcgKyByb3cu
      Y2xhc3NOYW1lICsgJyAnKS5pbmRleE9mKCcgdW5zb3J0YWJsZSAnKSA8IDAgKSB7
      CgkJCXZhciBrZXlUZXh0ID0gdHNfZ2V0SW5uZXJUZXh0KCByb3cuY2VsbHNbY29s
      dW1uXSApOwoJCQlpZigga2V5VGV4dCA9PT0gdW5kZWZpbmVkICkgewoJCQkJa2V5
      VGV4dCA9ICcnOyAKCQkJfQoJCQl2YXIgb2xkSW5kZXggPSAoIHJldmVyc2UgPyAt
      aiA6IGogKTsKCQkJdmFyIHByZXByb2Nlc3NlZCA9IHByZXByb2Nlc3Nvcigga2V5
      VGV4dC5yZXBsYWNlKC9eW1xzXHhhMF0rLywgJycpLnJlcGxhY2UoL1tcc1x4YTBd
      KyQvLCAnJykgKTsKCgkJCW5ld1Jvd3NbbmV3Um93cy5sZW5ndGhdID0gbmV3IEFy
      cmF5KCByb3csIHByZXByb2Nlc3NlZCwgb2xkSW5kZXggKTsKCQl9IGVsc2UgewoJ
      CQlzdGF0aWNSb3dzW3N0YXRpY1Jvd3MubGVuZ3RoXSA9IG5ldyBBcnJheSggcm93
      LCBmYWxzZSwgai1yb3dTdGFydCApOwoJCX0KCX0KCgluZXdSb3dzLnNvcnQoIHNv
      cnRmbiApOwoKCXZhciBhcnJvd0hUTUw7CglpZiAoIHJldmVyc2UgKSB7CgkJYXJy
      b3dIVE1MID0gJzxpbWcgc3JjPSInICsgdHNfaW1hZ2VfcGF0aCArIHRzX2ltYWdl
      X2Rvd24gKyAnIiBhbHQ9IiZkYXJyOyIvPic7CgkJbmV3Um93cy5yZXZlcnNlKCk7
      CgkJc3Bhbi5zZXRBdHRyaWJ1dGUoICdzb3J0ZGlyJywgJ3VwJyApOwoJfSBlbHNl
      IHsKCQlhcnJvd0hUTUwgPSAnPGltZyBzcmM9IicgKyB0c19pbWFnZV9wYXRoICsg
      dHNfaW1hZ2VfdXAgKyAnIiBhbHQ9IiZ1YXJyOyIvPic7CgkJc3Bhbi5zZXRBdHRy
      aWJ1dGUoICdzb3J0ZGlyJywgJ2Rvd24nICk7Cgl9CgoJZm9yICggdmFyIGkgPSAw
      OyBpIDwgc3RhdGljUm93cy5sZW5ndGg7IGkrKyApIHsKCQl2YXIgcm93ID0gc3Rh
      dGljUm93c1tpXTsKCQluZXdSb3dzLnNwbGljZSggcm93WzJdLCAwLCByb3cgKTsK
      CX0KCgkvLyBXZSBhcHBlbmRDaGlsZCByb3dzIHRoYXQgYWxyZWFkeSBleGlzdCB0
      byB0aGUgdGJvZHksIHNvIGl0IG1vdmVzIHRoZW0gcmF0aGVyIHRoYW4gY3JlYXRp
      bmcgbmV3IG9uZXMKCS8vIGRvbid0IGRvIHNvcnRib3R0b20gcm93cwoJZm9yICgg
      dmFyIGkgPSAwOyBpIDwgbmV3Um93cy5sZW5ndGg7IGkrKyApIHsKCQlpZiAoICgg
      JyAnICsgbmV3Um93c1tpXVswXS5jbGFzc05hbWUgKyAnICcpLmluZGV4T2YoJyBz
      b3J0Ym90dG9tICcpID09IC0xICkgewoJCQl0YWJsZS50Qm9kaWVzWzBdLmFwcGVu
      ZENoaWxkKCBuZXdSb3dzW2ldWzBdICk7CgkJfQoJfQoJLy8gZG8gc29ydGJvdHRv
      bSByb3dzIG9ubHkKCWZvciAoIHZhciBpID0gMDsgaSA8IG5ld1Jvd3MubGVuZ3Ro
      OyBpKysgKSB7CgkJaWYgKCAoICcgJyArIG5ld1Jvd3NbaV1bMF0uY2xhc3NOYW1l
      ICsgJyAnKS5pbmRleE9mKCcgc29ydGJvdHRvbSAnKSAhPSAtMSApIHsKCQkJdGFi
      bGUudEJvZGllc1swXS5hcHBlbmRDaGlsZCggbmV3Um93c1tpXVswXSApOwoJCX0K
      CX0KCgkvLyBEZWxldGUgYW55IG90aGVyIGFycm93cyB0aGVyZSBtYXkgYmUgc2hv
      d2luZwoJdmFyIHNwYW5zID0gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSggdHIsICdz
      cGFuJywgJ3NvcnRhcnJvdycgKTsKCWZvciAoIHZhciBpID0gMDsgaSA8IHNwYW5z
      Lmxlbmd0aDsgaSsrICkgewoJCXNwYW5zW2ldLmlubmVySFRNTCA9ICc8aW1nIHNy
      Yz0iJyArIHRzX2ltYWdlX3BhdGggKyB0c19pbWFnZV9ub25lICsgJyIgYWx0PSIm
      ZGFycjsiLz4nOwoJfQoJc3Bhbi5pbm5lckhUTUwgPSBhcnJvd0hUTUw7CgoJaWYg
      KCB0c19hbHRlcm5hdGVfcm93X2NvbG9ycyApIHsKCQl0c19hbHRlcm5hdGUoIHRh
      YmxlICk7Cgl9Cn0KCmZ1bmN0aW9uIHRzX2luaXRUcmFuc2Zvcm1UYWJsZSgpIHsK
      CWlmICggdHlwZW9mIHdnU2VwYXJhdG9yVHJhbnNmb3JtVGFibGUgPT0gJ3VuZGVm
      aW5lZCcKCQkJfHwgKCB3Z1NlcGFyYXRvclRyYW5zZm9ybVRhYmxlWzBdID09ICcn
      ICYmIHdnRGlnaXRUcmFuc2Zvcm1UYWJsZVsyXSA9PSAnJyApICkKCXsKCQlkaWdp
      dENsYXNzID0gIlswLTksLl0iOwoJCXRzX251bWJlcl90cmFuc2Zvcm1fdGFibGUg
      PSBmYWxzZTsKCX0gZWxzZSB7CgkJdHNfbnVtYmVyX3RyYW5zZm9ybV90YWJsZSA9
      IHt9OwoJCS8vIFVucGFjayB0aGUgdHJhbnNmb3JtIHRhYmxlCgkJLy8gU2VwYXJh
      dG9ycwoJCWFzY2lpID0gd2dTZXBhcmF0b3JUcmFuc2Zvcm1UYWJsZVswXS5zcGxp
      dCgiXHQiKTsKCQlsb2NhbGlzZWQgPSB3Z1NlcGFyYXRvclRyYW5zZm9ybVRhYmxl
      WzFdLnNwbGl0KCJcdCIpOwoJCWZvciAoIHZhciBpID0gMDsgaSA8IGFzY2lpLmxl
      bmd0aDsgaSsrICkgewoJCQl0c19udW1iZXJfdHJhbnNmb3JtX3RhYmxlW2xvY2Fs
      aXNlZFtpXV0gPSBhc2NpaVtpXTsKCQl9CgkJLy8gRGlnaXRzCgkJYXNjaWkgPSB3
      Z0RpZ2l0VHJhbnNmb3JtVGFibGVbMF0uc3BsaXQoIlx0Iik7CgkJbG9jYWxpc2Vk
      ID0gd2dEaWdpdFRyYW5zZm9ybVRhYmxlWzFdLnNwbGl0KCJcdCIpOwoJCWZvciAo
      IHZhciBpID0gMDsgaSA8IGFzY2lpLmxlbmd0aDsgaSsrICkgewoJCQl0c19udW1i
      ZXJfdHJhbnNmb3JtX3RhYmxlW2xvY2FsaXNlZFtpXV0gPSBhc2NpaVtpXTsKCQl9
      CgoJCS8vIENvbnN0cnVjdCByZWdleCBmb3IgbnVtYmVyIGlkZW50aWZpY2F0aW9u
      CgkJZGlnaXRzID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2Jywg
      JzcnLCAnOCcsICc5JywgJywnLCAnXFwuJ107CgkJbWF4RGlnaXRMZW5ndGggPSAx
      OwoJCWZvciAoIHZhciBkaWdpdCBpbiB0c19udW1iZXJfdHJhbnNmb3JtX3RhYmxl
      ICkgewoJCQkvLyBFc2NhcGUgcmVnZXggbWV0YWNoYXJhY3RlcnMKCQkJZGlnaXRz
      LnB1c2goCgkJCQlkaWdpdC5yZXBsYWNlKCAvW1xcXFwkXCpcK1w/XC5cKFwpXHxc
      e1x9XFtcXVwtXS8sCgkJCQkJZnVuY3Rpb24oIHMgKSB7IHJldHVybiAnXFwnICsg
      czsgfSApCgkJCSk7CgkJCWlmICggZGlnaXQubGVuZ3RoID4gbWF4RGlnaXRMZW5n
      dGggKSB7CgkJCQltYXhEaWdpdExlbmd0aCA9IGRpZ2l0Lmxlbmd0aDsKCQkJfQoJ
      CX0KCQlpZiAoIG1heERpZ2l0TGVuZ3RoID4gMSApIHsKCQkJZGlnaXRDbGFzcyA9
      ICdbJyArIGRpZ2l0cy5qb2luKCAnJywgZGlnaXRzICkgKyAnXSc7CgkJfSBlbHNl
      IHsKCQkJZGlnaXRDbGFzcyA9ICcoJyArIGRpZ2l0cy5qb2luKCAnfCcsIGRpZ2l0
      cyApICsgJyknOwoJCX0KCX0KCgkvLyBXZSBhbGxvdyBhIHRyYWlsaW5nIHBlcmNl
      bnQgc2lnbiwgd2hpY2ggd2UganVzdCBzdHJpcC4gIFRoaXMgd29ya3MgZmluZQoJ
      Ly8gaWYgcGVyY2VudHMgYW5kIHJlZ3VsYXIgbnVtYmVycyBhcmVuJ3QgYmVpbmcg
      bWl4ZWQuCgl0c19udW1iZXJfcmVnZXggPSBuZXcgUmVnRXhwKAoJCSJeKCIgKwoJ
      CQkiWy0rXHUyMjEyXT9bMC05XVswLTksXSooXFwuWzAtOSxdKik/KEVbLStcdTIy
      MTJdP1swLTldWzAtOSxdKik/IiArIC8vIEZvcnRyYW4tc3R5bGUgc2NpZW50aWZp
      YwoJCQkifCIgKwoJCQkiWy0rXHUyMjEyXT8iICsgZGlnaXRDbGFzcyArICIrJT8i
      ICsgLy8gR2VuZXJpYyBsb2NhbGlzZWQKCQkiKSQiLCAiaSIKCSk7Cn0KCmZ1bmN0
      aW9uIHRzX3RvTG93ZXJDYXNlKCBzICkgewoJcmV0dXJuIHMudG9Mb3dlckNhc2Uo
      KTsKfQoKZnVuY3Rpb24gdHNfZGF0ZVRvU29ydEtleSggZGF0ZSApIHsKCS8vIHky
      ayBub3RlczogdHdvIGRpZ2l0IHllYXJzIGxlc3MgdGhhbiA1MCBhcmUgdHJlYXRl
      ZCBhcyAyMFhYLCBncmVhdGVyIHRoYW4gNTAgYXJlIHRyZWF0ZWQgYXMgMTlYWAoJ
      aWYgKCBkYXRlLmxlbmd0aCA9PSAxMSApIHsKCQlzd2l0Y2ggKCBkYXRlLnN1YnN0
      ciggMywgMyApLnRvTG93ZXJDYXNlKCkgKSB7CgkJCWNhc2UgJ2phbic6CgkJCQl2
      YXIgbW9udGggPSAnMDEnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2ZlYic6CgkJCQl2
      YXIgbW9udGggPSAnMDInOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ21hcic6CgkJCQl2
      YXIgbW9udGggPSAnMDMnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2Fwcic6CgkJCQl2
      YXIgbW9udGggPSAnMDQnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ21heSc6CgkJCQl2
      YXIgbW9udGggPSAnMDUnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2p1bic6CgkJCQl2
      YXIgbW9udGggPSAnMDYnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2p1bCc6CgkJCQl2
      YXIgbW9udGggPSAnMDcnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2F1Zyc6CgkJCQl2
      YXIgbW9udGggPSAnMDgnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3NlcCc6CgkJCQl2
      YXIgbW9udGggPSAnMDknOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ29jdCc6CgkJCQl2
      YXIgbW9udGggPSAnMTAnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ25vdic6CgkJCQl2
      YXIgbW9udGggPSAnMTEnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2RlYyc6CgkJCQl2
      YXIgbW9udGggPSAnMTInOwoJCQkJYnJlYWs7CgkJCS8vIGRlZmF1bHQ6IHZhciBt
      b250aCA9ICcwMCc7CgkJfQoJCXJldHVybiBkYXRlLnN1YnN0ciggNywgNCApICsg
      bW9udGggKyBkYXRlLnN1YnN0ciggMCwgMiApOwoJfSBlbHNlIGlmICggZGF0ZS5s
      ZW5ndGggPT0gMTAgKSB7CgkJaWYgKCB0c19ldXJvcGVhbmRhdGUgPT0gZmFsc2Ug
      KSB7CgkJCXJldHVybiBkYXRlLnN1YnN0ciggNiwgNCApICsgZGF0ZS5zdWJzdHIo
      IDAsIDIgKSArIGRhdGUuc3Vic3RyKCAzLCAyICk7CgkJfSBlbHNlIHsKCQkJcmV0
      dXJuIGRhdGUuc3Vic3RyKCA2LCA0ICkgKyBkYXRlLnN1YnN0ciggMywgMiApICsg
      ZGF0ZS5zdWJzdHIoIDAsIDIgKTsKCQl9Cgl9IGVsc2UgaWYgKCBkYXRlLmxlbmd0
      aCA9PSA4ICkgewoJCXlyID0gZGF0ZS5zdWJzdHIoIDYsIDIgKTsKCQlpZiAoIHBh
      cnNlSW50KCB5ciApIDwgNTAgKSB7CgkJCXlyID0gJzIwJyArIHlyOwoJCX0gZWxz
      ZSB7CgkJCXlyID0gJzE5JyArIHlyOwoJCX0KCQlpZiAoIHRzX2V1cm9wZWFuZGF0
      ZSA9PSB0cnVlICkgewoJCQlyZXR1cm4geXIgKyBkYXRlLnN1YnN0ciggMywgMiAp
      ICsgZGF0ZS5zdWJzdHIoIDAsIDIgKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4geXIg
      KyBkYXRlLnN1YnN0ciggMCwgMiApICsgZGF0ZS5zdWJzdHIoIDMsIDIgKTsKCQl9
      Cgl9CglyZXR1cm4gJzAwMDAwMDAwJzsKfQoKZnVuY3Rpb24gdHNfcGFyc2VGbG9h
      dCggcyApIHsKCWlmICggIXMgKSB7CgkJcmV0dXJuIDA7Cgl9CglpZiAoIHRzX251
      bWJlcl90cmFuc2Zvcm1fdGFibGUgIT0gZmFsc2UgKSB7CgkJdmFyIG5ld051bSA9
      ICcnLCBjOwoKCQlmb3IgKCB2YXIgcCA9IDA7IHAgPCBzLmxlbmd0aDsgcCsrICkg
      ewoJCQljID0gcy5jaGFyQXQoIHAgKTsKCQkJaWYgKCBjIGluIHRzX251bWJlcl90
      cmFuc2Zvcm1fdGFibGUgKSB7CgkJCQluZXdOdW0gKz0gdHNfbnVtYmVyX3RyYW5z
      Zm9ybV90YWJsZVtjXTsKCQkJfSBlbHNlIHsKCQkJCW5ld051bSArPSBjOwoJCQl9
      CgkJfQoJCXMgPSBuZXdOdW07Cgl9CgludW0gPSBwYXJzZUZsb2F0KCBzLnJlcGxh
      Y2UoL1ssIF0vZywgJycpLnJlcGxhY2UoIlx1MjIxMiIsICctJykgKTsKCXJldHVy
      biAoIGlzTmFOKCBudW0gKSA/IC1JbmZpbml0eSA6IG51bSApOwp9CgpmdW5jdGlv
      biB0c19jdXJyZW5jeVRvU29ydEtleSggcyApIHsKCXJldHVybiB0c19wYXJzZUZs
      b2F0KHMucmVwbGFjZSgvW14tXHUyMjEyMC05LixdL2csJycpKTsKfQoKZnVuY3Rp
      b24gdHNfc29ydF9nZW5lcmljKCBhLCBiICkgewoJcmV0dXJuIGFbMV0gPCBiWzFd
      ID8gLTEgOiBhWzFdID4gYlsxXSA/IDEgOiBhWzJdIC0gYlsyXTsKfQoKZnVuY3Rp
      b24gdHNfYWx0ZXJuYXRlKCB0YWJsZSApIHsKCS8vIFRha2Ugb2JqZWN0IHRhYmxl
      IGFuZCBnZXQgYWxsIGl0J3MgdGJvZGllcy4KCXZhciB0YWJsZUJvZGllcyA9IHRh
      YmxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCAndGJvZHknICk7CgkvLyBMb29wIHRo
      cm91Z2ggdGhlc2UgdGJvZGllcwoJZm9yICggdmFyIGkgPSAwOyBpIDwgdGFibGVC
      b2RpZXMubGVuZ3RoOyBpKysgKSB7CgkJLy8gVGFrZSB0aGUgdGJvZHksIGFuZCBn
      ZXQgYWxsIGl0J3Mgcm93cwoJCXZhciB0YWJsZVJvd3MgPSB0YWJsZUJvZGllc1tp
      XS5nZXRFbGVtZW50c0J5VGFnTmFtZSggJ3RyJyApOwoJCS8vIExvb3AgdGhyb3Vn
      aCB0aGVzZSByb3dzCgkJLy8gU3RhcnQgYXQgMSBiZWNhdXNlIHdlIHdhbnQgdG8g
      bGVhdmUgdGhlIGhlYWRpbmcgcm93IHVudG91Y2hlZAoJCWZvciAoIHZhciBqID0g
      MDsgaiA8IHRhYmxlUm93cy5sZW5ndGg7IGorKyApIHsKCQkJLy8gQ2hlY2sgaWYg
      aiBpcyBldmVuLCBhbmQgYXBwbHkgY2xhc3NlcyBmb3IgYm90aCBwb3NzaWJsZSBy
      ZXN1bHRzCgkJCXZhciBvbGRDbGFzc2VzID0gdGFibGVSb3dzW2pdLmNsYXNzTmFt
      ZS5zcGxpdCgnICcpOwoJCQl2YXIgbmV3Q2xhc3NOYW1lID0gJyc7CgkJCWZvciAo
      IHZhciBrID0gMDsgayA8IG9sZENsYXNzZXMubGVuZ3RoOyBrKysgKSB7CgkJCQlp
      ZiAoIG9sZENsYXNzZXNba10gIT0gJycgJiYgb2xkQ2xhc3Nlc1trXSAhPSAnZXZl
      bicgJiYgb2xkQ2xhc3Nlc1trXSAhPSAnb2RkJyApIHsKCQkJCQluZXdDbGFzc05h
      bWUgKz0gb2xkQ2xhc3Nlc1trXSArICcgJzsKCQkJCX0KCQkJfQoJCQl0YWJsZVJv
      d3Nbal0uY2xhc3NOYW1lID0gbmV3Q2xhc3NOYW1lICsgKCBqICUgMiA9PSAwID8g
      J2V2ZW4nIDogJ29kZCcgKTsKCQl9Cgl9Cn0KCi8qCiAqIEVuZCBvZiB0YWJsZSBz
      b3J0aW5nIGNvZGUKICovCgoKLyoqCiAqIEFkZCBhIGN1dGUgbGl0dGxlIGJveCBh
      dCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4gdG8gaW5mb3JtIHRoZSB1c2VyIG9mCiAq
      IHNvbWV0aGluZywgcmVwbGFjaW5nIGFueSBwcmVleGlzdGluZyBtZXNzYWdlLgog
      KgogKiBAcGFyYW0gU3RyaW5nIC1vci0gRG9tIE9iamVjdCBtZXNzYWdlIEhUTUwg
      dG8gYmUgcHV0IGluc2lkZSB0aGUgcmlnaHQgZGl2CiAqIEBwYXJhbSBTdHJpbmcg
      Y2xhc3NOYW1lICAgVXNlZCBpbiBhZGRpbmcgYSBjbGFzczsgc2hvdWxkIGJlIGRp
      ZmZlcmVudCBmb3IgZWFjaAogKiAgIGNhbGwgdG8gYWxsb3cgQ1NTL0pTIHRvIGhp
      ZGUgZGlmZmVyZW50IGJveGVzLiAgbnVsbCA9IG5vIGNsYXNzIHVzZWQuCiAqIEBy
      ZXR1cm4gQm9vbGVhbiAgICAgICBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZh
      aWx1cmUKICovCmZ1bmN0aW9uIGpzTXNnKCBtZXNzYWdlLCBjbGFzc05hbWUgKSB7
      CglpZiAoICFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCApIHsKCQlyZXR1cm4gZmFs
      c2U7Cgl9CgkvLyBXZSBzcGVjaWFsLWNhc2Ugc2tpbiBzdHJ1Y3R1cmVzIHByb3Zp
      ZGVkIGJ5IHRoZSBzb2Z0d2FyZS4gIFNraW5zIHRoYXQKCS8vIGNob29zZSB0byBh
      YmFuZG9uIG9yIHNpZ25pZmljYW50bHkgbW9kaWZ5IG91ciBmb3JtYXR0aW5nIGNh
      biBqdXN0IGRlZmluZQoJLy8gYW4gbXctanMtbWVzc2FnZSBkaXYgdG8gc3RhcnQg
      d2l0aC4KCXZhciBtZXNzYWdlRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
      ICdtdy1qcy1tZXNzYWdlJyApOwoJaWYgKCAhbWVzc2FnZURpdiApIHsKCQltZXNz
      YWdlRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ2RpdicgKTsKCQlpZiAo
      IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnY29sdW1uLWNvbnRlbnQnICkKCQkm
      JiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2NvbnRlbnQnICkgKSB7CgkJCS8v
      IE1vbm9Cb29rLCBwcmVzdW1hYmx5CgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlk
      KCAnY29udGVudCcgKS5pbnNlcnRCZWZvcmUoCgkJCQltZXNzYWdlRGl2LAoJCQkJ
      ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdjb250ZW50JyApLmZpcnN0Q2hpbGQK
      CQkJKTsKCQl9IGVsc2UgaWYgKCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2Nv
      bnRlbnQnICkKCQkmJiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ2FydGljbGUn
      ICkgKSB7CgkJCS8vIE5vbi1Nb25vYm9vayBidXQgc3RpbGwgcmVjb2duaXphYmxl
      IChvbGQtc3R5bGUpCgkJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnYXJ0aWNs
      ZScpLmluc2VydEJlZm9yZSgKCQkJCW1lc3NhZ2VEaXYsCgkJCQlkb2N1bWVudC5n
      ZXRFbGVtZW50QnlJZCggJ2FydGljbGUnICkuZmlyc3RDaGlsZAoJCQkpOwoJCX0g
      ZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJbWVzc2FnZURpdi5zZXRB
      dHRyaWJ1dGUoICdpZCcsICdtdy1qcy1tZXNzYWdlJyApOwoJbWVzc2FnZURpdi5z
      dHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKCWlmKCBjbGFzc05hbWUgKSB7CgkJbWVz
      c2FnZURpdi5zZXRBdHRyaWJ1dGUoICdjbGFzcycsICdtdy1qcy1tZXNzYWdlLScg
      KyBjbGFzc05hbWUgKTsKCX0KCglpZiAoIHR5cGVvZiBtZXNzYWdlID09PSAnb2Jq
      ZWN0JyApIHsKCQl3aGlsZSAoIG1lc3NhZ2VEaXYuaGFzQ2hpbGROb2RlcygpICkg
      eyAvLyBSZW1vdmUgb2xkIGNvbnRlbnQKCQkJbWVzc2FnZURpdi5yZW1vdmVDaGls
      ZCggbWVzc2FnZURpdi5maXJzdENoaWxkICk7CgkJfQoJCW1lc3NhZ2VEaXYuYXBw
      ZW5kQ2hpbGQoIG1lc3NhZ2UgKTsgLy8gQXBwZW5kIG5ldyBjb250ZW50Cgl9IGVs
      c2UgewoJCW1lc3NhZ2VEaXYuaW5uZXJIVE1MID0gbWVzc2FnZTsKCX0KCXJldHVy
      biB0cnVlOwp9CgovKioKICogSW5qZWN0IGEgY3V0ZSBsaXR0bGUgcHJvZ3Jlc3Mg
      c3Bpbm5lciBhZnRlciB0aGUgc3BlY2lmaWVkIGVsZW1lbnQKICoKICogQHBhcmFt
      IGVsZW1lbnQgRWxlbWVudCB0byBpbmplY3QgYWZ0ZXIKICogQHBhcmFtIGlkIElk
      ZW50aWZpZXIgc3RyaW5nIChmb3IgdXNlIHdpdGggcmVtb3ZlU3Bpbm5lcigpLCBi
      ZWxvdykKICovCmZ1bmN0aW9uIGluamVjdFNwaW5uZXIoIGVsZW1lbnQsIGlkICkg
      ewoJdmFyIHNwaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnaW1nJyAp
      OwoJc3Bpbm5lci5pZCA9ICdtdy1zcGlubmVyLScgKyBpZDsKCXNwaW5uZXIuc3Jj
      ID0gc3R5bGVwYXRoICsgJy9jb21tb24vaW1hZ2VzL3NwaW5uZXIuZ2lmJzsKCXNw
      aW5uZXIuYWx0ID0gc3Bpbm5lci50aXRsZSA9ICcuLi4nOwoJaWYoIGVsZW1lbnQu
      bmV4dFNpYmxpbmcgKSB7CgkJZWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9y
      ZSggc3Bpbm5lciwgZWxlbWVudC5uZXh0U2libGluZyApOwoJfSBlbHNlIHsKCQll
      bGVtZW50LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoIHNwaW5uZXIgKTsKCX0KfQoK
      LyoqCiAqIFJlbW92ZSBhIHByb2dyZXNzIHNwaW5uZXIgYWRkZWQgd2l0aCBpbmpl
      Y3RTcGlubmVyKCkKICoKICogQHBhcmFtIGlkIElkZW50aWZpZXIgc3RyaW5nCiAq
      LwpmdW5jdGlvbiByZW1vdmVTcGlubmVyKCBpZCApIHsKCXZhciBzcGlubmVyID0g
      ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICdtdy1zcGlubmVyLScgKyBpZCApOwoJ
      aWYoIHNwaW5uZXIgKSB7CgkJc3Bpbm5lci5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
      KCBzcGlubmVyICk7Cgl9Cn0KCmZ1bmN0aW9uIHJ1bk9ubG9hZEhvb2soKSB7Cgkv
      LyBkb24ndCBydW4gYW55dGhpbmcgYmVsb3cgdGhpcyBmb3Igbm9uLWRvbSBicm93
      c2VycwoJaWYgKCBkb25lT25sb2FkSG9vayB8fCAhKCBkb2N1bWVudC5nZXRFbGVt
      ZW50QnlJZCAmJiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSApICkgewoJ
      CXJldHVybjsKCX0KCgkvLyBzZXQgdGhpcyBiZWZvcmUgcnVubmluZyBhbnkgaG9v
      a3MsIHNpbmNlIGFueSBlcnJvcnMgYmVsb3cKCS8vIG1pZ2h0IGNhdXNlIHRoZSBm
      dW5jdGlvbiB0byB0ZXJtaW5hdGUgcHJlbWF0dXJlbHkKCWRvbmVPbmxvYWRIb29r
      ID0gdHJ1ZTsKCgl1cGRhdGVUb29sdGlwQWNjZXNzS2V5cyggbnVsbCApOwoJc2V0
      dXBDaGVja2JveFNoaWZ0Q2xpY2soKTsKCXNvcnRhYmxlc19pbml0KCk7CgoJLy8g
      UnVuIGFueSBhZGRlZC1vbiBmdW5jdGlvbnMKCWZvciAoIHZhciBpID0gMDsgaSA8
      IG9ubG9hZEZ1bmN0cy5sZW5ndGg7IGkrKyApIHsKCQlvbmxvYWRGdW5jdHNbaV0o
      KTsKCX0KfQoKLyoqCiAqIEFkZCBhbiBldmVudCBoYW5kbGVyIHRvIGFuIGVsZW1l
      bnQKICoKICogQHBhcmFtIEVsZW1lbnQgZWxlbWVudCBFbGVtZW50IHRvIGFkZCBo
      YW5kbGVyIHRvCiAqIEBwYXJhbSBTdHJpbmcgYXR0YWNoIEV2ZW50IHRvIGF0dGFj
      aCB0bwogKiBAcGFyYW0gY2FsbGFibGUgaGFuZGxlciBFdmVudCBoYW5kbGVyIGNh
      bGxiYWNrCiAqLwpmdW5jdGlvbiBhZGRIYW5kbGVyKCBlbGVtZW50LCBhdHRhY2gs
      IGhhbmRsZXIgKSB7CglpZiggd2luZG93LmFkZEV2ZW50TGlzdGVuZXIgKSB7CgkJ
      ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCBhdHRhY2gsIGhhbmRsZXIsIGZhbHNl
      ICk7Cgl9IGVsc2UgaWYoIHdpbmRvdy5hdHRhY2hFdmVudCApIHsKCQllbGVtZW50
      LmF0dGFjaEV2ZW50KCAnb24nICsgYXR0YWNoLCBoYW5kbGVyICk7Cgl9Cn0KCi8q
      KgogKiBBZGQgYSBjbGljayBldmVudCBoYW5kbGVyIHRvIGFuIGVsZW1lbnQKICoK
      ICogQHBhcmFtIEVsZW1lbnQgZWxlbWVudCBFbGVtZW50IHRvIGFkZCBoYW5kbGVy
      IHRvCiAqIEBwYXJhbSBjYWxsYWJsZSBoYW5kbGVyIEV2ZW50IGhhbmRsZXIgY2Fs
      bGJhY2sKICovCmZ1bmN0aW9uIGFkZENsaWNrSGFuZGxlciggZWxlbWVudCwgaGFu
      ZGxlciApIHsKCWFkZEhhbmRsZXIoIGVsZW1lbnQsICdjbGljaycsIGhhbmRsZXIg
      KTsKfQoKLyoqCiAqIFJlbW92ZXMgYW4gZXZlbnQgaGFuZGxlciBmcm9tIGFuIGVs
      ZW1lbnQKICoKICogQHBhcmFtIEVsZW1lbnQgZWxlbWVudCBFbGVtZW50IHRvIHJl
      bW92ZSBoYW5kbGVyIGZyb20KICogQHBhcmFtIFN0cmluZyByZW1vdmUgRXZlbnQg
      dG8gcmVtb3ZlCiAqIEBwYXJhbSBjYWxsYWJsZSBoYW5kbGVyIEV2ZW50IGhhbmRs
      ZXIgY2FsbGJhY2sgdG8gcmVtb3ZlCiAqLwpmdW5jdGlvbiByZW1vdmVIYW5kbGVy
      KCBlbGVtZW50LCByZW1vdmUsIGhhbmRsZXIgKSB7CglpZiggd2luZG93LnJlbW92
      ZUV2ZW50TGlzdGVuZXIgKSB7CgkJZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
      KCByZW1vdmUsIGhhbmRsZXIsIGZhbHNlICk7Cgl9IGVsc2UgaWYoIHdpbmRvdy5k
      ZXRhY2hFdmVudCApIHsKCQllbGVtZW50LmRldGFjaEV2ZW50KCAnb24nICsgcmVt
      b3ZlLCBoYW5kbGVyICk7Cgl9Cn0KLy8gbm90ZTogYWxsIHNraW5zIHNob3VsZCBj
      YWxsIHJ1bk9ubG9hZEhvb2soKSBhdCB0aGUgZW5kIG9mIGh0bWwgb3V0cHV0LAov
      LyAgICAgIHNvIHRoZSBiZWxvdyBzaG91bGQgYmUgcmVkdW5kYW50LiBJdCdzIHRo
      ZXJlIGp1c3QgaW4gY2FzZS4KaG9va0V2ZW50KCAnbG9hZCcsIHJ1bk9ubG9hZEhv
      b2sgKTsKCmlmICggaWU2X2J1Z3MgKSB7CglpbXBvcnRTY3JpcHRVUkkoIHN0eWxl
      cGF0aCArICcvY29tbW9uL0lFRml4ZXMuanMnICk7Cn0KCi8vIEZvciBmdXR1cmUg
      dXNlLgptdyA9IHt9OwoKCg==
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=ajax.js
      Content-Type: application/x-javascript; charset=UTF-8; name=ajax.js
      Content-Location: http://bits.wikimedia.org/skins-1.5/common/ajax.js?270z52
      Content-Transfer-Encoding: Base64
      
      Ly8gcmVtb3RlIHNjcmlwdGluZyBsaWJyYXJ5Ci8vIChjKSBjb3B5cmlnaHQgMjAw
      NSBtb2Rlcm5tZXRob2QsIGluYwp2YXIgc2FqYXhfZGVidWdfbW9kZSA9IGZhbHNl
      Owp2YXIgc2FqYXhfcmVxdWVzdF90eXBlID0gIkdFVCI7CgovKioKKiBpZiBzYWph
      eF9kZWJ1Z19tb2RlIGlzIHRydWUsIHRoaXMgZnVuY3Rpb24gb3V0cHV0cyBnaXZl
      biB0aGUgbWVzc2FnZSBpbnRvIAoqIHRoZSBlbGVtZW50IHdpdGggaWQgPSBzYWph
      eF9kZWJ1ZzsgaWYgbm8gc3VjaCBlbGVtZW50IGV4aXN0cyBpbiB0aGUgZG9jdW1l
      bnQsIAoqIGl0IGlzIGluamVjdGVkLgoqLwpmdW5jdGlvbiBzYWpheF9kZWJ1Zyh0
      ZXh0KSB7CglpZiAoIXNhamF4X2RlYnVnX21vZGUpIHJldHVybiBmYWxzZTsKCgl2
      YXIgZT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhamF4X2RlYnVnJyk7CgoJ
      aWYgKCFlKSB7CgkJZT0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpOwoJCWUu
      Y2xhc3NOYW1lPSAnc2FqYXhfZGVidWcnOwoJCWUuaWQ9ICdzYWpheF9kZWJ1Zyc7
      CgoJCXZhciBiPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
      WzBdOwoKCQlpZiAoYi5maXJzdENoaWxkKSBiLmluc2VydEJlZm9yZShlLCBiLmZp
      cnN0Q2hpbGQpOwoJCWVsc2UgYi5hcHBlbmRDaGlsZChlKTsKCX0KCgl2YXIgbT0g
      ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CgltLmFwcGVuZENoaWxkKCBk
      b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSggdGV4dCApICk7CgoJZS5hcHBlbmRDaGls
      ZCggbSApOwoKCXJldHVybiB0cnVlOwp9CgovKioKKiBjb21wYXRpYmlsaXR5IHdy
      YXBwZXIgZm9yIGNyZWF0aW5nIGEgbmV3IFhNTEh0dHBSZXF1ZXN0IG9iamVjdC4K
      Ki8KZnVuY3Rpb24gc2FqYXhfaW5pdF9vYmplY3QoKSB7CglzYWpheF9kZWJ1Zygi
      c2FqYXhfaW5pdF9vYmplY3QoKSBjYWxsZWQuLiIpCgl2YXIgQTsKCXRyeSB7CgkJ
      Ly8gVHJ5IHRoZSBuZXcgc3R5bGUgYmVmb3JlIEFjdGl2ZVggc28gd2UgZG9uJ3QK
      CQkvLyB1bm5lY2Vzc2FyaWx5IHRyaWdnZXIgd2FybmluZ3MgaW4gSUUgNyB3aGVu
      CgkJLy8gc2V0IHRvIHByb21wdCBhYm91dCBBY3RpdmVYIHVzYWdlCgkJQSA9IG5l
      dyBYTUxIdHRwUmVxdWVzdCgpOwoJfSBjYXRjaCAoZSkgewoJCXRyeSB7CgkJCUE9
      bmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7CgkJfSBjYXRjaCAo
      ZSkgewoJCQl0cnkgewoJCQkJQT1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0
      LlhNTEhUVFAiKTsKCQkJfSBjYXRjaCAob2MpIHsKCQkJCUE9bnVsbDsKCQkJfQoJ
      CX0KCX0KCWlmICghQSkKCQlzYWpheF9kZWJ1ZygiQ291bGQgbm90IGNyZWF0ZSBj
      b25uZWN0aW9uIG9iamVjdC4iKTsKCglyZXR1cm4gQTsKfQoKLyoqCiogUGVyZm9y
      bSBhbiBhamF4IGNhbGwgdG8gbWVkaWF3aWtpLiBDYWxscyBhcmUgaGFuZGVsZWQg
      YnkgQWpheERpc3BhdGNoZXIucGhwCiogICBmdW5jX25hbWUgLSB0aGUgbmFtZSBv
      ZiB0aGUgZnVuY3Rpb24gdG8gY2FsbC4gTXVzdCBiZSByZWdpc3RlcmVkIGluICR3
      Z0FqYXhFeHBvcnRMaXN0CiogICBhcmdzIC0gYW4gYXJyYXkgb2YgYXJndW1lbnRz
      IHRvIHRoYXQgZnVuY3Rpb24KKiAgIHRhcmdldCAtIHRoZSB0YXJnZXQgdGhhdCB3
      aWxsIGhhbmRsZSB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsLiBJZiB0aGlzIGlzIGEg
      ZnVuY3Rpb24sCiogICAgICAgICAgICBpZiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRo
      ZSBYTUxIdHRwUmVxdWVzdCBhcyBhIHBhcmFtZXRlcjsgaWYgaXQncyBhbiBpbnB1
      dAoqICAgICAgICAgICAgZWxlbWVudCwgaXRzIHZhbHVlIHdpbGwgYmUgc2V0IHRv
      IHRoZSByZXN1bHRUZXh0OyBpZiBpdCdzIGFub3RoZXIgdHlwZSBvZgoqICAgICAg
      ICAgICAgZWxlbWVudCwgaXRzIGlubmVySFRNTCB3aWxsIGJlIHNldCB0byB0aGUg
      cmVzdWx0VGV4dC4KKgoqIEV4YW1wbGU6CiogICAgc2FqYXhfZG9fY2FsbCgnZG9G
      b28nLCBbMSwgMiwgM10sIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzaG93Rm9v
      IikpOwoqCiogVGhpcyB3aWxsIGNhbGwgdGhlIGRvRm9vIGZ1bmN0aW9uIHZpYSBN
      ZWRpYVdpa2kncyBBamF4RGlzcGF0Y2hlciwgd2l0aAoqICgxLCAyLCAzKSBhcyB0
      aGUgcGFyYW1ldGVyIGxpc3QsIGFuZCB3aWxsIHNob3cgdGhlIHJlc3VsdCBpbiB0
      aGUgZWxlbWVudAoqIHdpdGggaWQgPSBzaG93Rm9vCiovCmZ1bmN0aW9uIHNhamF4
      X2RvX2NhbGwoZnVuY19uYW1lLCBhcmdzLCB0YXJnZXQpIHsKCXZhciBpLCB4LCBu
      OwoJdmFyIHVyaTsKCXZhciBwb3N0X2RhdGE7Cgl1cmkgPSB3Z1NlcnZlciArCgkJ
      KCh3Z1NjcmlwdCA9PSBudWxsKSA/ICh3Z1NjcmlwdFBhdGggKyAiL2luZGV4LnBo
      cCIpIDogd2dTY3JpcHQpICsKCQkiP2FjdGlvbj1hamF4IjsKCWlmIChzYWpheF9y
      ZXF1ZXN0X3R5cGUgPT0gIkdFVCIpIHsKCQlpZiAodXJpLmluZGV4T2YoIj8iKSA9
      PSAtMSkKCQkJdXJpID0gdXJpICsgIj9ycz0iICsgZW5jb2RlVVJJQ29tcG9uZW50
      KGZ1bmNfbmFtZSk7CgkJZWxzZQoJCQl1cmkgPSB1cmkgKyAiJnJzPSIgKyBlbmNv
      ZGVVUklDb21wb25lbnQoZnVuY19uYW1lKTsKCQlmb3IgKGkgPSAwOyBpIDwgYXJn
      cy5sZW5ndGg7IGkrKykKCQkJdXJpID0gdXJpICsgIiZyc2FyZ3NbXT0iICsgZW5j
      b2RlVVJJQ29tcG9uZW50KGFyZ3NbaV0pOwoJCS8vdXJpID0gdXJpICsgIiZyc3Ju
      ZD0iICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7CgkJcG9zdF9kYXRhID0gbnVsbDsK
      CX0gZWxzZSB7CgkJcG9zdF9kYXRhID0gInJzPSIgKyBlbmNvZGVVUklDb21wb25l
      bnQoZnVuY19uYW1lKTsKCQlmb3IgKGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkr
      KykKCQkJcG9zdF9kYXRhID0gcG9zdF9kYXRhICsgIiZyc2FyZ3NbXT0iICsgZW5j
      b2RlVVJJQ29tcG9uZW50KGFyZ3NbaV0pOwoJfQoJeCA9IHNhamF4X2luaXRfb2Jq
      ZWN0KCk7CglpZiAoIXgpIHsKCQlhbGVydCgiQUpBWCBub3Qgc3VwcG9ydGVkIik7
      CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXRyeSB7CgkJeC5vcGVuKHNhamF4X3JlcXVl
      c3RfdHlwZSwgdXJpLCB0cnVlKTsKCX0gY2F0Y2ggKGUpIHsKCQlpZiAod2luZG93
      LmxvY2F0aW9uLmhvc3RuYW1lID09ICJsb2NhbGhvc3QiKSB7CgkJCWFsZXJ0KCJZ
      b3VyIGJyb3dzZXIgYmxvY2tzIFhNTEh0dHBSZXF1ZXN0IHRvICdsb2NhbGhvc3Qn
      LCB0cnkgdXNpbmcgYSByZWFsIGhvc3RuYW1lIGZvciBkZXZlbG9wbWVudC90ZXN0
      aW5nLiIpOwoJCX0KCQl0aHJvdyBlOwoJfQoJaWYgKHNhamF4X3JlcXVlc3RfdHlw
      ZSA9PSAiUE9TVCIpIHsKCQl4LnNldFJlcXVlc3RIZWFkZXIoIk1ldGhvZCIsICJQ
      T1NUICIgKyB1cmkgKyAiIEhUVFAvMS4xIik7CgkJeC5zZXRSZXF1ZXN0SGVhZGVy
      KCJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
      ZGVkIik7Cgl9Cgl4LnNldFJlcXVlc3RIZWFkZXIoIlByYWdtYSIsICJjYWNoZT15
      ZXMiKTsKCXguc2V0UmVxdWVzdEhlYWRlcigiQ2FjaGUtQ29udHJvbCIsICJuby10
      cmFuc2Zvcm0iKTsKCXgub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7
      CgkJaWYgKHgucmVhZHlTdGF0ZSAhPSA0KQoJCQlyZXR1cm47CgoJCXNhamF4X2Rl
      YnVnKCJyZWNlaXZlZCAoIiArIHguc3RhdHVzICsgIiAiICsgeC5zdGF0dXNUZXh0
      ICsgIikgIiArIHgucmVzcG9uc2VUZXh0KTsKCgkJLy9pZiAoeC5zdGF0dXMgIT0g
      MjAwKQoJCS8vCWFsZXJ0KCJFcnJvcjogIiArIHguc3RhdHVzICsgIiAiICsgeC5z
      dGF0dXNUZXh0ICsgIjogIiArIHgucmVzcG9uc2VUZXh0KTsKCQkvL2Vsc2UKCgkJ
      aWYgKCB0eXBlb2YoIHRhcmdldCApID09ICdmdW5jdGlvbicgKSB7CgkJCXRhcmdl
      dCggeCApOwoJCX0KCQllbHNlIGlmICggdHlwZW9mKCB0YXJnZXQgKSA9PSAnb2Jq
      ZWN0JyApIHsKCQkJaWYgKCB0YXJnZXQudGFnTmFtZSA9PSAnSU5QVVQnICkgewoJ
      CQkJaWYgKHguc3RhdHVzID09IDIwMCkgdGFyZ2V0LnZhbHVlPSB4LnJlc3BvbnNl
      VGV4dDsKCQkJCS8vZWxzZSBhbGVydCgiRXJyb3I6ICIgKyB4LnN0YXR1cyArICIg
      IiArIHguc3RhdHVzVGV4dCArICIgKCIgKyB4LnJlc3BvbnNlVGV4dCArICIpIik7
      CgkJCX0KCQkJZWxzZSB7CgkJCQlpZiAoeC5zdGF0dXMgPT0gMjAwKSB0YXJnZXQu
      aW5uZXJIVE1MID0geC5yZXNwb25zZVRleHQ7CgkJCQllbHNlIHRhcmdldC5pbm5l
      ckhUTUw9ICI8ZGl2IGNsYXNzPSdlcnJvcic+RXJyb3I6ICIgKyB4LnN0YXR1cyAr
      ICIgIiArIHguc3RhdHVzVGV4dCArICIgKCIgKyB4LnJlc3BvbnNlVGV4dCArICIp
      PC9kaXY+IjsKCQkJfQoJCX0KCQllbHNlIHsKCQkJYWxlcnQoImJhZCB0YXJnZXQg
      Zm9yIHNhamF4X2RvX2NhbGw6IG5vdCBhIGZ1bmN0aW9uIG9yIG9iamVjdDogIiAr
      IHRhcmdldCk7CgkJfQoKCQlyZXR1cm47Cgl9CgoJc2FqYXhfZGVidWcoZnVuY19u
      YW1lICsgIiB1cmkgPSAiICsgdXJpICsgIiAvIHBvc3QgPSAiICsgcG9zdF9kYXRh
      KTsKCXguc2VuZChwb3N0X2RhdGEpOwoJc2FqYXhfZGVidWcoZnVuY19uYW1lICsg
      IiB3YWl0aW5nLi4iKTsKCWRlbGV0ZSB4OwoKCXJldHVybiB0cnVlOwp9CgovKioK
      ICogQHJldHVybiBib29sZWFuIHdoZXRoZXIgdGhlIGJyb3dzZXIgc3VwcG9ydHMg
      WE1MSHR0cFJlcXVlc3QKICovCmZ1bmN0aW9uIHdmU3VwcG9ydHNBamF4KCkgewoJ
      dmFyIHJlcXVlc3QgPSBzYWpheF9pbml0X29iamVjdCgpOwoJdmFyIHN1cHBvcnRz
      QWpheCA9IHJlcXVlc3QgPyB0cnVlIDogZmFsc2U7CglkZWxldGUgcmVxdWVzdDsK
      CXJldHVybiBzdXBwb3J0c0FqYXg7Cn0KCg==
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=mwsuggest.js
      Content-Type: application/x-javascript; charset=UTF-8; name=mwsuggest.js
      Content-Location: http://bits.wikimedia.org/skins-1.5/common/mwsuggest.js?270z52
      Content-Transfer-Encoding: Base64
      
      LyoKICogT3BlblNlYXJjaCBhamF4IHN1Z2dlc3Rpb24gZW5naW5lIGZvciBNZWRp
      YVdpa2kKICoKICogdXNlcyBjb3JlIE1lZGlhV2lraSBvcGVuIHNlYXJjaCBzdXBw
      b3J0IHRvIGZldGNoIHN1Z2dlc3Rpb25zCiAqIGFuZCBzaG93IHRoZW0gYmVsb3cg
      c2VhcmNoIGJveGVzIGFuZCBvdGhlciBpbnB1dHMKICoKICogYnkgUm9iZXJ0IFN0
      b2puaWMgKEFwcmlsIDIwMDgpCiAqLwoKLy8gc2VhcmNoX2JveF9pZCAtPiBSZXN1
      bHRzIG9iamVjdAp2YXIgb3NfbWFwID0ge307Ci8vIGNhY2hlZCBkYXRhLCB1cmwg
      LT4ganNvbl90ZXh0CnZhciBvc19jYWNoZSA9IHt9OwovLyBnbG9iYWwgdmFyaWFi
      bGVzIGZvciBzdWdnZXN0X2tleXByZXNzCnZhciBvc19jdXJfa2V5cHJlc3NlZCA9
      IDA7CnZhciBvc19rZXlwcmVzc2VkX2NvdW50ID0gMDsKLy8gdHlwZTogVGltZXIK
      dmFyIG9zX3RpbWVyID0gbnVsbDsKLy8gdGllIG1vdXNlZG93bi91cCBldmVudHMK
      dmFyIG9zX21vdXNlX3ByZXNzZWQgPSBmYWxzZTsKdmFyIG9zX21vdXNlX251bSA9
      IC0xOwovLyBpZiB0cnVlLCB0aGUgbGFzdCBjaGFuZ2Ugd2FzIG1hZGUgYnkgbW91
      c2UgKGFuZCBub3Qga2V5Ym9hcmQpCnZhciBvc19tb3VzZV9tb3ZlZCA9IGZhbHNl
      OwovLyBkZWxheSBiZXR3ZWVuIGtleXByZXNzIGFuZCBzdWdnZXN0aW9uIChpbiBt
      cykKdmFyIG9zX3NlYXJjaF90aW1lb3V0ID0gMjUwOwovLyB0aGVzZSBwYWlycyBv
      ZiBpbnB1dHMvZm9ybXMgd2lsbCBiZSBhdXRvbG9hZGVkIGF0IHN0YXJ0dXAKdmFy
      IG9zX2F1dG9sb2FkX2lucHV0cyA9IG5ldyBBcnJheSgnc2VhcmNoSW5wdXQnLCAn
      c2VhcmNoSW5wdXQyJywgJ3Bvd2VyU2VhcmNoVGV4dCcsICdzZWFyY2hUZXh0Jyk7
      CnZhciBvc19hdXRvbG9hZF9mb3JtcyA9IG5ldyBBcnJheSgnc2VhcmNoZm9ybScs
      ICdzZWFyY2hmb3JtMicsICdwb3dlcnNlYXJjaCcsICdzZWFyY2gnICk7Ci8vIGlm
      IHdlIHN0b3BwZWQgdGhlIHNlcnZpY2UKdmFyIG9zX2lzX3N0b3BwZWQgPSBmYWxz
      ZTsKLy8gbWF4IGxpbmVzIHRvIHNob3cgaW4gc3VnZ2VzdCB0YWJsZQp2YXIgb3Nf
      bWF4X2xpbmVzX3Blcl9zdWdnZXN0ID0gNzsKLy8gbnVtYmVyIG9mIHN0ZXBzIHRv
      IGFuaW1hdGUgZXhwYW5zaW9uL2NvbnRyYWN0aW9uIG9mIGNvbnRhaW5lciB3aWR0
      aAp2YXIgb3NfYW5pbWF0aW9uX3N0ZXBzID0gNjsKLy8gbnVtIG9mIHBpeGVscyBv
      ZiBzbWFsbGVzdCBzdGVwCnZhciBvc19hbmltYXRpb25fbWluX3N0ZXAgPSAyOwov
      LyBkZWxheSBiZXR3ZWVuIHN0ZXBzIChpbiBtcykKdmFyIG9zX2FuaW1hdGlvbl9k
      ZWxheSA9IDMwOwovLyBtYXggd2lkdGggb2YgY29udGFpbmVyIGluIHBlcmNlbnQg
      b2Ygbm9ybWFsIHNpemUgKDEgPT0gMTAwJSkKdmFyIG9zX2NvbnRhaW5lcl9tYXhf
      d2lkdGggPSAyOwovLyBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbiB0aW1lcgp2
      YXIgb3NfYW5pbWF0aW9uX3RpbWVyID0gbnVsbDsKLyoqCiAqIDxkYXRhbGlzdD4g
      aXMgYSBuZXcgSFRNTDUgZWxlbWVudCB0aGF0IGFsbG93cyB5b3UgdG8gbWFudWFs
      bHkgc3VwcGx5CiAqIHN1Z2dlc3Rpb24gbGlzdHMgYW5kIGhhdmUgdGhlbSByZW5k
      ZXJlZCBhY2NvcmRpbmcgdG8gdGhlIHJpZ2h0IHBsYXRmb3JtCiAqIGNvbnZlbnRp
      b25zLiAgSG93ZXZlciwgdGhlIG9ubHkgc2hpcHBpbmcgYnJvd3NlciBhcyBvZiBl
      YXJseSAyMDEwIGlzIE9wZXJhLAogKiBhbmQgdGhhdCBoYXMgYSBmYXRhbCBwcm9i
      bGVtOiB0aGUgc3VnZ2VzdGlvbiBsYWdzIGJlaGluZCB3aGF0IHRoZSB1c2VyIHR5
      cGVzCiAqIGJ5IG9uZSBrZXlwcmVzcy4gIChSZXBvcnRlZCBhcyBEU0stMjc2ODcw
      IHRvIE9wZXJhJ3Mgc2VjcmV0IGJ1ZyB0cmFja2VyLikKICogVGhlIGNvZGUgaGVy
      ZSBvdGhlcndpc2Ugc2VlbXMgdG8gd29yaywgdGhvdWdoLCBzbyB0aGlzIGNhbiBi
      ZSBmbGlwcGVkIG9uCiAqIChtYXliZSB3aXRoIGEgVUEgY2hlY2spIHdoZW4gc29t
      ZSBicm93c2VyIGhhcyBhIGJldHRlciBpbXBsZW1lbnRhdGlvbi4KICovCi8vIHZh
      ciBvc191c2VfZGF0YWxpc3QgPSAnbGlzdCcgaW4gZG9jdW1lbnQuY3JlYXRlRWxl
      bWVudCggJ2lucHV0JyApOwp2YXIgb3NfdXNlX2RhdGFsaXN0ID0gZmFsc2U7Cgov
      KiogVGltZW91dCB0aW1lciBjbGFzcyB0aGF0IHdpbGwgZmV0Y2ggdGhlIHJlc3Vs
      dHMgKi8KZnVuY3Rpb24gb3NfVGltZXIoIGlkLCByLCBxdWVyeSApIHsKCXRoaXMu
      aWQgPSBpZDsKCXRoaXMuciA9IHI7Cgl0aGlzLnF1ZXJ5ID0gcXVlcnk7Cn0KCi8q
      KiBQcm9wZXJ0eSBjbGFzcyBmb3Igc2luZ2xlIHNlYXJjaCBib3ggKi8KZnVuY3Rp
      b24gb3NfUmVzdWx0cyggbmFtZSwgZm9ybW5hbWUgKSB7Cgl0aGlzLnNlYXJjaGZv
      cm0gPSBmb3JtbmFtZTsgLy8gaWQgb2YgdGhlIHNlYXJjaGZvcm0KCXRoaXMuc2Vh
      cmNoYm94ID0gbmFtZTsgLy8gaWQgb2YgdGhlIHNlYXJjaGJveAoJdGhpcy5jb250
      YWluZXIgPSBuYW1lICsgJ1N1Z2dlc3QnOyAvLyBkaXYgdGhhdCBob2xkcyByZXN1
      bHRzCgl0aGlzLnJlc3VsdFRhYmxlID0gbmFtZSArICdSZXN1bHQnOyAvLyBpZCBi
      YXNlIGZvciB0aGUgcmVzdWx0IHRhYmxlICgrbnVtID0gdGFibGUgcm93KQoJdGhp
      cy5yZXN1bHRUZXh0ID0gbmFtZSArICdSZXN1bHRUZXh0JzsgLy8gaWQgYmFzZSBm
      b3IgdGhlIHNwYW5zIHdpdGhpbiByZXN1bHQgdGFibGVzICgrbnVtKQoJdGhpcy50
      b2dnbGUgPSBuYW1lICsgJ1RvZ2dsZSc7IC8vIGRpdiB0aGF0IGhhcyB0aGUgdG9n
      Z2xlIChlbmFibGUvZGlzYWJsZSkgbGluawoJdGhpcy5xdWVyeSA9IG51bGw7IC8v
      IGxhc3QgcHJvY2Vzc2VkIHF1ZXJ5Cgl0aGlzLnJlc3VsdHMgPSBudWxsOyAgLy8g
      cGFyc2VkIHRpdGxlcwoJdGhpcy5yZXN1bHRDb3VudCA9IDA7IC8vIG51bWJlciBv
      ZiByZXN1bHRzCgl0aGlzLm9yaWdpbmFsID0gbnVsbDsgLy8gcXVlcnkgdGhhdCB1
      c2VyIGVudGVyZWQKCXRoaXMuc2VsZWN0ZWQgPSAtMTsgLy8gd2hpY2ggcmVzdWx0
      IGlzIHNlbGVjdGVkCgl0aGlzLmNvbnRhaW5lckNvdW50ID0gMDsgLy8gbnVtYmVy
      IG9mIHJlc3VsdHMgdmlzaWJsZSBpbiBjb250YWluZXIKCXRoaXMuY29udGFpbmVy
      Um93ID0gMDsgLy8gaGVpZ2h0IG9mIHJlc3VsdCBmaWVsZCBpbiB0aGUgY29udGFp
      bmVyCgl0aGlzLmNvbnRhaW5lclRvdGFsID0gMDsgLy8gdG90YWwgaGVpZ2h0IG9m
      IHRoZSBjb250YWluZXIgd2lsbCBhbGwgcmVzdWx0cwoJdGhpcy52aXNpYmxlID0g
      ZmFsc2U7IC8vIGlmIGNvbnRhaW5lciBpcyB2aXNpYmxlCgl0aGlzLnN0YXlIaWRk
      ZW4gPSBmYWxzZTsgLy8gZG9uJ3QgdHJ5IHRvIHNob3cgaWYgbG9zdCBmb2N1cwp9
      CgovKiogVGltZXIgdXNlciB0byBhbmltYXRlIGV4cGFuc2lvbi9jb250cmFjdGlv
      biBvZiBjb250YWluZXIgd2lkdGggKi8KZnVuY3Rpb24gb3NfQW5pbWF0aW9uVGlt
      ZXIoIHIsIHRhcmdldCApIHsKCXRoaXMuciA9IHI7Cgl2YXIgY3VycmVudCA9IGRv
      Y3VtZW50LmdldEVsZW1lbnRCeUlkKHIuY29udGFpbmVyKS5vZmZzZXRXaWR0aDsK
      CXRoaXMuaW5jID0gTWF0aC5yb3VuZCggKCB0YXJnZXQgLSBjdXJyZW50ICkgLyBv
      c19hbmltYXRpb25fc3RlcHMgKTsKCWlmKCB0aGlzLmluYyA8IG9zX2FuaW1hdGlv
      bl9taW5fc3RlcCAmJiB0aGlzLmluYyA+PTAgKSB7CgkJdGhpcy5pbmMgPSBvc19h
      bmltYXRpb25fbWluX3N0ZXA7IC8vIG1pbmltYWwgYW5pbWF0aW9uIHN0ZXAKCX0K
      CWlmKCB0aGlzLmluYyA+IC1vc19hbmltYXRpb25fbWluX3N0ZXAgJiYgdGhpcy5p
      bmMgPCAwICkgewoJCXRoaXMuaW5jID0gLW9zX2FuaW1hdGlvbl9taW5fc3RlcDsK
      CX0KCXRoaXMudGFyZ2V0ID0gdGFyZ2V0Owp9CgovKioqKioqKioqKioqKioqKioq
      CiAqIEluaXRpYWxpemF0aW9uCiAqKioqKioqKioqKioqKioqKiovCgovKiogSW5p
      dGlhbGl6YXRpb24sIGNhbGwgdXBvbiBwYWdlIG9ubG9hZCAqLwpmdW5jdGlvbiBv
      c19NV1N1Z2dlc3RJbml0KCkgewoJZm9yKCBpID0gMDsgaSA8IG9zX2F1dG9sb2Fk
      X2lucHV0cy5sZW5ndGg7IGkrKyApIHsKCQl2YXIgaWQgPSBvc19hdXRvbG9hZF9p
      bnB1dHNbaV07CgkJdmFyIGZvcm0gPSBvc19hdXRvbG9hZF9mb3Jtc1tpXTsKCQll
      bGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIGlkICk7CgkJaWYoIGVs
      ZW1lbnQgIT0gbnVsbCApIHsKCQkJb3NfaW5pdEhhbmRsZXJzKCBpZCwgZm9ybSwg
      ZWxlbWVudCApOwoJCX0KCX0KfQoKLyoqIEluaXQgUmVzdWx0IG9iamVjdHMgYW5k
      IGV2ZW50IGhhbmRsZXJzICovCmZ1bmN0aW9uIG9zX2luaXRIYW5kbGVycyggbmFt
      ZSwgZm9ybW5hbWUsIGVsZW1lbnQgKSB7Cgl2YXIgciA9IG5ldyBvc19SZXN1bHRz
      KCBuYW1lLCBmb3JtbmFtZSApOwoJLy8gZXZlbnQgaGFuZGxlcgoJb3NfaG9va0V2
      ZW50KCBlbGVtZW50LCAna2V5dXAnLCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2
      ZW50S2V5dXAoIGV2ZW50ICk7IH0gKTsKCW9zX2hvb2tFdmVudCggZWxlbWVudCwg
      J2tleWRvd24nLCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2ZW50S2V5ZG93bigg
      ZXZlbnQgKTsgfSApOwoJb3NfaG9va0V2ZW50KCBlbGVtZW50LCAna2V5cHJlc3Mn
      LCBmdW5jdGlvbiggZXZlbnQgKSB7IG9zX2V2ZW50S2V5cHJlc3MoIGV2ZW50ICk7
      IH0gKTsKCWlmICggIW9zX3VzZV9kYXRhbGlzdCApIHsKCQkvLyBUaGVzZSBhcmUg
      bmVlZGVkIGZvciB0aGUgZGl2IGhhY2sgdG8gaGlkZSBpdCBpZiB0aGUgdXNlciBi
      bHVycy4KCQlvc19ob29rRXZlbnQoIGVsZW1lbnQsICdibHVyJywgZnVuY3Rpb24o
      IGV2ZW50ICkgeyBvc19ldmVudEJsdXIoIGV2ZW50ICk7IH0gKTsKCQlvc19ob29r
      RXZlbnQoIGVsZW1lbnQsICdmb2N1cycsIGZ1bmN0aW9uKCBldmVudCApIHsgb3Nf
      ZXZlbnRGb2N1cyggZXZlbnQgKTsgfSApOwoJCS8vIFdlIGRvbid0IHdhbnQgYnJv
      d3NlciBhdXRvLXN1Z2dlc3Rpb25zIGludGVyZmVyaW5nIHdpdGggb3VyIGRpdiwg
      YnV0CgkJLy8gYXV0b2NvbXBsZXRlIG11c3QgYmUgb24gZm9yIGRhdGFsaXN0IHRv
      IHdvcmsgKGF0IGxlYXN0IGluIE9wZXJhCgkJLy8gMTAuMTApLgoJCWVsZW1lbnQu
      c2V0QXR0cmlidXRlKCAnYXV0b2NvbXBsZXRlJywgJ29mZicgKTsKCX0KCS8vIHN0
      b3BwaW5nIGhhbmRsZXIKCW9zX2hvb2tFdmVudCggZG9jdW1lbnQuZ2V0RWxlbWVu
      dEJ5SWQoIGZvcm1uYW1lICksICdzdWJtaXQnLCBmdW5jdGlvbiggZXZlbnQgKSB7
      IHJldHVybiBvc19ldmVudE9uc3VibWl0KCBldmVudCApOyB9ICk7Cglvc19tYXBb
      bmFtZV0gPSByOwoJLy8gdG9nZ2xlIGxpbmsKCWlmKCBkb2N1bWVudC5nZXRFbGVt
      ZW50QnlJZCggci50b2dnbGUgKSA9PSBudWxsICkgewoJCS8vIFRPRE86IGRpc2Fi
      bGUgdGhpcyB3aGlsZSB3ZSBmaWd1cmUgb3V0IGEgd2F5IGZvciB0aGlzIHRvIHdv
      cmsgaW4gYWxsIGJyb3dzZXJzCgkJLyogaWYoIG5hbWUgPT0gJ3NlYXJjaElucHV0
      JyApIHsKCQkJLy8gc3BlY2lhbCBjYXNlOiBwbGFjZSBhYm92ZSB0aGUgbWFpbiBz
      ZWFyY2ggYm94CgkJCXZhciB0ID0gb3NfY3JlYXRlVG9nZ2xlKCByLCAnb3Mtc3Vn
      Z2VzdC10b2dnbGUnICk7CgkJCXZhciBzZWFyY2hCb2R5ID0gZG9jdW1lbnQuZ2V0
      RWxlbWVudEJ5SWQoICdzZWFyY2hCb2R5JyApOwoJCQl2YXIgZmlyc3QgPSBzZWFy
      Y2hCb2R5LnBhcmVudE5vZGUuZmlyc3RDaGlsZC5uZXh0U2libGluZy5hcHBlbmRD
      aGlsZCh0KTsKCQl9IGVsc2UgewoJCQkvLyBkZWZhdWx0OiBwbGFjZSBiZWxvdyBz
      ZWFyY2ggYm94IHRvIHRoZSByaWdodAoJCQl2YXIgdCA9IG9zX2NyZWF0ZVRvZ2ds
      ZSggciwgJ29zLXN1Z2dlc3QtdG9nZ2xlLWRlZicgKTsKCQkJdmFyIHRvcCA9IGVs
      ZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQ7CgkJCXZhciBs
      ZWZ0ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aDsK
      CQkJdC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CgkJCXQuc3R5bGUudG9w
      ID0gdG9wICsgJ3B4JzsKCQkJdC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CgkJ
      CWVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCggdCApOwoJCQkvLyBvbmx5
      IG5vdyB3aWR0aCBnZXRzIGNhbGN1bGF0ZWQsIHNoaWZ0IHJpZ2h0CgkJCWxlZnQg
      LT0gdC5vZmZzZXRXaWR0aDsKCQkJdC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7
      CgkJCXQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJzsKCQl9ICovCgl9Cgp9
      CgpmdW5jdGlvbiBvc19ob29rRXZlbnQoIGVsZW1lbnQsIGhvb2tOYW1lLCBob29r
      RnVuY3QgKSB7CglpZiAoIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciApIHsKCQll
      bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIGhvb2tOYW1lLCBob29rRnVuY3QsIGZh
      bHNlICk7Cgl9IGVsc2UgaWYgKCB3aW5kb3cuYXR0YWNoRXZlbnQgKSB7CgkJZWxl
      bWVudC5hdHRhY2hFdmVudCggJ29uJyArIGhvb2tOYW1lLCBob29rRnVuY3QgKTsK
      CX0KfQoKLyoqKioqKioqKioqKioqKioqKioqCiAqICBLZXlib2FyZCBldmVudHMK
      ICoqKioqKioqKioqKioqKioqKioqLwoKLyoqIEV2ZW50IGhhbmRsZXIgdGhhdCB3
      aWxsIGZldGNoIHJlc3VsdHMgb24ga2V5dXAgKi8KZnVuY3Rpb24gb3NfZXZlbnRL
      ZXl1cCggZSApIHsKCXZhciB0YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7Cgl2YXIg
      ciA9IG9zX21hcFt0YXJnLmlkXTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJu
      OyAvLyBub3Qgb3VyIGV2ZW50Cgl9CgoJLy8gc29tZSBicm93c2VycyB3b24ndCBn
      ZW5lcmF0ZSBrZXlwcmVzc2VkIGZvciBhcnJvdyBrZXlzLCBjYXRjaCBpdAoJaWYo
      IG9zX2tleXByZXNzZWRfY291bnQgPT0gMCApIHsKCQlvc19wcm9jZXNzS2V5KCBy
      LCBvc19jdXJfa2V5cHJlc3NlZCwgdGFyZyApOwoJfQoJdmFyIHF1ZXJ5ID0gdGFy
      Zy52YWx1ZTsKCW9zX2ZldGNoUmVzdWx0cyggciwgcXVlcnksIG9zX3NlYXJjaF90
      aW1lb3V0ICk7Cn0KCi8qKiBjYXRjaCBhcnJvd3MgdXAvZG93biBhbmQgZXNjYXBl
      IHRvIGhpZGUgdGhlIHN1Z2dlc3Rpb25zICovCmZ1bmN0aW9uIG9zX3Byb2Nlc3NL
      ZXkoIHIsIGtleXByZXNzZWQsIHRhcmcgKSB7CglpZiAoIGtleXByZXNzZWQgPT0g
      NDAgJiYgIXIudmlzaWJsZSAmJiBvc190aW1lciA9PSBudWxsICkgewoJCS8vIElm
      IHRoZSB1c2VyIGhpdHMgdGhlIGRvd24gYXJyb3csIGZldGNoIHJlc3VsdHMgaW1t
      ZWRpYXRlbHkgaWYgbm9uZQoJCS8vIGFyZSBhbHJlYWR5IGRpc3BsYXllZC4KCQly
      LnF1ZXJ5ID0gJyc7CgkJb3NfZmV0Y2hSZXN1bHRzKCByLCB0YXJnLnZhbHVlLCAw
      ICk7Cgl9CgkvLyBPdGhlcndpc2UsIGlmIHdlJ3JlIG5vdCB1c2luZyBkYXRhbGlz
      dCwgd2UgbmVlZCB0byBoYW5kbGUgc2Nyb2xsaW5nIGFuZAoJLy8gc28gb24uCglp
      ZiAoIG9zX3VzZV9kYXRhbGlzdCApIHsKCQlyZXR1cm47Cgl9CglpZiAoIGtleXBy
      ZXNzZWQgPT0gNDAgKSB7IC8vIEFycm93IERvd24KCQlpZiAoIHIudmlzaWJsZSAp
      IHsKCQkJb3NfY2hhbmdlSGlnaGxpZ2h0KCByLCByLnNlbGVjdGVkLCByLnNlbGVj
      dGVkICsgMSwgdHJ1ZSApOwoJCX0KCX0gZWxzZSBpZiAoIGtleXByZXNzZWQgPT0g
      MzggKSB7IC8vIEFycm93IFVwCgkJaWYgKCByLnZpc2libGUgKSB7CgkJCW9zX2No
      YW5nZUhpZ2hsaWdodCggciwgci5zZWxlY3RlZCwgci5zZWxlY3RlZCAtIDEsIHRy
      dWUgKTsKCQl9Cgl9IGVsc2UgaWYoIGtleXByZXNzZWQgPT0gMjcgKSB7IC8vIEVz
      Y2FwZQoJCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnZh
      bHVlID0gci5vcmlnaW5hbDsKCQlyLnF1ZXJ5ID0gci5vcmlnaW5hbDsKCQlvc19o
      aWRlUmVzdWx0cyggciApOwoJfSBlbHNlIGlmKCByLnF1ZXJ5ICE9IGRvY3VtZW50
      LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnZhbHVlICkgewoJCS8vIG9z
      X2hpZGVSZXN1bHRzKCByICk7IC8vIGRvbid0IHNob3cgb2xkIHN1Z2dlc3Rpb25z
      Cgl9Cn0KCi8qKiBXaGVuIGtleXMgaXMgaGVsZCBkb3duIHVzZSBhIHRpbWVyIHRv
      IG91dHB1dCByZWd1bGFyIGV2ZW50cyAqLwpmdW5jdGlvbiBvc19ldmVudEtleXBy
      ZXNzKCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciBy
      ID0gb3NfbWFwW3RhcmcuaWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47
      IC8vIG5vdCBvdXIgZXZlbnQKCX0KCgl2YXIga2V5cHJlc3NlZCA9IG9zX2N1cl9r
      ZXlwcmVzc2VkOwoKCW9zX2tleXByZXNzZWRfY291bnQrKzsKCW9zX3Byb2Nlc3NL
      ZXkoIHIsIGtleXByZXNzZWQsIHRhcmcgKTsKfQoKLyoqIENhdGNoIHRoZSBrZXkg
      Y29kZSAoRmlyZWZveCBidWcpICovCmZ1bmN0aW9uIG9zX2V2ZW50S2V5ZG93bigg
      ZSApIHsKCWlmICggIWUgKSB7CgkJZSA9IHdpbmRvdy5ldmVudDsKCX0KCXZhciB0
      YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7Cgl2YXIgciA9IG9zX21hcFt0YXJnLmlk
      XTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJuOyAvLyBub3Qgb3VyIGV2ZW50
      Cgl9CgoJb3NfbW91c2VfbW92ZWQgPSBmYWxzZTsKCglvc19jdXJfa2V5cHJlc3Nl
      ZCA9ICggZS5rZXlDb2RlID09IHVuZGVmaW5lZCApID8gZS53aGljaCA6IGUua2V5
      Q29kZTsKCW9zX2tleXByZXNzZWRfY291bnQgPSAwOwp9CgoKLyoqIFdoZW4gdGhl
      IGZvcm0gaXMgc3VibWl0dGVkIGhpZGUgZXZlcnl0aGluZywgY2FuY2VsIHVwZGF0
      ZXMuLi4gKi8KZnVuY3Rpb24gb3NfZXZlbnRPbnN1Ym1pdCggZSApIHsKCXZhciB0
      YXJnID0gb3NfZ2V0VGFyZ2V0KCBlICk7CgoJb3NfaXNfc3RvcHBlZCA9IHRydWU7
      CgkvLyBraWxsIHRpbWVkIHJlcXVlc3RzCglpZiggb3NfdGltZXIgIT0gbnVsbCAm
      JiBvc190aW1lci5pZCAhPSBudWxsICkgewoJCWNsZWFyVGltZW91dCggb3NfdGlt
      ZXIuaWQgKTsKCQlvc190aW1lciA9IG51bGw7Cgl9CgkvLyBIaWRlIGFsbCBzdWdn
      ZXN0aW9ucwoJZm9yKCBpID0gMDsgaSA8IG9zX2F1dG9sb2FkX2lucHV0cy5sZW5n
      dGg7IGkrKyApIHsKCQl2YXIgciA9IG9zX21hcFtvc19hdXRvbG9hZF9pbnB1dHNb
      aV1dOwoJCWlmKCByICE9IG51bGwgKSB7CgkJCXZhciBiID0gZG9jdW1lbnQuZ2V0
      RWxlbWVudEJ5SWQoIHIuc2VhcmNoZm9ybSApOwoJCQlpZiggYiAhPSBudWxsICYm
      IGIgPT0gdGFyZyApIHsKCQkJCS8vIHNldCBxdWVyeSB2YWx1ZSBzbyB0aGUgaGFu
      ZGxlciB3b24ndCB0cnkgdG8gZmV0Y2ggYWRkaXRpb25hbCByZXN1bHRzCgkJCQly
      LnF1ZXJ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2VhcmNoYm94ICku
      dmFsdWU7CgkJCX0KCQkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCQl9Cgl9CglyZXR1
      cm4gdHJ1ZTsKfQoKCgovKiogSGlkZSByZXN1bHRzIGZyb20gdGhlIHVzZXIsIGVp
      dGhlciBtYWtpbmcgdGhlIGRpdiB2aXNpYmlsaXR5PWhpZGRlbiBvcgogKiBkZXRh
      Y2hpbmcgdGhlIGRhdGFsaXN0IGZyb20gdGhlIGlucHV0LiAqLwpmdW5jdGlvbiBv
      c19oaWRlUmVzdWx0cyggciApIHsKCWlmICggb3NfdXNlX2RhdGFsaXN0ICkgewoJ
      CWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNlYXJjaGJveCApLnNldEF0dHJp
      YnV0ZSggJ2xpc3QnLCAnJyApOwoJfSBlbHNlIHsKCQl2YXIgYyA9IGRvY3VtZW50
      LmdldEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApOwoJCWlmICggYyAhPSBudWxs
      ICkgewoJCQljLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKCQl9Cgl9Cgly
      LnZpc2libGUgPSBmYWxzZTsKCXIuc2VsZWN0ZWQgPSAtMTsKfQoKZnVuY3Rpb24g
      b3NfZGVjb2RlVmFsdWUoIHZhbHVlICkgewoJaWYgKCBkZWNvZGVVUklDb21wb25l
      bnQgKSB7CgkJcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKCX0K
      CWlmKCB1bmVzY2FwZSApIHsKCQlyZXR1cm4gdW5lc2NhcGUoIHZhbHVlICk7Cgl9
      CglyZXR1cm4gbnVsbDsKfQoKZnVuY3Rpb24gb3NfZW5jb2RlUXVlcnkoIHZhbHVl
      ICkgewoJaWYgKCBlbmNvZGVVUklDb21wb25lbnQgKSB7CgkJcmV0dXJuIGVuY29k
      ZVVSSUNvbXBvbmVudCggdmFsdWUgKTsKCX0KCWlmKCBlc2NhcGUgKSB7CgkJcmV0
      dXJuIGVzY2FwZSggdmFsdWUgKTsKCX0KCXJldHVybiBudWxsOwp9CgovKiogSGFu
      ZGxlcyBkYXRhIGZyb20gWE1MSHR0cFJlcXVlc3QsIGFuZCB1cGRhdGVzIHRoZSBz
      dWdnZXN0IHJlc3VsdHMgKi8KZnVuY3Rpb24gb3NfdXBkYXRlUmVzdWx0cyggciwg
      cXVlcnksIHRleHQsIGNhY2hlS2V5ICkgewoJb3NfY2FjaGVbY2FjaGVLZXldID0g
      dGV4dDsKCXIucXVlcnkgPSBxdWVyeTsKCXIub3JpZ2luYWwgPSBxdWVyeTsKCWlm
      KCB0ZXh0ID09ICcnICkgewoJCXIucmVzdWx0cyA9IG51bGw7CgkJci5yZXN1bHRD
      b3VudCA9IDA7CgkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCX0gZWxzZSB7CgkJdHJ5
      IHsKCQkJdmFyIHAgPSBldmFsKCAnKCcgKyB0ZXh0ICsgJyknICk7IC8vIHNpbXBs
      ZSBqc29uIHBhcnNlLCBjb3VsZCBkbyBhIHNhZmVyIG9uZQoJCQlpZiggcC5sZW5n
      dGggPCAyIHx8IHBbMV0ubGVuZ3RoID09IDAgKSB7CgkJCQlyLnJlc3VsdHMgPSBu
      dWxsOwoJCQkJci5yZXN1bHRDb3VudCA9IDA7CgkJCQlvc19oaWRlUmVzdWx0cygg
      ciApOwoJCQkJcmV0dXJuOwoJCQl9CgkJCWlmICggb3NfdXNlX2RhdGFsaXN0ICkg
      ewoJCQkJb3Nfc2V0dXBEYXRhbGlzdCggciwgcFsxXSApOwoJCQl9IGVsc2UgewoJ
      CQkJb3Nfc2V0dXBEaXYoIHIsIHBbMV0gKTsKCQkJfQoJCX0gY2F0Y2goIGUgKSB7
      CgkJCS8vIGJhZCByZXNwb25zZSBmcm9tIHNlcnZlciBvciBzdWNoCgkJCW9zX2hp
      ZGVSZXN1bHRzKCByICk7CgkJCW9zX2NhY2hlW2NhY2hlS2V5XSA9IG51bGw7CgkJ
      fQoJfQp9CgovKioKICogQ3JlYXRlIGFuZCBwb3B1bGF0ZSBhIDxkYXRhbGlzdD4u
      CiAqCiAqIEBwYXJhbSByICAgICAgIG9zX1Jlc3VsdCBvYmplY3QKICogQHBhcmFt
      IHJlc3VsdHMgQXJyYXkgb2YgdGhlIG5ldyByZXN1bHRzIHRvIHJlcGxhY2UgZXhp
      c3Rpbmcgb25lcwogKi8KZnVuY3Rpb24gb3Nfc2V0dXBEYXRhbGlzdCggciwgcmVz
      dWx0cyApIHsKCXZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2Vh
      cmNoYm94ICk7Cgl2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNv
      bnRhaW5lciApOwoJaWYgKCBjID09IG51bGwgKSB7CgkJYyA9IGRvY3VtZW50LmNy
      ZWF0ZUVsZW1lbnQoICdkYXRhbGlzdCcgKTsKCQljLnNldEF0dHJpYnV0ZSggJ2lk
      Jywgci5jb250YWluZXIgKTsKCQlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKCBj
      ICk7Cgl9IGVsc2UgewoJCWMuaW5uZXJIVE1MID0gJyc7Cgl9CglzLnNldEF0dHJp
      YnV0ZSggJ2xpc3QnLCByLmNvbnRhaW5lciApOwoKCXIucmVzdWx0cyA9IG5ldyBB
      cnJheSgpOwoJci5yZXN1bHRDb3VudCA9IHJlc3VsdHMubGVuZ3RoOwoJci52aXNp
      YmxlID0gdHJ1ZTsKCWZvciAoIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkr
      KyApIHsKCQl2YXIgdGl0bGUgPSBvc19kZWNvZGVWYWx1ZSggcmVzdWx0c1tpXSAp
      OwoJCXZhciBvcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCAnb3B0aW9uJyAp
      OwoJCW9wdC52YWx1ZSA9IHRpdGxlOwoJCXIucmVzdWx0c1tpXSA9IHRpdGxlOwoJ
      CWMuYXBwZW5kQ2hpbGQoIG9wdCApOwoJfQp9CgovKiogRmV0Y2ggbmFtZXNwYWNl
      cyBmcm9tIGNoZWNrYm94ZXMgb3IgaGlkZGVuIGZpZWxkcyBpbiB0aGUgc2VhcmNo
      IGZvcm0sCiAgICBpZiBub25lIGRlZmluZWQgdXNlIHdnU2VhcmNoTmFtZXNwYWNl
      cyBnbG9iYWwgKi8KZnVuY3Rpb24gb3NfZ2V0TmFtZXNwYWNlcyggciApIHsKCXZh
      ciBuYW1lc3BhY2VzID0gJyc7Cgl2YXIgZWxlbWVudHMgPSBkb2N1bWVudC5mb3Jt
      c1tyLnNlYXJjaGZvcm1dLmVsZW1lbnRzOwoJZm9yKCBpID0gMDsgaSA8IGVsZW1l
      bnRzLmxlbmd0aDsgaSsrICkgewoJCXZhciBuYW1lID0gZWxlbWVudHNbaV0ubmFt
      ZTsKCQlpZiggdHlwZW9mIG5hbWUgIT0gJ3VuZGVmaW5lZCcgJiYgbmFtZS5sZW5n
      dGggPiAyICYmIG5hbWVbMF0gPT0gJ24nICYmCgkJCW5hbWVbMV0gPT0gJ3MnICYm
      ICgKCQkJCSggZWxlbWVudHNbaV0udHlwZSA9PSAnY2hlY2tib3gnICYmIGVsZW1l
      bnRzW2ldLmNoZWNrZWQgKSB8fAoJCQkJKCBlbGVtZW50c1tpXS50eXBlID09ICdo
      aWRkZW4nICYmIGVsZW1lbnRzW2ldLnZhbHVlID09ICcxJyApCgkJCSkKCQkpIHsK
      CQkJaWYoIG5hbWVzcGFjZXMgIT0gJycgKSB7CgkJCQluYW1lc3BhY2VzICs9ICd8
      JzsKCQkJfQoJCQluYW1lc3BhY2VzICs9IG5hbWUuc3Vic3RyaW5nKCAyICk7CgkJ
      fQoJfQoJaWYoIG5hbWVzcGFjZXMgPT0gJycgKSB7CgkJbmFtZXNwYWNlcyA9IHdn
      U2VhcmNoTmFtZXNwYWNlcy5qb2luKCd8Jyk7Cgl9CglyZXR1cm4gbmFtZXNwYWNl
      czsKfQoKLyoqIFVwZGF0ZSByZXN1bHRzIGlmIHVzZXIgaGFzbid0IGFscmVhZHkg
      dHlwZWQgc29tZXRoaW5nIGVsc2UgKi8KZnVuY3Rpb24gb3NfdXBkYXRlSWZSZWxl
      dmFudCggciwgcXVlcnksIHRleHQsIGNhY2hlS2V5ICkgewoJdmFyIHQgPSBkb2N1
      bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKTsKCWlmKCB0ICE9IG51
      bGwgJiYgdC52YWx1ZSA9PSBxdWVyeSApIHsgLy8gY2hlY2sgaWYgcmVzcG9uc2Ug
      aXMgc3RpbGwgcmVsZXZhbnQKCQlvc191cGRhdGVSZXN1bHRzKCByLCBxdWVyeSwg
      dGV4dCwgY2FjaGVLZXkgKTsKCX0KCXIucXVlcnkgPSBxdWVyeTsKfQoKLyoqIEZl
      dGNoIHJlc3VsdHMgYWZ0ZXIgc29tZSB0aW1lb3V0ICovCmZ1bmN0aW9uIG9zX2Rl
      bGF5ZWRGZXRjaCgpIHsKCWlmKCBvc190aW1lciA9PSBudWxsICkgewoJCXJldHVy
      bjsKCX0KCXZhciByID0gb3NfdGltZXIucjsKCXZhciBxdWVyeSA9IG9zX3RpbWVy
      LnF1ZXJ5OwoJb3NfdGltZXIgPSBudWxsOwoJdmFyIHBhdGggPSB3Z01XU3VnZ2Vz
      dFRlbXBsYXRlLnJlcGxhY2UoICJ7bmFtZXNwYWNlc30iLCBvc19nZXROYW1lc3Bh
      Y2VzKCByICkgKQoJCQkJCQkJCQkucmVwbGFjZSggIntkYm5hbWV9Iiwgd2dEQm5h
      bWUgKQoJCQkJCQkJCQkucmVwbGFjZSggIntzZWFyY2hUZXJtc30iLCBvc19lbmNv
      ZGVRdWVyeSggcXVlcnkgKSApOwoKCS8vIHRyeSB0byBnZXQgZnJvbSBjYWNoZSwg
      aWYgbm90IGZldGNoIHVzaW5nIGFqYXgKCXZhciBjYWNoZWQgPSBvc19jYWNoZVtw
      YXRoXTsKCWlmKCBjYWNoZWQgIT0gbnVsbCAmJiBjYWNoZWQgIT0gdW5kZWZpbmVk
      ICkgewoJCW9zX3VwZGF0ZUlmUmVsZXZhbnQoIHIsIHF1ZXJ5LCBjYWNoZWQsIHBh
      dGggKTsKCX0gZWxzZSB7CgkJdmFyIHhtbGh0dHAgPSBzYWpheF9pbml0X29iamVj
      dCgpOwoJCWlmKCB4bWxodHRwICkgewoJCQl0cnkgewoJCQkJeG1saHR0cC5vcGVu
      KCAnR0VUJywgcGF0aCwgdHJ1ZSApOwoJCQkJeG1saHR0cC5vbnJlYWR5c3RhdGVj
      aGFuZ2UgPSBmdW5jdGlvbigpIHsKCQkJCQlpZiAoIHhtbGh0dHAucmVhZHlTdGF0
      ZSA9PSA0ICYmIHR5cGVvZiBvc191cGRhdGVJZlJlbGV2YW50ID09ICdmdW5jdGlv
      bicgKSB7CgkJCQkJCW9zX3VwZGF0ZUlmUmVsZXZhbnQoIHIsIHF1ZXJ5LCB4bWxo
      dHRwLnJlc3BvbnNlVGV4dCwgcGF0aCApOwoJCQkJCX0KCQkJCX07CgkJCQl4bWxo
      dHRwLnNlbmQoIG51bGwgKTsKCQkJfSBjYXRjaCAoIGUgKSB7CgkJCQlpZiAoIHdp
      bmRvdy5sb2NhdGlvbi5ob3N0bmFtZSA9PSAnbG9jYWxob3N0JyApIHsKCQkJCQlh
      bGVydCggIllvdXIgYnJvd3NlciBibG9ja3MgWE1MSHR0cFJlcXVlc3QgdG8gJ2xv
      Y2FsaG9zdCcsIHRyeSB1c2luZyBhIHJlYWwgaG9zdG5hbWUgZm9yIGRldmVsb3Bt
      ZW50L3Rlc3RpbmcuIiApOwoJCQkJfQoJCQkJdGhyb3cgZTsKCQkJfQoJCX0KCX0K
      fQoKLyoqIEluaXQgdGltZWQgdXBkYXRlIHZpYSBvc19kZWxheWVkVXBkYXRlKCkg
      Ki8KZnVuY3Rpb24gb3NfZmV0Y2hSZXN1bHRzKCByLCBxdWVyeSwgdGltZW91dCAp
      IHsKCWlmKCBxdWVyeSA9PSAnJyApIHsKCQlyLnF1ZXJ5ID0gJyc7CgkJb3NfaGlk
      ZVJlc3VsdHMoIHIgKTsKCQlyZXR1cm47Cgl9IGVsc2UgaWYoIHF1ZXJ5ID09IHIu
      cXVlcnkgKSB7CgkJcmV0dXJuOyAvLyBubyBjaGFuZ2UKCX0KCglvc19pc19zdG9w
      cGVkID0gZmFsc2U7IC8vIG1ha2Ugc3VyZSB3ZSdyZSBydW5uaW5nCgoJLy8gY2Fu
      Y2VsIGFueSBwZW5kaW5nIGZldGNoZXMKCWlmKCBvc190aW1lciAhPSBudWxsICYm
      IG9zX3RpbWVyLmlkICE9IG51bGwgKSB7CgkJY2xlYXJUaW1lb3V0KCBvc190aW1l
      ci5pZCApOwoJfQoJLy8gc2NoZWR1bGUgZGVsYXllZCBmZXRjaGluZyBvZiByZXN1
      bHRzCglpZiggdGltZW91dCAhPSAwICkgewoJCW9zX3RpbWVyID0gbmV3IG9zX1Rp
      bWVyKCBzZXRUaW1lb3V0KCAib3NfZGVsYXllZEZldGNoKCkiLCB0aW1lb3V0ICks
      IHIsIHF1ZXJ5ICk7Cgl9IGVsc2UgewoJCW9zX3RpbWVyID0gbmV3IG9zX1RpbWVy
      KCBudWxsLCByLCBxdWVyeSApOwoJCW9zX2RlbGF5ZWRGZXRjaCgpOyAvLyBkbyBp
      dCBub3chCgl9Cn0KCi8qKiBGaW5kIGV2ZW50IHRhcmdldCAqLwpmdW5jdGlvbiBv
      c19nZXRUYXJnZXQoIGUgKSB7CglpZiAoICFlICkgewoJCWUgPSB3aW5kb3cuZXZl
      bnQ7Cgl9CglpZiAoIGUudGFyZ2V0ICkgewoJCXJldHVybiBlLnRhcmdldDsKCX0g
      ZWxzZSBpZiAoIGUuc3JjRWxlbWVudCApIHsKCQlyZXR1cm4gZS5zcmNFbGVtZW50
      OwoJfSBlbHNlIHsKCQlyZXR1cm4gbnVsbDsKCX0KfQoKLyoqIENoZWNrIGlmIHgg
      aXMgYSB2YWxpZCBpbnRlZ2VyICovCmZ1bmN0aW9uIG9zX2lzTnVtYmVyKCB4ICkg
      ewoJaWYoIHggPT0gJycgfHwgaXNOYU4oIHggKSApIHsKCQlyZXR1cm4gZmFsc2U7
      Cgl9Cglmb3IoIHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKysgKSB7CgkJdmFy
      IGMgPSB4LmNoYXJBdCggaSApOwoJCWlmKCAhKCBjID49ICcwJyAmJiBjIDw9ICc5
      JyApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJfQoJcmV0dXJuIHRydWU7Cn0K
      Ci8qKiBDYWxsIHRoaXMgdG8gZW5hYmxlIHN1Z2dlc3Rpb25zIG9uIGlucHV0IChp
      ZD1pbnB1dElkKSwgb24gYSBmb3JtIChuYW1lPWZvcm1OYW1lKSAqLwpmdW5jdGlv
      biBvc19lbmFibGVTdWdnZXN0aW9uc09uKCBpbnB1dElkLCBmb3JtTmFtZSApIHsK
      CW9zX2luaXRIYW5kbGVycyggaW5wdXRJZCwgZm9ybU5hbWUsIGRvY3VtZW50Lmdl
      dEVsZW1lbnRCeUlkKCBpbnB1dElkICkgKTsKfQoKLyoqIENhbGwgdGhpcyB0byBk
      aXNhYmxlIHN1Z2dlc3Rpb3Mgb24gaW5wdXQgYm94IChpZD1pbnB1dElkKSAqLwpm
      dW5jdGlvbiBvc19kaXNhYmxlU3VnZ2VzdGlvbnNPbiggaW5wdXRJZCApIHsKCXIg
      PSBvc19tYXBbaW5wdXRJZF07CglpZiggciAhPSBudWxsICkgewoJCS8vIGNhbmNl
      bC9oaWRlIHJlc3VsdHMKCQlvc190aW1lciA9IG51bGw7CgkJb3NfaGlkZVJlc3Vs
      dHMoIHIgKTsKCQkvLyB0dXJuIGF1dG9jb21wbGV0ZSBvbiAhCgkJZG9jdW1lbnQu
      Z2V0RWxlbWVudEJ5SWQoIGlucHV0SWQgKS5zZXRBdHRyaWJ1dGUoICdhdXRvY29t
      cGxldGUnLCAnb24nICk7CgkJLy8gcmVtb3ZlIGRlc2NyaXB0b3IKCQlvc19tYXBb
      aW5wdXRJZF0gPSBudWxsOwoJfQoKCS8vIFJlbW92ZSB0aGUgZWxlbWVudCBmcm9t
      IHRoZSBvc19hdXRvbG9hZF8qIGFycmF5cwoJdmFyIGluZGV4ID0gb3NfYXV0b2xv
      YWRfaW5wdXRzLmluZGV4T2YoIGlucHV0SWQgKTsKCWlmICggaW5kZXggPj0gMCAp
      IHsKCQlvc19hdXRvbG9hZF9pbnB1dHNbaW5kZXhdID0gb3NfYXV0b2xvYWRfZm9y
      bXNbaW5kZXhdID0gJyc7Cgl9Cn0KCi8qKioqKioqKioqKioqKioqKioqKioqKioq
      KioqKioqKioqKioqKioqKioqKioqKioKICogRGl2LW9ubHkgZnVuY3Rpb25zIChp
      cnJlbGV2YW50IGZvciBkYXRhbGlzdCkKICoqKioqKioqKioqKioqKioqKioqKioq
      KioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKiBFdmVudDogbG9zcyBvZiBm
      b2N1cyBvZiBpbnB1dCBib3ggKi8KZnVuY3Rpb24gb3NfZXZlbnRCbHVyKCBlICkg
      ewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciByID0gb3NfbWFw
      W3RhcmcuaWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47IC8vIG5vdCBv
      dXIgZXZlbnQKCX0KCWlmKCAhb3NfbW91c2VfcHJlc3NlZCApIHsKCQlvc19oaWRl
      UmVzdWx0cyggciApOwoJCS8vIGZvcmNlIGNhbnZhcyB0byBzdGF5IGhpZGRlbgoJ
      CXIuc3RheUhpZGRlbiA9IHRydWU7CgkJLy8gY2FuY2VsIGFueSBwZW5kaW5nIGZl
      dGNoZXMKCQlpZiggb3NfdGltZXIgIT0gbnVsbCAmJiBvc190aW1lci5pZCAhPSBu
      dWxsICkgewoJCQljbGVhclRpbWVvdXQoIG9zX3RpbWVyLmlkICk7CgkJfQoJCW9z
      X3RpbWVyID0gbnVsbDsKCX0KfQoKLyoqIEV2ZW50OiBmb2N1cyAoY2F0Y2ggb25s
      eSB3aGVuIHN0b3BwZWQpICovCmZ1bmN0aW9uIG9zX2V2ZW50Rm9jdXMoIGUgKSB7
      Cgl2YXIgdGFyZyA9IG9zX2dldFRhcmdldCggZSApOwoJdmFyIHIgPSBvc19tYXBb
      dGFyZy5pZF07CglpZiggciA9PSBudWxsICkgewoJCXJldHVybjsgLy8gbm90IG91
      ciBldmVudAoJfQoJci5zdGF5SGlkZGVuID0gZmFsc2U7Cn0KCi8qKgogKiBDcmVh
      dGUgYW5kIHBvcHVsYXRlIGEgPGRpdj4sIGZvciBub24tPGRhdGFsaXN0Pi1zdXBw
      b3J0aW5nIGJyb3dzZXJzLgogKgogKiBAcGFyYW0gciAgICAgICBvc19SZXN1bHQg
      b2JqZWN0CiAqIEBwYXJhbSByZXN1bHRzIEFycmF5IG9mIHRoZSBuZXcgcmVzdWx0
      cyB0byByZXBsYWNlIGV4aXN0aW5nIG9uZXMKICovCmZ1bmN0aW9uIG9zX3NldHVw
      RGl2KCByLCByZXN1bHRzICkgewoJdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50
      QnlJZCggci5jb250YWluZXIgKTsKCWlmICggYyA9PSBudWxsICkgewoJCWMgPSBv
      c19jcmVhdGVDb250YWluZXIoIHIgKTsKCX0KCWMuaW5uZXJIVE1MID0gb3NfY3Jl
      YXRlUmVzdWx0VGFibGUoIHIsIHJlc3VsdHMgKTsKCS8vIGluaXQgY29udGFpbmVy
      IHRhYmxlIHNpemVzCgl2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCBy
      LnJlc3VsdFRhYmxlICk7CglyLmNvbnRhaW5lclRvdGFsID0gdC5vZmZzZXRIZWln
      aHQ7CglyLmNvbnRhaW5lclJvdyA9IHQub2Zmc2V0SGVpZ2h0IC8gci5yZXN1bHRD
      b3VudDsKCW9zX2ZpdENvbnRhaW5lciggciApOwoJb3NfdHJpbVJlc3VsdFRleHQo
      IHIgKTsKCW9zX3Nob3dSZXN1bHRzKCByICk7Cn0KCi8qKiBDcmVhdGUgdGhlIHJl
      c3VsdCB0YWJsZSB0byBiZSBwbGFjZWQgaW4gdGhlIGNvbnRhaW5lciBkaXYgKi8K
      ZnVuY3Rpb24gb3NfY3JlYXRlUmVzdWx0VGFibGUoIHIsIHJlc3VsdHMgKSB7Cgl2
      YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApOwoJ
      dmFyIHdpZHRoID0gYy5vZmZzZXRXaWR0aCAtIG9zX29wZXJhV2lkdGhGaXgoIGMu
      b2Zmc2V0V2lkdGggKTsKCXZhciBodG1sID0gJzx0YWJsZSBjbGFzcz0ib3Mtc3Vn
      Z2VzdC1yZXN1bHRzIiBpZD0iJyArIHIucmVzdWx0VGFibGUgKyAnIiBzdHlsZT0i
      d2lkdGg6ICcgKyB3aWR0aCArICdweDsiPic7CglyLnJlc3VsdHMgPSBuZXcgQXJy
      YXkoKTsKCXIucmVzdWx0Q291bnQgPSByZXN1bHRzLmxlbmd0aDsKCWZvciggaSA9
      IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrICkgewoJCXZhciB0aXRsZSA9IG9z
      X2RlY29kZVZhbHVlKCByZXN1bHRzW2ldICk7CgkJci5yZXN1bHRzW2ldID0gdGl0
      bGU7CgkJaHRtbCArPSAnPHRyPjx0ZCBjbGFzcz0ib3Mtc3VnZ2VzdC1yZXN1bHQi
      IGlkPSInICsgci5yZXN1bHRUYWJsZSArIGkgKyAnIj48c3BhbiBpZD0iJyArIHIu
      cmVzdWx0VGV4dCArIGkgKyAnIj4nICsgdGl0bGUgKyAnPC9zcGFuPjwvdGQ+PC90
      cj4nOwoJfQoJaHRtbCArPSAnPC90YWJsZT4nOwoJcmV0dXJuIGh0bWw7Cn0KCi8q
      KiBTaG93IHJlc3VsdHMgZGl2ICovCmZ1bmN0aW9uIG9zX3Nob3dSZXN1bHRzKCBy
      ICkgewoJaWYoIG9zX2lzX3N0b3BwZWQgKSB7CgkJcmV0dXJuOwoJfQoJaWYoIHIu
      c3RheUhpZGRlbiApIHsKCQlyZXR1cm47Cgl9Cglvc19maXRDb250YWluZXIoIHIg
      KTsKCXZhciBjID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuY29udGFpbmVy
      ICk7CglyLnNlbGVjdGVkID0gLTE7CglpZiggYyAhPSBudWxsICkgewoJCWMuc2Ny
      b2xsVG9wID0gMDsKCQljLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7CgkJ
      ci52aXNpYmxlID0gdHJ1ZTsKCX0KfQoKZnVuY3Rpb24gb3Nfb3BlcmFXaWR0aEZp
      eCggeCApIHsKCS8vIEZvciBicm93c2VycyB0aGF0IGRvbid0IHVuZGVyc3RhbmQg
      b3ZlcmZsb3cteCwgZXN0aW1hdGUgc2Nyb2xsYmFyIHdpZHRoCglpZiggdHlwZW9m
      IGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3dYICE9ICdzdHJpbmcnICkgewoJ
      CXJldHVybiAzMDsKCX0KCXJldHVybiAwOwp9CgovKiogQnJvd2VyLWRlcGVuZGVu
      dCBmdW5jdGlvbnMgdG8gZmluZCB3aW5kb3cgaW5uZXIgc2l6ZSwgYW5kIHNjcm9s
      bCBzdGF0dXMgKi8KZnVuY3Rpb24gZl9jbGllbnRXaWR0aCgpIHsKCXJldHVybiBm
      X2ZpbHRlclJlc3VsdHMoCgkJd2luZG93LmlubmVyV2lkdGggPyB3aW5kb3cuaW5u
      ZXJXaWR0aCA6IDAsCgkJZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
      bnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIDogMCwKCQlkb2N1bWVudC5i
      b2R5ID8gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA6IDAKCSk7Cn0KCmZ1bmN0
      aW9uIGZfY2xpZW50SGVpZ2h0KCkgewoJcmV0dXJuIGZfZmlsdGVyUmVzdWx0cygK
      CQl3aW5kb3cuaW5uZXJIZWlnaHQgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiAwLAoJ
      CWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50LmRvY3VtZW50RWxl
      bWVudC5jbGllbnRIZWlnaHQgOiAwLAoJCWRvY3VtZW50LmJvZHkgPyBkb2N1bWVu
      dC5ib2R5LmNsaWVudEhlaWdodCA6IDAKCSk7Cn0KCmZ1bmN0aW9uIGZfc2Nyb2xs
      TGVmdCgpIHsKCXJldHVybiBmX2ZpbHRlclJlc3VsdHMoCgkJd2luZG93LnBhZ2VY
      T2Zmc2V0ID8gd2luZG93LnBhZ2VYT2Zmc2V0IDogMCwKCQlkb2N1bWVudC5kb2N1
      bWVudEVsZW1lbnQgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVm
      dCA6IDAsCgkJZG9jdW1lbnQuYm9keSA/IGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVm
      dCA6IDAKCSk7Cn0KCmZ1bmN0aW9uIGZfc2Nyb2xsVG9wKCkgewoJcmV0dXJuIGZf
      ZmlsdGVyUmVzdWx0cygKCQl3aW5kb3cucGFnZVlPZmZzZXQgPyB3aW5kb3cucGFn
      ZVlPZmZzZXQgOiAwLAoJCWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCA/IGRvY3Vt
      ZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgOiAwLAoJCWRvY3VtZW50LmJv
      ZHkgPyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA6IDAKCSk7Cn0KCmZ1bmN0aW9u
      IGZfZmlsdGVyUmVzdWx0cyggbl93aW4sIG5fZG9jZWwsIG5fYm9keSApIHsKCXZh
      ciBuX3Jlc3VsdCA9IG5fd2luID8gbl93aW4gOiAwOwoJaWYgKCBuX2RvY2VsICYm
      ICggIW5fcmVzdWx0IHx8ICggbl9yZXN1bHQgPiBuX2RvY2VsICkgKSApIHsKCQlu
      X3Jlc3VsdCA9IG5fZG9jZWw7Cgl9CglyZXR1cm4gbl9ib2R5ICYmICggIW5fcmVz
      dWx0IHx8ICggbl9yZXN1bHQgPiBuX2JvZHkgKSApID8gbl9ib2R5IDogbl9yZXN1
      bHQ7Cn0KCi8qKiBHZXQgdGhlIGhlaWdodCBhdmFpbGFibGUgZm9yIHRoZSByZXN1
      bHRzIGNvbnRhaW5lciAqLwpmdW5jdGlvbiBvc19hdmFpbGFibGVIZWlnaHQoIHIg
      KSB7Cgl2YXIgYWJzVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuY29u
      dGFpbmVyICkuc3R5bGUudG9wOwoJdmFyIHB4ID0gYWJzVG9wLmxhc3RJbmRleE9m
      KCAncHgnICk7CglpZiggcHggPiAwICkgewoJCWFic1RvcCA9IGFic1RvcC5zdWJz
      dHJpbmcoIDAsIHB4ICk7Cgl9CglyZXR1cm4gZl9jbGllbnRIZWlnaHQoKSAtICgg
      YWJzVG9wIC0gZl9zY3JvbGxUb3AoKSApOwp9CgovKiogR2V0IGVsZW1lbnQgYWJz
      b2x1dGUgcG9zaXRpb24ge2xlZnQsdG9wfSAqLwpmdW5jdGlvbiBvc19nZXRFbGVt
      ZW50UG9zaXRpb24oIGVsZW1JRCApIHsKCXZhciBvZmZzZXRUcmFpbCA9IGRvY3Vt
      ZW50LmdldEVsZW1lbnRCeUlkKCBlbGVtSUQgKTsKCXZhciBvZmZzZXRMZWZ0ID0g
      MDsKCXZhciBvZmZzZXRUb3AgPSAwOwoJd2hpbGUgKCBvZmZzZXRUcmFpbCApIHsK
      CQlvZmZzZXRMZWZ0ICs9IG9mZnNldFRyYWlsLm9mZnNldExlZnQ7CgkJb2Zmc2V0
      VG9wICs9IG9mZnNldFRyYWlsLm9mZnNldFRvcDsKCQlvZmZzZXRUcmFpbCA9IG9m
      ZnNldFRyYWlsLm9mZnNldFBhcmVudDsKCX0KCWlmICggbmF2aWdhdG9yLnVzZXJB
      Z2VudC5pbmRleE9mKCdNYWMnKSAhPSAtMSAmJiB0eXBlb2YgZG9jdW1lbnQuYm9k
      eS5sZWZ0TWFyZ2luICE9ICd1bmRlZmluZWQnICkgewoJCW9mZnNldExlZnQgKz0g
      ZG9jdW1lbnQuYm9keS5sZWZ0TWFyZ2luOwoJCW9mZnNldFRvcCArPSBkb2N1bWVu
      dC5ib2R5LnRvcE1hcmdpbjsKCX0KCXJldHVybiB7IGxlZnQ6b2Zmc2V0TGVmdCwg
      dG9wOm9mZnNldFRvcCB9Owp9CgovKiogQ3JlYXRlIHRoZSBjb250YWluZXIgZGl2
      IHRoYXQgd2lsbCBob2xkIHRoZSBzdWdnZXN0ZWQgdGl0bGVzICovCmZ1bmN0aW9u
      IG9zX2NyZWF0ZUNvbnRhaW5lciggciApIHsKCXZhciBjID0gZG9jdW1lbnQuY3Jl
      YXRlRWxlbWVudCggJ2RpdicgKTsKCXZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
      dEJ5SWQoIHIuc2VhcmNoYm94ICk7Cgl2YXIgcG9zID0gb3NfZ2V0RWxlbWVudFBv
      c2l0aW9uKCByLnNlYXJjaGJveCApOwoJdmFyIGxlZnQgPSBwb3MubGVmdDsKCXZh
      ciB0b3AgPSBwb3MudG9wICsgcy5vZmZzZXRIZWlnaHQ7CgljLmNsYXNzTmFtZSA9
      ICdvcy1zdWdnZXN0JzsKCWMuc2V0QXR0cmlidXRlKCAnaWQnLCByLmNvbnRhaW5l
      ciApOwoJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCggYyApOwoKCS8vIGR5bmFt
      aWNhbGx5IGdlbmVyYXRlZCBzdHlsZSBwYXJhbXMKCS8vIElFIHdvcmthcm91bmQs
      IGNhbm5vdCBleHBsaWNpdGVseSBzZXQgInN0eWxlIiBhdHRyaWJ1dGUKCWMgPSBk
      b2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWluZXIgKTsKCWMuc3R5bGUu
      dG9wID0gdG9wICsgJ3B4JzsKCWMuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwoJ
      Yy5zdHlsZS53aWR0aCA9IHMub2Zmc2V0V2lkdGggKyAncHgnOwoKCS8vIG1vdXNl
      IGV2ZW50IGhhbmRsZXJzCgljLm9ubW91c2VvdmVyID0gZnVuY3Rpb24oIGV2ZW50
      ICkgeyBvc19ldmVudE1vdXNlb3Zlciggci5zZWFyY2hib3gsIGV2ZW50ICk7IH07
      CgljLm9ubW91c2Vtb3ZlID0gZnVuY3Rpb24oIGV2ZW50ICkgeyBvc19ldmVudE1v
      dXNlbW92ZSggci5zZWFyY2hib3gsIGV2ZW50ICk7IH07CgljLm9ubW91c2Vkb3du
      ID0gZnVuY3Rpb24oIGV2ZW50ICkgeyByZXR1cm4gb3NfZXZlbnRNb3VzZWRvd24o
      IHIuc2VhcmNoYm94LCBldmVudCApOyB9OwoJYy5vbm1vdXNldXAgPSBmdW5jdGlv
      biggZXZlbnQgKSB7IG9zX2V2ZW50TW91c2V1cCggci5zZWFyY2hib3gsIGV2ZW50
      ICk7IH07CglyZXR1cm4gYzsKfQoKLyoqIGNoYW5nZSBjb250YWluZXIgaGVpZ2h0
      IHRvIGZpdCB0byBzY3JlZW4gKi8KZnVuY3Rpb24gb3NfZml0Q29udGFpbmVyKCBy
      ICkgewoJdmFyIGMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWlu
      ZXIgKTsKCXZhciBoID0gb3NfYXZhaWxhYmxlSGVpZ2h0KCByICkgLSAyMDsKCXZh
      ciBpbmMgPSByLmNvbnRhaW5lclJvdzsKCWggPSBwYXJzZUludCggaCAvIGluYyAp
      ICogaW5jOwoJaWYoIGggPCAoIDIgKiBpbmMgKSAmJiByLnJlc3VsdENvdW50ID4g
      MSApIHsgLy8gbWluOiB0d28gcmVzdWx0cwoJCWggPSAyICogaW5jOwoJfQoJaWYo
      ICggaCAvIGluYyApID4gb3NfbWF4X2xpbmVzX3Blcl9zdWdnZXN0ICkgewoJCWgg
      PSBpbmMgKiBvc19tYXhfbGluZXNfcGVyX3N1Z2dlc3Q7Cgl9CglpZiggaCA8IHIu
      Y29udGFpbmVyVG90YWwgKSB7CgkJYy5zdHlsZS5oZWlnaHQgPSBoICsgJ3B4JzsK
      CQlyLmNvbnRhaW5lckNvdW50ID0gcGFyc2VJbnQoIE1hdGgucm91bmQoIGggLyBp
      bmMgKSApOwoJfSBlbHNlIHsKCQljLnN0eWxlLmhlaWdodCA9IHIuY29udGFpbmVy
      VG90YWwgKyAncHgnOwoJCXIuY29udGFpbmVyQ291bnQgPSByLnJlc3VsdENvdW50
      OwoJfQp9CgovKiogSWYgc29tZSBlbnRyaWVzIGFyZSBsb25nZXIgdGhhbiB0aGUg
      Ym94LCByZXBsYWNlIHRleHQgd2l0aCAiLi4uIiAqLwpmdW5jdGlvbiBvc190cmlt
      UmVzdWx0VGV4dCggciApIHsKCS8vIGZpbmQgbWF4IHdpZHRoLCBmaXJzdCBzZWUg
      aWYgd2UgY291bGQgZXhwYW5kIHRoZSBjb250YWluZXIgdG8gZml0IGl0Cgl2YXIg
      bWF4VyA9IDA7Cglmb3IoIHZhciBpID0gMDsgaSA8IHIucmVzdWx0Q291bnQ7IGkr
      KyApIHsKCQl2YXIgZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnJlc3Vs
      dFRleHQgKyBpICk7CgkJaWYoIGUub2Zmc2V0V2lkdGggPiBtYXhXICkgewoJCQlt
      YXhXID0gZS5vZmZzZXRXaWR0aDsKCQl9Cgl9Cgl2YXIgdyA9IGRvY3VtZW50Lmdl
      dEVsZW1lbnRCeUlkKCByLmNvbnRhaW5lciApLm9mZnNldFdpZHRoOwoJdmFyIGZp
      eCA9IDA7CglpZiggci5jb250YWluZXJDb3VudCA8IHIucmVzdWx0Q291bnQgKSB7
      CgkJZml4ID0gMjA7IC8vIGdpdmUgMjBweCBmb3Igc2Nyb2xsYmFyCgl9IGVsc2Ug
      ewoJCWZpeCA9IG9zX29wZXJhV2lkdGhGaXgoIHcgKTsKCX0KCWlmKCBmaXggPCA0
      ICkgewoJCWZpeCA9IDQ7IC8vIGJhc2ljIHBhZGRpbmcKCX0KCW1heFcgKz0gZml4
      OwoKCS8vIHJlc2l6ZSBjb250YWluZXIgdG8gZml0IG1vcmUgZGF0YSBpZiBwZXJt
      aXR0ZWQKCXZhciBub3JtVyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnNl
      YXJjaGJveCApLm9mZnNldFdpZHRoOwoJdmFyIHByb3AgPSBtYXhXIC8gbm9ybVc7
      CglpZiggcHJvcCA+IG9zX2NvbnRhaW5lcl9tYXhfd2lkdGggKSB7CgkJcHJvcCA9
      IG9zX2NvbnRhaW5lcl9tYXhfd2lkdGg7Cgl9IGVsc2UgaWYoIHByb3AgPCAxICkg
      ewoJCXByb3AgPSAxOwoJfQoJdmFyIG5ld1cgPSBNYXRoLnJvdW5kKCBub3JtVyAq
      IHByb3AgKTsKCWlmKCB3ICE9IG5ld1cgKSB7CgkJdyA9IG5ld1c7CgkJaWYoIG9z
      X2FuaW1hdGlvbl90aW1lciAhPSBudWxsICkgewoJCQljbGVhckludGVydmFsKCBv
      c19hbmltYXRpb25fdGltZXIuaWQgKTsKCQl9CgkJb3NfYW5pbWF0aW9uX3RpbWVy
      ID0gbmV3IG9zX0FuaW1hdGlvblRpbWVyKCByLCB3ICk7CgkJb3NfYW5pbWF0aW9u
      X3RpbWVyLmlkID0gc2V0SW50ZXJ2YWwoICJvc19hbmltYXRlQ2hhbmdlV2lkdGgo
      KSIsIG9zX2FuaW1hdGlvbl9kZWxheSApOwoJCXcgLT0gZml4OyAvLyB0aGlzIG11
      Y2ggaXMgcmVzZXJ2ZWQKCX0KCgkvLyB0cmltIHJlc3VsdHMKCWlmKCB3IDwgMTAg
      KSB7CgkJcmV0dXJuOwoJfQoJZm9yKCB2YXIgaSA9IDA7IGkgPCByLnJlc3VsdENv
      dW50OyBpKysgKSB7CgkJdmFyIGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgg
      ci5yZXN1bHRUZXh0ICsgaSApOwoJCXZhciByZXBsYWNlID0gMTsKCQl2YXIgbGFz
      dFcgPSBlLm9mZnNldFdpZHRoICsgMTsKCQl2YXIgaXRlcmF0aW9uID0gMDsKCQl2
      YXIgY2hhbmdlZFRleHQgPSBmYWxzZTsKCQl3aGlsZSggZS5vZmZzZXRXaWR0aCA+
      IHcgJiYgKCBlLm9mZnNldFdpZHRoIDwgbGFzdFcgfHwgaXRlcmF0aW9uIDwgMiAp
      ICkgewoJCQljaGFuZ2VkVGV4dCA9IHRydWU7CgkJCWxhc3RXID0gZS5vZmZzZXRX
      aWR0aDsKCQkJdmFyIGwgPSBlLmlubmVySFRNTDsKCQkJZS5pbm5lckhUTUwgPSBs
      LnN1YnN0cmluZyggMCwgbC5sZW5ndGggLSByZXBsYWNlICkgKyAnLi4uJzsKCQkJ
      aXRlcmF0aW9uKys7CgkJCXJlcGxhY2UgPSA0OyAvLyBob3cgbWFueSBjaGFycyB0
      byByZXBsYWNlCgkJfQoJCWlmKCBjaGFuZ2VkVGV4dCApIHsKCQkJLy8gc2hvdyBo
      aW50IGZvciB0cmltbWVkIHRpdGxlcwoJCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJ
      ZCggci5yZXN1bHRUYWJsZSArIGkgKS5zZXRBdHRyaWJ1dGUoICd0aXRsZScsIHIu
      cmVzdWx0c1tpXSApOwoJCX0KCX0KfQoKLyoqIEludm9rZWQgb24gdGltZXIgdG8g
      YW5pbWF0ZSBjaGFuZ2UgaW4gY29udGFpbmVyIHdpZHRoICovCmZ1bmN0aW9uIG9z
      X2FuaW1hdGVDaGFuZ2VXaWR0aCgpIHsKCXZhciByID0gb3NfYW5pbWF0aW9uX3Rp
      bWVyLnI7Cgl2YXIgYyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLmNvbnRh
      aW5lciApOwoJdmFyIHcgPSBjLm9mZnNldFdpZHRoOwoJdmFyIG5vcm1XID0gZG9j
      dW1lbnQuZ2V0RWxlbWVudEJ5SWQoIHIuc2VhcmNoYm94ICkub2Zmc2V0V2lkdGg7
      Cgl2YXIgbm9ybUwgPSBvc19nZXRFbGVtZW50UG9zaXRpb24oIHIuc2VhcmNoYm94
      ICkubGVmdDsKCXZhciBpbmMgPSBvc19hbmltYXRpb25fdGltZXIuaW5jOwoJdmFy
      IHRhcmdldCA9IG9zX2FuaW1hdGlvbl90aW1lci50YXJnZXQ7Cgl2YXIgbncgPSB3
      ICsgaW5jOwoJaWYoICggaW5jID4gMCAmJiBudyA+PSB0YXJnZXQgKSB8fCAoIGlu
      YyA8PSAwICYmIG53IDw9IHRhcmdldCApICkgewoJCS8vIGZpbmlzaGVkICEKCQlj
      LnN0eWxlLndpZHRoID0gdGFyZ2V0ICsgJ3B4JzsKCQljbGVhckludGVydmFsKCBv
      c19hbmltYXRpb25fdGltZXIuaWQgKTsKCQlvc19hbmltYXRpb25fdGltZXIgPSBu
      dWxsOwoJfSBlbHNlIHsKCQkvLyBpbi1wcm9ncmVzcwoJCWMuc3R5bGUud2lkdGgg
      PSBudyArICdweCc7CgkJaWYoIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kaXIg
      PT0gJ3J0bCcgKSB7CgkJCWMuc3R5bGUubGVmdCA9ICggbm9ybUwgKyBub3JtVyAr
      ICggdGFyZ2V0IC0gbncgKSAtIG9zX2FuaW1hdGlvbl90aW1lci50YXJnZXQgLSAx
      ICkgKyAncHgnOwoJCX0KCX0KfQoKLyoqIENoYW5nZSB0aGUgaGlnaGxpZ2h0ZWQg
      cm93IChpLmUuIHN1Z2dlc3Rpb24pLCBmcm9tIHBvc2l0aW9uIGN1ciB0byBuZXh0
      ICovCmZ1bmN0aW9uIG9zX2NoYW5nZUhpZ2hsaWdodCggciwgY3VyLCBuZXh0LCB1
      cGRhdGVTZWFyY2hCb3ggKSB7CglpZiAoIG5leHQgPj0gci5yZXN1bHRDb3VudCAp
      IHsKCQluZXh0ID0gci5yZXN1bHRDb3VudCAtIDE7Cgl9CglpZiAoIG5leHQgPCAt
      MSApIHsKCQluZXh0ID0gLTE7Cgl9CglyLnNlbGVjdGVkID0gbmV4dDsKCWlmICgg
      Y3VyID09IG5leHQgKSB7CgkJcmV0dXJuOyAvLyBub3RoaW5nIHRvIGRvLgoJfQoK
      CWlmKCBjdXIgPj0gMCApIHsKCQl2YXIgY3VyUm93ID0gZG9jdW1lbnQuZ2V0RWxl
      bWVudEJ5SWQoIHIucmVzdWx0VGFibGUgKyBjdXIgKTsKCQlpZiggY3VyUm93ICE9
      IG51bGwgKSB7CgkJCWN1clJvdy5jbGFzc05hbWUgPSAnb3Mtc3VnZ2VzdC1yZXN1
      bHQnOwoJCX0KCX0KCXZhciBuZXdUZXh0OwoJaWYoIG5leHQgPj0gMCApIHsKCQl2
      YXIgbmV4dFJvdyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnJlc3VsdFRh
      YmxlICsgbmV4dCApOwoJCWlmKCBuZXh0Um93ICE9IG51bGwgKSB7CgkJCW5leHRS
      b3cuY2xhc3NOYW1lID0gb3NfSGlnaGxpZ2h0Q2xhc3MoKTsKCQl9CgkJbmV3VGV4
      dCA9IHIucmVzdWx0c1tuZXh0XTsKCX0gZWxzZSB7CgkJbmV3VGV4dCA9IHIub3Jp
      Z2luYWw7Cgl9CgoJLy8gYWRqdXN0IHRoZSBzY3JvbGxiYXIgaWYgYW55CglpZigg
      ci5jb250YWluZXJDb3VudCA8IHIucmVzdWx0Q291bnQgKSB7CgkJdmFyIGMgPSBk
      b2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5jb250YWluZXIgKTsKCQl2YXIgdlN0
      YXJ0ID0gYy5zY3JvbGxUb3AgLyByLmNvbnRhaW5lclJvdzsKCQl2YXIgdkVuZCA9
      IHZTdGFydCArIHIuY29udGFpbmVyQ291bnQ7CgkJaWYoIG5leHQgPCB2U3RhcnQg
      KSB7CgkJCWMuc2Nyb2xsVG9wID0gbmV4dCAqIHIuY29udGFpbmVyUm93OwoJCX0g
      ZWxzZSBpZiggbmV4dCA+PSB2RW5kICkgewoJCQljLnNjcm9sbFRvcCA9ICggbmV4
      dCAtIHIuY29udGFpbmVyQ291bnQgKyAxICkgKiByLmNvbnRhaW5lclJvdzsKCQl9
      Cgl9CgoJLy8gdXBkYXRlIHRoZSBjb250ZW50cyBvZiB0aGUgc2VhcmNoIGJveAoJ
      aWYoIHVwZGF0ZVNlYXJjaEJveCApIHsKCQlvc191cGRhdGVTZWFyY2hRdWVyeSgg
      ciwgbmV3VGV4dCApOwoJfQp9CgpmdW5jdGlvbiBvc19IaWdobGlnaHRDbGFzcygp
      IHsKCXZhciBtYXRjaCA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0FwcGxl
      V2ViS2l0XC8oXGQrKS8pOwoJaWYgKCBtYXRjaCApIHsKCQl2YXIgd2ViS2l0VmVy
      c2lvbiA9IHBhcnNlSW50KCBtYXRjaFsxXSApOwoJCWlmICggd2ViS2l0VmVyc2lv
      biA8IDUyMyApIHsKCQkJLy8gQ1NTIHN5c3RlbSBoaWdobGlnaHQgY29sb3JzIGJy
      b2tlbiBvbiBvbGQgU2FmYXJpCgkJCS8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
      L3Nob3dfYnVnLmNnaT9pZD02MTI5CgkJCS8vIFNhZmFyaSAzLjAuNCwgMy4xIGtu
      b3duIG9rCgkJCXJldHVybiAnb3Mtc3VnZ2VzdC1yZXN1bHQtaGwtd2Via2l0JzsK
      CQl9Cgl9CglyZXR1cm4gJ29zLXN1Z2dlc3QtcmVzdWx0LWhsJzsKfQoKZnVuY3Rp
      b24gb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIsIG5ld1RleHQgKSB7Cglkb2N1bWVu
      dC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKS52YWx1ZSA9IG5ld1RleHQ7
      CglyLnF1ZXJ5ID0gbmV3VGV4dDsKfQoKCi8qKioqKioqKioqKioqKioqKioqKgog
      KiAgTW91c2UgZXZlbnRzCiAqKioqKioqKioqKioqKioqKioqKi8KCi8qKiBNb3Vz
      ZSBvdmVyIHRoZSBjb250YWluZXIgKi8KZnVuY3Rpb24gb3NfZXZlbnRNb3VzZW92
      ZXIoIHNyY0lkLCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsK
      CXZhciByID0gb3NfbWFwW3NyY0lkXTsKCWlmKCByID09IG51bGwgfHwgIW9zX21v
      dXNlX21vdmVkICkgewoJCXJldHVybjsgLy8gbm90IG91ciBldmVudAoJfQoJdmFy
      IG51bSA9IG9zX2dldE51bWJlclN1ZmZpeCggdGFyZy5pZCApOwoJaWYoIG51bSA+
      PSAwICkgewoJCW9zX2NoYW5nZUhpZ2hsaWdodCggciwgci5zZWxlY3RlZCwgbnVt
      LCBmYWxzZSApOwoJfQp9CgovKiBHZXQgcm93IHdoZXJlIHRoZSBldmVudCBvY2N1
      cmVkIChmcm9tIGl0cyBpZCkgKi8KZnVuY3Rpb24gb3NfZ2V0TnVtYmVyU3VmZml4
      KCBpZCApIHsKCXZhciBudW0gPSBpZC5zdWJzdHJpbmcoIGlkLmxlbmd0aCAtIDIg
      KTsKCWlmKCAhKCBudW0uY2hhckF0KCAwICkgPj0gJzAnICYmIG51bS5jaGFyQXQo
      IDAgKSA8PSAnOScgKSApIHsKCQludW0gPSBudW0uc3Vic3RyaW5nKCAxICk7Cgl9
      CglpZiggb3NfaXNOdW1iZXIoIG51bSApICkgewoJCXJldHVybiBwYXJzZUludCgg
      bnVtICk7Cgl9IGVsc2UgewoJCXJldHVybiAtMTsKCX0KfQoKLyoqIFNhdmUgbW91
      c2UgbW92ZSBhcyBsYXN0IGFjdGlvbiAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNl
      bW92ZSggc3JjSWQsIGUgKSB7Cglvc19tb3VzZV9tb3ZlZCA9IHRydWU7Cn0KCi8q
      KiBNb3VzZSBidXR0b24gaGVsZCBkb3duLCByZWdpc3RlciBwb3NzaWJsZSBjbGlj
      ayAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNlZG93biggc3JjSWQsIGUgKSB7Cgl2
      YXIgdGFyZyA9IG9zX2dldFRhcmdldCggZSApOwoJdmFyIHIgPSBvc19tYXBbc3Jj
      SWRdOwoJaWYoIHIgPT0gbnVsbCApIHsKCQlyZXR1cm47IC8vIG5vdCBvdXIgZXZl
      bnQKCX0KCXZhciBudW0gPSBvc19nZXROdW1iZXJTdWZmaXgoIHRhcmcuaWQgKTsK
      Cglvc19tb3VzZV9wcmVzc2VkID0gdHJ1ZTsKCWlmKCBudW0gPj0gMCApIHsKCQlv
      c19tb3VzZV9udW0gPSBudW07CgkJLy8gb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIs
      IHIucmVzdWx0c1tudW1dICk7Cgl9CgkvLyBrZWVwIHRoZSBmb2N1cyBvbiB0aGUg
      c2VhcmNoIGZpZWxkCglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hi
      b3ggKS5mb2N1cygpOwoKCXJldHVybiBmYWxzZTsgLy8gcHJldmVudHMgc2VsZWN0
      aW9uCn0KCi8qKiBNb3VzZSBidXR0b24gcmVsZWFzZWQsIGNoZWNrIGZvciBjbGlj
      ayBvbiBzb21lIHJvdyAqLwpmdW5jdGlvbiBvc19ldmVudE1vdXNldXAoIHNyY0lk
      LCBlICkgewoJdmFyIHRhcmcgPSBvc19nZXRUYXJnZXQoIGUgKTsKCXZhciByID0g
      b3NfbWFwW3NyY0lkXTsKCWlmKCByID09IG51bGwgKSB7CgkJcmV0dXJuOyAvLyBu
      b3Qgb3VyIGV2ZW50Cgl9Cgl2YXIgbnVtID0gb3NfZ2V0TnVtYmVyU3VmZml4KCB0
      YXJnLmlkICk7CgoJaWYoIG51bSA+PSAwICYmIG9zX21vdXNlX251bSA9PSBudW0g
      KSB7CgkJb3NfdXBkYXRlU2VhcmNoUXVlcnkoIHIsIHIucmVzdWx0c1tudW1dICk7
      CgkJb3NfaGlkZVJlc3VsdHMoIHIgKTsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJ
      ZCggci5zZWFyY2hmb3JtICkuc3VibWl0KCk7Cgl9Cglvc19tb3VzZV9wcmVzc2Vk
      ID0gZmFsc2U7CgkvLyBrZWVwIHRoZSBmb2N1cyBvbiB0aGUgc2VhcmNoIGZpZWxk
      Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggci5zZWFyY2hib3ggKS5mb2N1cygp
      Owp9CgovKiogVG9nZ2xlIHN0dWZmIHNlZW1zIHRvIGJlIGRlYWQgY29kZT8gKi8K
      Ci8qKiBSZXR1cm4gdGhlIHNwYW4gZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSB0
      b2dnbGUgbGluayAqLwpmdW5jdGlvbiBvc19jcmVhdGVUb2dnbGUoIHIsIGNsYXNz
      TmFtZSApIHsKCXZhciB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCggJ3NwYW4n
      ICk7Cgl0LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKCXQuc2V0QXR0cmlidXRlKCAn
      aWQnLCByLnRvZ2dsZSApOwoJdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVt
      ZW50KCAnYScgKTsKCWxpbmsuc2V0QXR0cmlidXRlKCAnaHJlZicsICdqYXZhc2Ny
      aXB0OnZvaWQoMCk7JyApOwoJbGluay5vbmNsaWNrID0gZnVuY3Rpb24oKSB7IG9z
      X3RvZ2dsZSggci5zZWFyY2hib3gsIHIuc2VhcmNoZm9ybSApOyB9OwoJdmFyIG1z
      ZyA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCB3Z01XU3VnZ2VzdE1lc3NhZ2Vz
      WzBdICk7CglsaW5rLmFwcGVuZENoaWxkKCBtc2cgKTsKCXQuYXBwZW5kQ2hpbGQo
      IGxpbmsgKTsKCXJldHVybiB0Owp9CgovKiogQ2FsbCB3aGVuIHVzZXIgY2xpY2tz
      IG9uIHNvbWUgb2YgdGhlIHRvZ2dsZSBsaW5rcyAqLwpmdW5jdGlvbiBvc190b2dn
      bGUoIGlucHV0SWQsIGZvcm1OYW1lICkgewoJciA9IG9zX21hcFtpbnB1dElkXTsK
      CXZhciBtc2cgPSAnJzsKCWlmKCByID09IG51bGwgKSB7CgkJb3NfZW5hYmxlU3Vn
      Z2VzdGlvbnNPbiggaW5wdXRJZCwgZm9ybU5hbWUgKTsKCQlyID0gb3NfbWFwW2lu
      cHV0SWRdOwoJCW1zZyA9IHdnTVdTdWdnZXN0TWVzc2FnZXNbMF07Cgl9IGVsc2V7
      CgkJb3NfZGlzYWJsZVN1Z2dlc3Rpb25zT24oIGlucHV0SWQsIGZvcm1OYW1lICk7
      CgkJbXNnID0gd2dNV1N1Z2dlc3RNZXNzYWdlc1sxXTsKCX0KCS8vIGNoYW5nZSBt
      ZXNzYWdlCgl2YXIgbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCByLnRv
      Z2dsZSApLmZpcnN0Q2hpbGQ7CglsaW5rLnJlcGxhY2VDaGlsZCggZG9jdW1lbnQu
      Y3JlYXRlVGV4dE5vZGUoIG1zZyApLCBsaW5rLmZpcnN0Q2hpbGQgKTsKfQoKaG9v
      a0V2ZW50KCAnbG9hZCcsIG9zX01XU3VnZ2VzdEluaXQgKTsK
      
      ------------cFmFh9kCdFXB8HV7rcn0VF
      Content-Disposition: inline; filename=centralnotice.js
      Content-Type: text/javascript; charset=utf-8; name=centralnotice.js
      Content-Location: http://upload.wikimedia.org/centralnotice/wikipedia/en/centralnotice.js?270z52
      Content-Transfer-Encoding: 8bit
      
      
      function toggleNotice() {
      	var notice = document.getElementById('centralNotice');
      	if (!wgNoticeToggleState) {
      		notice.className = notice.className.replace('collapsed', 'expanded');
      		toggleNoticeCookie('0');
      	} else {
      		notice.className = notice.className.replace('expanded', 'collapsed');
      		toggleNoticeCookie('1');
      	}
      	wgNoticeToggleState = !wgNoticeToggleState;
      }
      function toggleNoticeStyle(elems, display) {
      	if(elems)
      		for(var i=0;i' + wgNotice+'
      '; ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=index.js Content-Type: text/javascript; charset=UTF-8; name=index.js Content-Location: http://en.wikipedia.org/w/index.php?title=-&action=raw&gen=js&useskin=monobook&270z52 Content-Transfer-Encoding: 8bit /* generated javascript */ var skin = 'monobook'; var stylepath = 'http://bits.wikimedia.org/skins-1.5'; /* MediaWiki:Common.js */ // /* * Description: Redirects from /User:UserName/skin.js or .css to the user's actual skin page * Maintainer: Cacycle */ if (wgArticleId == 0 && wgUserName) { var slash = wgPageName.indexOf('/'); var norm = wgPageName.substr(0, slash) + wgPageName.substr(slash).toLowerCase(); var test = 'User:' + wgUserName.replace(/ /g, '_') + '/skin.'; var ext = null; if (norm == test + 'js') ext = 'js'; else if (norm == test + 'css') ext = 'css'; if (ext != null) window.location.href = window.location.href.replace(/\/skin.(css|js)/i, '/' + skin + '.' + ext); } /** extract a URL parameter from the current URL ********** * From [[en:User:Lupin/autoedit.js]] * * paramName : the name of the parameter to extract */ function getURLParamValue( paramName, url) { if (typeof (url) == 'undefined' || url === null) url = document.location.href; var cmdRe=RegExp( '[&?]' + paramName + '=([^&#]*)' ); // Stop at hash var m=cmdRe.exec(url); if (m && m.length > 1) return decodeURIComponent(m[1]); return null; } /** &withJS= URL parameter ******* * Allow to try custom scripts from MediaWiki space * without editing [[Special:Mypage/monobook.js]] */ var extraJS = getURLParamValue("withJS"); if ( extraJS && extraJS.match("^MediaWiki:[^&<>=%]*\.js$") ) { importScript(extraJS); } /* Import more specific scripts if necessary */ if (wgAction == "edit" || wgAction == "submit" || wgPageName == "Special:Upload") //scripts specific to editing pages { importScript("MediaWiki:Common.js/edit.js") } else if (wgPageName == "Special:Watchlist") //watchlist scripts { importScript("MediaWiki:Common.js/watchlist.js") } if( wgNamespaceNumber == 6 ) { importScript('MediaWiki:Common.js/file.js'); } /** For sysops and accountcreators ***************************************** * * Description: Allows for sysop-specific Javascript at [[MediaWiki:Sysop.js]], * and accountcreator-specific CSS at [[MediaWiki:Accountcreator.css]]. */ if ( wgUserGroups ) { for ( var g = 0; g < wgUserGroups.length; ++g ) { if ( wgUserGroups[g] == "sysop" ) { importStylesheet("MediaWiki:Sysop.css"); addOnloadHook( function() { if ( !window.disableSysopJS ) { importScript("MediaWiki:Sysop.js"); } } ); } else if ( wgUserGroups[g] == "accountcreator" ) { importStylesheet("MediaWiki:Accountcreator.css"); } } } /** WikiMiniAtlas ******************************************************* * * Description: WikiMiniAtlas is a popup click and drag world map. * This script causes all of our coordinate links to display the WikiMiniAtlas popup button. * The script itself is located on meta because it is used by many projects. * See [[Meta:WikiMiniAtlas]] for more information. * Maintainers: [[User:Dschwen]] */ if (wgServer == "https://secure.wikimedia.org") { var metaBase = "https://secure.wikimedia.org/wikipedia/meta"; } else { var metaBase = "http://meta.wikimedia.org"; } importScriptURI(metaBase+"/w/index.php?title=MediaWiki:Wikiminiatlas.js&action=raw&ctype=text/javascript&smaxage=21600&maxage=86400") /** Mobile Redirect Helper ************************************************ * * Redirects to the mobile-optimized gateway at en.m.wikimedia.org * for viewers on iPhone, iPod Touch, Palm Pre, and Android devices. * * You can turn off the redirect by setting the cookie "stopMobileRedirect=true" * * This code cannot be imported, because the JS only loads after all other files * and this was causing major issues for users with mobile devices. Must be loaded * *before* the images and etc of the page on all mobile devices. * * Maintainer: [[User:Brion VIBBER]], [[User:hcatlin]] */ if (/(Android|iPhone|iPod|webOS|NetFront|Opera Mini|SEMC-Browser|PlayStation Portable|Nintendo Wii)/.test(navigator.userAgent)) { var wgMainPageName = 'Main_Page'; var stopMobileRedirectCookieExists = function() { return (document.cookie.indexOf("stopMobileRedirect=true") >= 0); } var mobileSiteLink = function() { if (wgCanonicalNamespace == 'Special' && wgCanonicalSpecialPageName == 'Search') { var pageLink = '?search=' + encodeURIComponent(document.getElementById('searchText').value); } else if (wgPageName == wgMainPageName) { var pageLink = '::Home'; // Special case } else { var pageLink = encodeURIComponent(wgPageName).replace('%2F','/').replace('%3A',':'); } return 'http://' + wgContentLanguage + '.m.wikipedia.org/wiki/' + pageLink + "?wasRedirected=true" } if (!stopMobileRedirectCookieExists()) { document.location = mobileSiteLink(); } } /* Scripts specific to Internet Explorer */ if (navigator.appName == "Microsoft Internet Explorer") { /** Internet Explorer bug fix ************************************************** * * Description: Fixes IE horizontal scrollbar bug * Maintainers: [[User:Tom-]]? */ var oldWidth; var docEl = document.documentElement; function fixIEScroll() { if (!oldWidth || docEl.clientWidth > oldWidth) doFixIEScroll(); else setTimeout(doFixIEScroll, 1); oldWidth = docEl.clientWidth; } function doFixIEScroll() { docEl.style.overflowX = (docEl.scrollWidth - docEl.clientWidth < 4) ? "hidden" : ""; } document.attachEvent("onreadystatechange", fixIEScroll); document.attachEvent("onresize", fixIEScroll); /** * Remove need for CSS hacks regarding MSIE and IPA. */ if (document.createStyleSheet) { document.createStyleSheet().addRule('.IPA', 'font-family: "Doulos SIL", "Charis SIL", Gentium, "DejaVu Sans", Code2000, "TITUS Cyberbit Basic", "Arial Unicode MS", "Lucida Sans Unicode", "Chrysanthi Unicode";'); } // In print IE (7?) does not like line-height appendCSS( '@media print { sup, sub, p, .documentDescription { line-height: normal; }}'); // IE overflow bug appendCSS('div.overflowbugx { overflow-x: scroll !important; overflow-y: hidden !important; } div.overflowbugy { overflow-y: scroll !important; overflow-x: hidden !important; }'); // IE zoomfix //Use to fix right floating div/table inside tables. appendCSS('.iezoomfix div, .iezoomfix table { zoom: 1;}' ); //Import scripts specific to Internet Explorer 6 if (navigator.appVersion.substr(22, 1) == "6") { importScript("MediaWiki:Common.js/IE60Fixes.js") } } /* Test if an element has a certain class ************************************** * * Description: Uses regular expressions and caching for better performance. * Maintainers: [[User:Mike Dillon]], [[User:R. Koot]], [[User:SG]] */ var hasClass = (function () { var reCache = {}; return function (element, className) { return (reCache[className] ? reCache[className] : (reCache[className] = new RegExp("(?:\\s|^)" + className + "(?:\\s|$)"))).test(element.className); }; })(); /** Interwiki links to featured articles *************************************** * * Description: Highlights interwiki links to featured articles (or * equivalents) by changing the bullet before the interwiki link * into a star. * Maintainers: [[User:R. Koot]] */ function LinkFA() { if ( document.getElementById( "p-lang" ) ) { var InterwikiLinks = document.getElementById( "p-lang" ).getElementsByTagName( "li" ); for ( var i = 0; i < InterwikiLinks.length; i++ ) { if ( document.getElementById( InterwikiLinks[i].className + "-fa" ) ) { InterwikiLinks[i].className += " FA" InterwikiLinks[i].title = "This is a featured article in another language."; } } } } addOnloadHook( LinkFA ); /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainers: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function collapseTable( tableIndex ) { var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.rows; if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; } Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { /* only add button and increment count if there is a header row to work with */ var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0]; if (!HeaderRow) continue; var Header = HeaderRow.getElementsByTagName( "th" )[0]; if (!Header) continue; NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.className = "collapseButton"; //Styles are declared in Common.css ButtonLink.style.color = Header.style.color; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; } } for ( var i = 0; i < tableIndex; i++ ) { if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { collapseTable( i ); } else if ( hasClass( NavigationBoxes[i], "innercollapse" ) ) { var element = NavigationBoxes[i]; while (element = element.parentNode) { if ( hasClass( element, "outercollapse" ) ) { collapseTable ( i ); break; } } } } } addOnloadHook( createCollapseButtons ); /** Dynamic Navigation Bars (experimental) ************************************* * * Description: See [[Wikipedia:NavFrame]]. * Maintainers: UNMAINTAINED */ // set up the words in your language var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']'; // shows and hides content and picture (if available) of navigation bars // Parameters: // indexNavigationBar: the index of navigation bar to be toggled function toggleNavigationBar(indexNavigationBar) { var NavToggle = document.getElementById("NavToggle" + indexNavigationBar); var NavFrame = document.getElementById("NavFrame" + indexNavigationBar); if (!NavFrame || !NavToggle) { return false; } // if shown now if (NavToggle.firstChild.data == NavigationBarHide) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'none'; } } NavToggle.firstChild.data = NavigationBarShow; // if hidden now } else if (NavToggle.firstChild.data == NavigationBarShow) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if (hasClass(NavChild, 'NavContent') || hasClass(NavChild, 'NavPic')) { NavChild.style.display = 'block'; } } NavToggle.firstChild.data = NavigationBarHide; } } // adds show/hide-button to navigation bars function createNavigationBarToggleButton() { var indexNavigationBar = 0; // iterate over all < div >-elements var divs = document.getElementsByTagName("div"); for (var i = 0; NavFrame = divs[i]; i++) { // if found a navigation bar if (hasClass(NavFrame, "NavFrame")) { indexNavigationBar++; var NavToggle = document.createElement("a"); NavToggle.className = 'NavToggle'; NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar); NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');'); var isCollapsed = hasClass( NavFrame, "collapsed" ); /* * Check if any children are already hidden. This loop is here for backwards compatibility: * the old way of making NavFrames start out collapsed was to manually add style="display:none" * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make * the content visible without JavaScript support), the new recommended way is to add the class * "collapsed" to the NavFrame itself, just like with collapsible tables. */ for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { if ( NavChild.style.display == 'none' ) { isCollapsed = true; } } } if (isCollapsed) { for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) { if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) { NavChild.style.display = 'none'; } } } var NavToggleText = document.createTextNode(isCollapsed ? NavigationBarShow : NavigationBarHide); NavToggle.appendChild(NavToggleText); // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) for(var j=0; j < NavFrame.childNodes.length; j++) { if (hasClass(NavFrame.childNodes[j], "NavHead")) { NavFrame.childNodes[j].appendChild(NavToggle); } } NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar); } } } addOnloadHook( createNavigationBarToggleButton ); /** Main Page layout fixes ********************************************************* * * Description: Adds an additional link to the complete list of languages available. * Maintainers: [[User:AzaToth]], [[User:R. Koot]], [[User:Alex Smotrov]] */ if (wgPageName == 'Main_Page' || wgPageName == 'Talk:Main_Page') addOnloadHook(function () { addPortletLink('p-lang', 'http://meta.wikimedia.org/wiki/List_of_Wikipedias', 'Complete list', 'interwiki-completelist', 'Complete list of Wikipedias') var nstab = document.getElementById('ca-nstab-main') if (nstab && wgUserLanguage=='en') { while (nstab.firstChild) nstab = nstab.firstChild nstab.nodeValue = 'Main Page' } } ) /** Table sorting fixes ************************************************ * * Description: Disables code in table sorting routine to set classes on even/odd rows * Maintainers: [[User:Random832]] */ ts_alternate_row_colors = false; /***** uploadwizard_newusers ******** * Switches in a message for non-autoconfirmed users at [[Wikipedia:Upload]] * * Maintainers: [[User:Krimpet]] ****/ function uploadwizard_newusers() { if (wgNamespaceNumber == 4 && wgTitle == "Upload" && wgAction == "view") { var oldDiv = document.getElementById("autoconfirmedusers"), newDiv = document.getElementById("newusers"); if (oldDiv && newDiv) { if (typeof wgUserGroups == "object" && wgUserGroups) { for (i = 0; i < wgUserGroups.length; i++) { if (wgUserGroups[i] == "autoconfirmed") { oldDiv.style.display = "block"; newDiv.style.display = "none"; return; } } } oldDiv.style.display = "none"; newDiv.style.display = "block"; return; } } } addOnloadHook(uploadwizard_newusers); /** IPv6 AAAA connectivity testing **/ var __ipv6wwwtest_factor = 100; var __ipv6wwwtest_done = 0; if ((wgServer != "https://secure.wikimedia.org") && (Math.floor(Math.random()*__ipv6wwwtest_factor)==42)) { importScript("MediaWiki:Common.js/IPv6.js"); } /** Magic editintros **************************************************** * * Description: Adds editintros on disambiguation pages and BLP pages. * Maintainers: [[User:RockMFR]] */ function addEditIntro(name) { var el = document.getElementById('ca-edit'); if (!el) return; el = el.getElementsByTagName('a')[0]; if (el) el.href += '&editintro=' + name; } if (wgNamespaceNumber == 0) { addOnloadHook(function(){ if (document.getElementById('disambigbox')) addEditIntro('Template:Disambig_editintro'); }); addOnloadHook(function(){ var cats = document.getElementById('mw-normal-catlinks'); if (!cats) return; cats = cats.getElementsByTagName('a'); for (var i = 0; i < cats.length; i++) { if (cats[i].title == 'Category:Living people' || cats[i].title == 'Category:Possibly living people') { addEditIntro('Template:BLP_editintro'); break; } } }); } /* * Description: Stay on the secure server as much as possible * Maintainers: [[User:TheDJ]] */ if(wgServer == 'https://secure.wikimedia.org') { importScript( 'MediaWiki:Common.js/secure.js'); } // Define ta for now. Bugzilla 23175 window.ta = []; // /* MediaWiki:Monobook.js */ /* */ /* Any JavaScript here will be loaded for users using the MonoBook skin */ /** Topbar content fix with sitenotice / CentralNotice ************************** * * Description: This fixes the location of topbar content (e.g., featured * content star) when the sitenotice or CentralNotice is active. * Maintainers: [[User:TheDJ]], [[User:MZMcBride]] */ if((navigator.userAgent.indexOf("MSIE 6")==-1) && (wgAction == 'submit' || wgAction == 'view')) addOnloadHook(function() { var cnote = document.getElementById('centralNotice'); if( !document.getElementById('mw-dismissible-notice') && !(cnote)) return; // fundraiser: && hasClass(cnote, 'expanded'))) return; appendCSS('#bodyContent { position:relative; } \n.topicon { position:absolute; top:-2em !important;}\n#coordinates{ position:absolute; top:1px !important; right:0px !important;}'); }) /* */ ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=300px-MonaLisa_sfumato.jpeg Content-Type: image/jpeg; name=300px-MonaLisa_sfumato.jpeg Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/MonaLisa_sfumato.jpeg/300px-MonaLisa_sfumato.jpeg Content-Transfer-Encoding: Base64 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 rA21260LIxVyPSfpXq9WpFJ//9k= ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=magnify-clip.png Content-Type: image/png; name=magnify-clip.png Content-Location: http://bits.wikimedia.org/skins-1.5/common/images/magnify-clip.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAA8AAAALCAAAAACFLIiAAAAAAnRSTlMA/1uRIrUA AAACYktHRAD/h4/MvwAAAAlwSFlzAAAK8AAACvABQqw0mAAAAAd0SU1FB9UEAhIR EfdlPYsAAABPSURBVAjXY/j///+5vXDwjAHIr26ZAgXZe8H8a/+hoIcw/9nevdVL 9+79DuPvzQYZFPUezu8BMZLXgkExnD8HAu6hqv//n+HZVjD4DuUDAKlChD3fj6aP AAAAAElFTkSuQmCC ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=25px-Mona_Lisa.jpg Content-Type: image/jpeg; name=25px-Mona_Lisa.jpg Content-Location: http://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Mona_Lisa.jpg/25px-Mona_Lisa.jpg Content-Transfer-Encoding: Base64 /9j/4AAQSkZJRgABAQEASABIAAD//gBDRmlsZSBzb3VyY2U6IGh0dHA6Ly9jb21t b25zLndpa2ltZWRpYS5vcmcvd2lraS9GaWxlOk1vbmFfTGlzYS5qcGf/2wBDAAYE BQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYn KSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAmABkDASIA AhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAAAAUEBwEDBgL/xAAzEAABBAEDAQQH CAMAAAAAAAABAgMEEQUAITESBhNRYQcUFSJBUnEWMlNUVpGT0YGS8P/EABkBAAMA AwAAAAAAAAAAAAAAAAIDBAEFBv/EACQRAAEEAgAFBQAAAAAAAAAAAAEAAgMhERIE FEGRwRMxcdHw/9oADAMBAAIRAxEAPwBlFwDUyK0WCy6FpAtDgNHzo8D4njXH9p5U 7CYSJ2hj4zHTMBINipCxKLd0l0iulIVyB71Ai97rg4GQygZZcjylwXAypAfLgZPT VEAGrBGpEnMHLejpuHjsMnvWGExX5DUNADXdWpag7d24gpKtgbSRveub5SSN4JOR kA/HdbWJzJAavCtfHwoOShpm411l9h1sOtlHISoAjqHwIvcfXS/2e3+I1/KP71Vn Y7PZLHQgnGqSXO4U04A2FKSmwTYvgbb1qB9q8l+ah/xp1g8BLuQ11JRlb1ajPKQx hcfGdaU25Kp1K3WgFNJrcj5udr438drElelfAx/R2rCY/BPR3PVzEZQ3ISW0g/eK iR1XyTzzzqrcFFh5aXHiTJz0Z6Q53anERi+G0AWCEJ948cCvPa9TO1HYnIYdbfq8 mHk4jllt2K4AqubUhW4+oscC9xq6eDhpHNinNg5HuAfH7PVMY+UAyRCu+FFay0vH TkCK3FYjyUpLjG7wcF2FOBZu7PO23A41n2nD/Trf+zn9aQSWXIz3RIR0uDdQJBv9 jWtXrCvlH7nVvLtdY8/dqb1CKITHE5GViZiJkFwtSG7CVDz/AOB/xrxKyM59oMvS XFt2VdJVYs7k+W/ho0aeWNJ2xaHdwGoNJetRUq1Ek+JN619SvHRo0SWV/9k= ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline Content-Type: image/png Content-Location: http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png Content-Transfer-Encoding: Base64 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 gg== ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=poweredby_mediawiki_88x31.png Content-Type: image/png; name=poweredby_mediawiki_88x31.png Content-Location: http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png Content-Transfer-Encoding: Base64 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 RU5ErkJggg== ------------cFmFh9kCdFXB8HV7rcn0VF Content-Disposition: inline; filename=wikimedia-button.png Content-Type: image/png; name=wikimedia-button.png Content-Location: http://en.wikipedia.org/images/wikimedia-button.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAAFgAAAAfCAMAAABUFvrSAAAAA3NCSVQICAjb4U/g AAAAilBMVEVjZGeGh4nn6+yZmZni5uTW1taAgYNtbnGkpKYBhbLd3t1svZdCroKt rq/Cv79ztMs7ncDMzMy5t7enzL3Hx8h6e37l5eXw8PDK0dOVwtOozdsfkrnKk47E 1tUNiba8RjxKs4bN3eKawM2SybIslr5Yp8TV4N+80dbY5Oek08O5zNJ+wqW20cf2 9vZ09tAFAAAACXBIWXMAAArwAAAK8AFCrDSYAAACh0lEQVR4Xs3RiZKbMAwGYMu3 zX2T+072fP/XqwSUppM0bLfdmf1DxlhmvhGCRV8UFmVfkm8Ig/0beLnZbJYfcuNK T8Htr6BLcvuBCAv5o/Pf4HjTJ/4AbCyICVhRXk6JUssBXiqVpK16FCvyXJcPHvgJ n5xLVD7CydqdHsKEWjsN7x3B2QC3Kun2k5mE29Rhh4eiH3JcHOgN1vt/h/fIXN7C bZEtl8us2IbFauH6YRirFBO0Wqa6K1bM5gzLQDvGtNKMGdEqrcmrRth7fyIlCMPt M26et2EYUGlxwZ0w3jKDz2WWeVSZ9Z5glltGBY8B8LERtHgwLPeUHsZJ7FfoYc/o 0vq2X+Ms8Chj1gD+he/gCjzBMasMq6hgbdSJwtCSsaiCK3jh1i8FgWFwfg0pxQXh mceAYZkwLO5hMGUPx2DtLWxZLlg2wFJKhC9FBwZ+gFcES0zOhGxZJaVleKmqUrKD VV+QGACJo6ClqgDwDjPC87cRHjveS0rVSimiAZalAdXBQ4ExkEAfTyGcd2WjRhhn PDv3o5AdvN3N6OPJT4fguq4T51J5uIJf65RK9efTw3Pn3PwcjHBwnq+dS+qHiadg zvkT9nc8o9zDwWp3xEns+MOU412W3Z72MKcG0119CF7lITjIXepw6nesSliuhS0B Ig48ByEzDaXW+Z9gnqC0QOoJf3x+xN3pXpMRt23FJXAuFHBdRpFQXEbl3Y4bCj85 TJrMZrMkXXduc5syaoSHpsGLVl2WStRNE5XNTQjuQj1TEKUk5N7CGiypNApcc4BY aVClju7CQ+bY6YCn8+ZusmsArk8ewEQn6WKxOCZz3kzDXEzB71fhT7sn/v4/QvBN vjv8RfkBEHe0Bwh42FAAAAAASUVORK5CYII= ------------cFmFh9kCdFXB8HV7rcn0VF--