我们知道不同的浏览器对css有不同的解析方式,在android webkit 上面默认的定制自己样式的通道,假如我们对这个流程有一个比较清晰的了解,那么我们也可以自己去do itself。
首先介绍下android webkit的默认的css样式表(声明我都是基于android4.0.1讲解),默认的css样式位置在(android/external/webkit/Source/WebCore/css/html.css)
/* * The default style sheet used to render HTML. * * Copyright (C) 2000 Lars Knoll ([email protected]) * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */ @namespace "http://www.w3.org/1999/xhtml"; html { display: block } /* children of the <head> element all have display:none */ head { display: none } meta { display: none } title { display: none } link { display: none } style { display: none } script { display: none } /* generic block-level elements */ body { background-repeat:no-repeat !important; display: block; margin: 8px } p { display: block; -webkit-margin-before: 1__qem; -webkit-margin-after: 1__qem; -webkit-margin-start: 0; -webkit-margin-end: 0; } div { display: block } layer { display: block } article, aside, footer, header, hgroup, nav, section { display: block } marquee { display: inline-block; overflow: -webkit-marquee } address { display: block } blockquote { display: block; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; -webkit-margin-start: 40px; -webkit-margin-end: 40px; } figcaption { display: block } figure { display: block; -webkit-margin-before: 1em; -webkit-margin-after: 1em; -webkit-margin-start: 40px; -webkit-margin-end: 40px; } q { display: inline } q:before { content: open-quote; } q:after { content: close-quote; } center { display: block; /* special centering to be able to emulate the html4/netscape behaviour */ text-align: -webkit-center } hr { display: block; -webkit-margin-before: 0.5em; -webkit-margin-after: 0.5em; -webkit-margin-start: auto; -webkit-margin-end: auto; border-style: inset; border-width: 1px } map { display: inline } /* heading elements */ h1 { display: block; font-size: 2em; -webkit-margin-before: 0.67__qem; -webkit-margin-after: 0.67em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } :-webkit-any(article,aside,nav,section) h1 { font-size: 1.5em; -webkit-margin-before: 0.83__qem; -webkit-margin-after: 0.83em; } :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: 1.17em; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; } :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: 1.00em; -webkit-margin-before: 1.33__qem; -webkit-margin-after: 1.33em; } :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: .83em; -webkit-margin-before: 1.67__qem; -webkit-margin-after: 1.67em; } :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1 { font-size: .67em; -webkit-margin-before: 2.33__qem; -webkit-margin-after: 2.33em; } h2 { display: block; font-size: 1.5em; -webkit-margin-before: 0.83__qem; -webkit-margin-after: 0.83em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } h3 { display: block; font-size: 1.17em; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } h4 { display: block; -webkit-margin-before: 1.33__qem; -webkit-margin-after: 1.33em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } h5 { display: block; font-size: .83em; -webkit-margin-before: 1.67__qem; -webkit-margin-after: 1.67em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } h6 { display: block; font-size: .67em; -webkit-margin-before: 2.33__qem; -webkit-margin-after: 2.33em; -webkit-margin-start: 0; -webkit-margin-end: 0; font-weight: bold } /* tables */ table { display: table; border-collapse: separate; border-spacing: 2px; border-color: gray } thead { display: table-header-group; vertical-align: middle; border-color: inherit } tbody { display: table-row-group; vertical-align: middle; border-color: inherit } tfoot { display: table-footer-group; vertical-align: middle; border-color: inherit } /* for tables without table section elements (can happen with XHTML or dynamically created tables) */ table > tr { vertical-align: middle; } col { display: table-column } colgroup { display: table-column-group } tr { display: table-row; vertical-align: inherit; border-color: inherit } td, th { display: table-cell; vertical-align: inherit } th { font-weight: bold } caption { display: table-caption; text-align: -webkit-center } /* lists */ ul, menu, dir { display: block; list-style-type: disc; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; -webkit-margin-start: 0; -webkit-margin-end: 0; -webkit-padding-start: 40px } ol { display: block; list-style-type: decimal; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; -webkit-margin-start: 0; -webkit-margin-end: 0; -webkit-padding-start: 40px } li { display: list-item } ul ul, ol ul { list-style-type: circle } ol ol ul, ol ul ul, ul ol ul, ul ul ul { list-style-type: square } dd { display: block; -webkit-margin-start: 40px } dl { display: block; -webkit-margin-before: 1__qem; -webkit-margin-after: 1em; -webkit-margin-start: 0; -webkit-margin-end: 0; } dt { display: block } ol ul, ul ol, ul ul, ol ol { -webkit-margin-before: 0; -webkit-margin-after: 0 } /* form elements */ form { display: block; margin-top: 0__qem; } label { cursor: default; } legend { display: block; -webkit-padding-start: 2px; -webkit-padding-end: 2px; border: none } fieldset { display: block; -webkit-margin-start: 2px; -webkit-margin-end: 2px; -webkit-padding-before: 0.35em; -webkit-padding-start: 0.75em; -webkit-padding-end: 0.75em; -webkit-padding-after: 0.625em; border: 2px groove ThreeDFace } button { -webkit-appearance: button; } /* Form controls don't go vertical. */ input, textarea, keygen, select, button, isindex, meter, progress { -webkit-block-flow: tb !important; } input, textarea, keygen, select, button, isindex, datagrid { margin: 0__qem; font: -webkit-small-control; color: initial; letter-spacing: normal; word-spacing: normal; line-height: normal; text-transform: none; text-indent: 0; text-shadow: none; display: inline-block; text-align: -webkit-auto; } input[type="hidden"] { display: none } input, input[type="password"], input[type="search"], isindex { -webkit-appearance: textfield; padding: 1px; background-color: white; border: 2px inset; -webkit-rtl-ordering: logical; -webkit-user-select: text; cursor: auto; } input[type="search"] { -webkit-appearance: searchfield; -webkit-box-sizing: border-box; } input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: searchfield-cancel-button; display: inline-block; } input[type="search"]::-webkit-search-decoration { -webkit-appearance: searchfield-decoration; display: inline-block; } input[type="search"]::-webkit-search-results-decoration { -webkit-appearance: searchfield-results-decoration; display: inline-block; } input[type="search"]::-webkit-search-results-button { -webkit-appearance: searchfield-results-button; display: inline-block; } input::-webkit-input-list-button { -webkit-appearance: list-button; display: inline-block; } input::-webkit-inner-spin-button { -webkit-appearance: inner-spin-button; display: inline-block; position: relative; cursor: default; -webkit-user-select: none; } input::-webkit-outer-spin-button { -webkit-appearance: outer-spin-button; display: inline-block; position: relative; cursor: default; margin-left: 2px; -webkit-user-select: none; } input::-webkit-input-speech-button { -webkit-appearance: -webkit-input-speech-button; display: inline-block; } keygen, select { -webkit-border-radius: 5px; } keygen::-webkit-keygen-select { margin: 0px; } textarea { -webkit-appearance: textarea; background-color: white; border: 1px solid; -webkit-rtl-ordering: logical; -webkit-user-select: text; -webkit-box-orient: vertical; resize: auto; cursor: auto; padding: 2px; white-space: pre-wrap; word-wrap: break-word; } input::-webkit-input-placeholder, isindex::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: darkGray; } input[type="password"] { -webkit-text-security: disc !important; } input[type="hidden"], input[type="image"], input[type="file"] { -webkit-appearance: initial; padding: initial; background-color: initial; border: initial; } input[type="file"] { -webkit-box-align: baseline; text-align: start !important; } input:-webkit-autofill { background-color: #FAFFBD !important; background-image:none !important; color: #000000 !important; } input[type="radio"], input[type="checkbox"] { margin: 3px 0.5ex; padding: initial; background-color: initial; border: initial; } input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button { -webkit-appearance: push-button; white-space: pre } input[type="button"], input[type="submit"], input[type="reset"], input[type="file"]::-webkit-file-upload-button, button { -webkit-box-align: center; text-align: center; cursor: default; color: ButtonText; padding: 2px 6px 3px 6px; border: 2px outset ButtonFace; background-color: ButtonFace; -webkit-box-sizing: border-box } input[type="range"] { -webkit-appearance: slider-horizontal; padding: initial; border: initial; margin: 2px; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: sliderthumb-horizontal; display: block; } input[type="button"]:disabled, input[type="submit"]:disabled, input[type="reset"]:disabled, input[type="file"]:disabled::-webkit-file-upload-button, button:disabled, select:disabled, keygen:disabled, optgroup:disabled, option:disabled, datagrid:disabled { color: GrayText } input[type="button"]:active, input[type="submit"]:active, input[type="reset"]:active, input[type="file"]:active::-webkit-file-upload-button, button:active { border-style: inset } input[type="button"]:active:disabled, input[type="submit"]:active:disabled, input[type="reset"]:active:disabled, input[type="file"]:active:disabled::-webkit-file-upload-button, button:active:disabled { border-style: outset } area, param { display: none } input[type="checkbox"] { -webkit-appearance: checkbox; -webkit-box-sizing: border-box; } input[type="radio"] { -webkit-appearance: radio; -webkit-box-sizing: border-box; } select { -webkit-appearance: menulist; -webkit-box-sizing: border-box; -webkit-box-align: center; border: 1px solid; white-space: pre; -webkit-rtl-ordering: logical; color: black; background-color: white; cursor: default; } select[size], select[multiple], select[size][multiple] { -webkit-appearance: listbox; -webkit-box-align: start; border: 1px inset gray; -webkit-border-radius: initial; white-space: initial; } select[size="0"], select[size="1"] { -webkit-appearance: menulist; -webkit-box-align: center; border: 1px solid; -webkit-border-radius: 5px; white-space: pre; } optgroup { font-weight: bolder; } option { font-weight: normal; } output { display: inline; } /* form validation message bubble */ ::-webkit-validation-bubble { display: inline-block; z-index: 2147483647; position: absolute; opacity: 0.95; line-height: 0; margin: 0; -webkit-text-security: none; -webkit-transition: opacity 05.5s ease; } ::-webkit-validation-bubble-message { display: block; position: relative; top: -4px; font: message-box; color: black; min-width: 50px; max-width: 200px; border: solid 2px #400; background: -webkit-gradient(linear, left top, left bottom, from(#f8ecec), to(#e8cccc)); padding: 8px; -webkit-border-radius: 8px; -webkit-box-shadow: 4px 4px 4px rgba(100,100,100,0.6), inset -2px -2px 1px #d0c4c4, inset 2px 2px 1px white; line-height: normal; z-index: 2147483644; } ::-webkit-validation-bubble-arrow { display: inline-block; position: relative; left: 32px; width: 16px; height: 16px; background-color: #f8ecec; border-width: 2px 0 0 2px; border-style: solid; border-color: #400; box-shadow: inset 2px 2px 1px white; -webkit-transform-origin: 0 0; -webkit-transform: rotate(45deg); z-index: 2147483645; } ::-webkit-validation-bubble-arrow-clipper { display: block; overflow: hidden; height: 16px; } /* meter */ meter { -webkit-appearance: meter; -webkit-box-sizing: border-box; display: inline-box; height: 1em; width: 5em; vertical-align: -0.2em; } meter::-webkit-meter-bar { background: -webkit-gradient(linear, left top, left bottom, from(#ddd), to(#ddd), color-stop(0.20, #eee), color-stop(0.45, #ccc), color-stop(0.55, #ccc)); height: 100%; -webkit-box-sizing: border-box; } meter::-webkit-meter-optimum-value { background: -webkit-gradient(linear, left top, left bottom, from(#ad7), to(#ad7), color-stop(0.20, #cea), color-stop(0.45, #7a3), color-stop(0.55, #7a3)); height: 100%; -webkit-box-sizing: border-box; } meter::-webkit-meter-suboptimum-value { background: -webkit-gradient(linear, left top, left bottom, from(#fe7), to(#fe7), color-stop(0.20, #ffc), color-stop(0.45, #db3), color-stop(0.55, #db3)); height: 100%; -webkit-box-sizing: border-box; } meter::-webkit-meter-even-less-good-value { background: -webkit-gradient(linear, left top, left bottom, from(#f77), to(#f77), color-stop(0.20, #fcc), color-stop(0.45, #d44), color-stop(0.55, #d44)); height: 100%; -webkit-box-sizing: border-box; } /* progress */ progress { -webkit-appearance: progress-bar; -webkit-box-sizing: border-box; display: inline-block; height: 1em; width: 10em; vertical-align: -0.2em; } progress::-webkit-progress-bar { background-color: gray; height: 100%; -webkit-box-sizing: border-box; } progress::-webkit-progress-value { background-color: green; height: 100%; width: 50%; /* should be removed later */ -webkit-box-sizing: border-box; } /* datagrid */ datagrid { height: 150px; /* We don't use width:300px in CSS, since we want width:intrinsic and width:min-intrinsic to reset to 300 properly. */ -webkit-appearance: datagrid; -webkit-box-sizing: border-box; -webkit-rtl-ordering: logical; color: black; background-color: white; cursor: default; border: 1px inset gray; white-space: initial; } /* inline elements */ u, ins { text-decoration: underline } strong, b { font-weight: bolder } i, cite, em, var, address { font-style: italic } tt, code, kbd, samp { font-family: monospace } pre, xmp, plaintext, listing { display: block; font-family: monospace; white-space: pre; margin: 1__qem 0 } mark { background-color: yellow; color: black } big { font-size: larger } small { font-size: smaller } s, strike, del { text-decoration: line-through } sub { vertical-align: sub; font-size: smaller } sup { vertical-align: super; font-size: smaller } nobr { white-space: nowrap } /* states */ :focus { outline: auto 5px -webkit-focus-ring-color } /* Read-only text fields do not show a focus ring but do still receive focus */ html:focus, body:focus, input[readonly]:focus { outline: none } input:focus, textarea:focus, isindex:focus, keygen:focus, select:focus { outline-offset: -2px } input[type="button"]:focus, input[type="checkbox"]:focus, input[type="file"]:focus, input[type="hidden"]:focus, input[type="image"]:focus, input[type="radio"]:focus, input[type="reset"]:focus, input[type="search"]:focus, input[type="submit"]:focus, input[type="file"]:focus::-webkit-file-upload-button { outline-offset: 0 } a:-webkit-any-link { color: -webkit-link; text-decoration: none; cursor: auto; } a:-webkit-any-link:active { color: -webkit-activelink } /* HTML5 ruby elements */ ruby, rt { text-indent: 0; /* blocks used for ruby rendering should not trigger this */ } rt { line-height: normal; -webkit-text-emphasis: none; } ruby > rt { display: block; font-size: 50%; text-align: -webkit-auto; } ruby > rp { display: none; } /* other elements */ noframes { display: none } frameset, frame { display: block } frameset { border-color: inherit } iframe { border: 2px inset } details { display: block } summary { display: block } summary::-webkit-details-marker { display: inline-block; width: 0.66em; height: 0.66em; margin-right: 0.4em; } /* page */ @page { /* FIXME: Define the right default values for page properties. */ size: auto; margin: auto; padding: 0px; border-width: 0px; } /* noscript is handled internally, as it depends on settings */
那么这个文件是如何加载到webcore中那?
按照我们猜测有可能是浏览器启动的时候直接加载进去,如同在页面里面直接加载使用
如同下面的例子:
<head> <link rel="stylesheet" type="text/css" href="http://www.dreamdu.com/style.css" /> </head>实际上webcore中的使用有点类似,但是形式不一样。
下面我们就简单说一下如何把html.css文件加载到webcore内部中
首先我们看到(android/external/webkit/Source/WebCore/Android.derived.mk)
我们看下里面的脚本代码:
# user agent style sheets style_sheets := $(LOCAL_PATH)/css/html.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/fullscreen.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css $(LOCAL_PATH)/css/mediaControlsAndroid.css $(LOCAL_PATH)/css/guangxidvb.css $(LOCAL_PATH)/css/guangxivod.css ifeq ($(ENABLE_SVG), true) style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css endif GEN := $(intermediates)/css/UserAgentStyleSheets.h make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl $(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^) $(GEN): $(make_css_file_arrays) $(style_sheets) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp) # character set name table
webkit对html.css做了个特殊的处理,会先把html.css文件转化成16机制的数字
具体生成在:
obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/UserAgentStyleSheets.h
namespace WebCore { extern const char htmlUserAgentStyleSheet[14912]; extern const char quirksUserAgentStyleSheet[351]; extern const char fullscreenUserAgentStyleSheet[509]; extern const char sourceUserAgentStyleSheet[2014]; extern const char mediaControlsUserAgentStyleSheet[4051]; extern const char mediaControlsAndroidUserAgentStyleSheet[2812]; extern const char guangxidvbUserAgentStyleSheet[14937];}
obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/UserAgentStyleSheets.cpp
namespace WebCore { extern const char htmlUserAgentStyleSheet[14912] = { 64, 110, 97, 109, 101, 115, 112, 97, 99, 101, 32, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 49, 57, 57, 57, 47, 120, 104, 116, 109, 108, 34, 59, 32, 104, 116, 109, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 109, 101, 116, 97, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 116, 105, 116, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 108, 105, 110, 107, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 115, 116, 121, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 115, 99, 114, 105, 112, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 98, 111, 100, 121, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 114, 101, 112, 101, 97, 116, 58, 110, 111, 45, 114, 101, 112, 101, 97, 116, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 56, 112, 120, 32, 125, 32, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 125, 32, 100, 105, 118, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 108, 97, 121, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 97, 114, 116, 105, 99, 108, 101, 44, 32, 97, 115, 105, 100, 101, 44, 32, 102, 111, 111, 116, 101, 114, 44, 32, 104, 101, 97, 100, 101, 114, 44, 32, 104, 103, 114, 111, 117, 112, 44, 32, 110, 97, 118, 44, 32, 115, 101, 99, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 109, 97, 114, 113, 117, 101, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102, 108, 111, 119, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 113, 117, 101, 101, 32, 125, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 98, 108, 111, 99, 107, 113, 117, 111, 116, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 52, 48, 112, 120, 59, 32, 125, 32, 102, 105, 103, 99, 97, 112, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 102, 105, 103, 117, 114, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 52, 48, 112, 120, 59, 32, 125, 32, 113, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 32, 125, 32, 113, 58, 98, 101, 102, 111, 114, 101, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58, 32, 111, 112, 101, 110, 45, 113, 117, 111, 116, 101, 59, 32, 125, 32, 113, 58, 97, 102, 116, 101, 114, 32, 123, 32, 99, 111, 110, 116, 101, 110, 116, 58, 32, 99, 108, 111, 115, 101, 45, 113, 117, 111, 116, 101, 59, 32, 125, 32, 99, 101, 110, 116, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, 104, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 97, 117, 116, 111, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 97, 117, 116, 111, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105, 110, 115, 101, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 49, 112, 120, 32, 125, 32, 109, 97, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 32, 125, 32, 104, 49, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 50, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 54, 55, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 54, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 56, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 56, 51, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 49, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 48, 48, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 46, 51, 51, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 56, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 46, 54, 55, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 46, 54, 55, 101, 109, 59, 32, 125, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 40, 97, 114, 116, 105, 99, 108, 101, 44, 97, 115, 105, 100, 101, 44, 110, 97, 118, 44, 115, 101, 99, 116, 105, 111, 110, 41, 32, 104, 49, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 54, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 50, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 50, 46, 51, 51, 101, 109, 59, 32, 125, 32, 104, 50, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 56, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 56, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 51, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 46, 49, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 52, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 46, 51, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 53, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 56, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 46, 54, 55, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 46, 54, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 104, 54, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 46, 54, 55, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 50, 46, 51, 51, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 50, 46, 51, 51, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 116, 97, 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 108, 97, 112, 115, 101, 58, 32, 115, 101, 112, 97, 114, 97, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 97, 121, 32, 125, 32, 116, 104, 101, 97, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 104, 101, 97, 100, 101, 114, 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 98, 111, 100, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 102, 111, 111, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 102, 111, 111, 116, 101, 114, 45, 103, 114, 111, 117, 112, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 97, 98, 108, 101, 32, 62, 32, 116, 114, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 109, 105, 100, 100, 108, 101, 59, 32, 125, 32, 99, 111, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 111, 108, 117, 109, 110, 32, 125, 32, 99, 111, 108, 103, 114, 111, 117, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 111, 108, 117, 109, 110, 45, 103, 114, 111, 117, 112, 32, 125, 32, 116, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 114, 111, 119, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, 105, 116, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 100, 44, 32, 116, 104, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 101, 108, 108, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 116, 104, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 32, 125, 32, 99, 97, 112, 116, 105, 111, 110, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 116, 97, 98, 108, 101, 45, 99, 97, 112, 116, 105, 111, 110, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 99, 101, 110, 116, 101, 114, 32, 125, 32, 117, 108, 44, 32, 109, 101, 110, 117, 44, 32, 100, 105, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 100, 105, 115, 99, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 111, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 100, 101, 99, 105, 109, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 108, 105, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 108, 105, 115, 116, 45, 105, 116, 101, 109, 32, 125, 32, 117, 108, 32, 117, 108, 44, 32, 111, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 99, 105, 114, 99, 108, 101, 32, 125, 32, 111, 108, 32, 111, 108, 32, 117, 108, 44, 32, 111, 108, 32, 117, 108, 32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 32, 117, 108, 44, 32, 117, 108, 32, 117, 108, 32, 117, 108, 32, 123, 32, 108, 105, 115, 116, 45, 115, 116, 121, 108, 101, 45, 116, 121, 112, 101, 58, 32, 115, 113, 117, 97, 114, 101, 32, 125, 32, 100, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 52, 48, 112, 120, 32, 125, 32, 100, 108, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 49, 95, 95, 113, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 49, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 48, 59, 32, 125, 32, 100, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 111, 108, 32, 117, 108, 44, 32, 117, 108, 32, 111, 108, 44, 32, 117, 108, 32, 117, 108, 44, 32, 111, 108, 32, 111, 108, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 97, 102, 116, 101, 114, 58, 32, 48, 32, 125, 32, 102, 111, 114, 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 109, 97, 114, 103, 105, 110, 45, 116, 111, 112, 58, 32, 48, 95, 95, 113, 101, 109, 59, 32, 125, 32, 108, 97, 98, 101, 108, 32, 123, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 125, 32, 108, 101, 103, 101, 110, 100, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 101, 110, 100, 58, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 110, 111, 110, 101, 32, 125, 32, 102, 105, 101, 108, 100, 115, 101, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 115, 116, 97, 114, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 109, 97, 114, 103, 105, 110, 45, 101, 110, 100, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 98, 101, 102, 111, 114, 101, 58, 32, 48, 46, 51, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 115, 116, 97, 114, 116, 58, 32, 48, 46, 55, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 101, 110, 100, 58, 32, 48, 46, 55, 53, 101, 109, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 112, 97, 100, 100, 105, 110, 103, 45, 97, 102, 116, 101, 114, 58, 32, 48, 46, 54, 50, 53, 101, 109, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 103, 114, 111, 111, 118, 101, 32, 84, 104, 114, 101, 101, 68, 70, 97, 99, 101, 32, 125, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 98, 117, 116, 116, 111, 110, 59, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 44, 32, 107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, 101, 99, 116, 44, 32, 98, 117, 116, 116, 111, 110, 44, 32, 105, 115, 105, 110, 100, 101, 120, 44, 32, 109, 101, 116, 101, 114, 44, 32, 112, 114, 111, 103, 114, 101, 115, 115, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 108, 111, 99, 107, 45, 102, 108, 111, 119, 58, 32, 116, 98, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 44, 32, 107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, 101, 99, 116, 44, 32, 98, 117, 116, 116, 111, 110, 44, 32, 105, 115, 105, 110, 100, 101, 120, 44, 32, 100, 97, 116, 97, 103, 114, 105, 100, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 95, 95, 113, 101, 109, 59, 32, 102, 111, 110, 116, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 115, 109, 97, 108, 108, 45, 99, 111, 110, 116, 114, 111, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 108, 101, 116, 116, 101, 114, 45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 119, 111, 114, 100, 45, 115, 112, 97, 99, 105, 110, 103, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 116, 101, 120, 116, 45, 116, 114, 97, 110, 115, 102, 111, 114, 109, 58, 32, 110, 111, 110, 101, 59, 32, 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 116, 101, 120, 116, 45, 115, 104, 97, 100, 111, 119, 58, 32, 110, 111, 110, 101, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 93, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 44, 32, 105, 115, 105, 110, 100, 101, 120, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 116, 101, 120, 116, 102, 105, 101, 108, 100, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 49, 112, 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 105, 110, 115, 101, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, 120, 116, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 99, 97, 110, 99, 101, 108, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 99, 97, 110, 99, 101, 108, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 114, 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 101, 97, 114, 99, 104, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 101, 97, 114, 99, 104, 102, 105, 101, 108, 100, 45, 114, 101, 115, 117, 108, 116, 115, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 108, 105, 115, 116, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 110, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 105, 110, 110, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 111, 117, 116, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 111, 117, 116, 101, 114, 45, 115, 112, 105, 110, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 109, 97, 114, 103, 105, 110, 45, 108, 101, 102, 116, 58, 32, 50, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 115, 112, 101, 101, 99, 104, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 115, 112, 101, 101, 99, 104, 45, 98, 117, 116, 116, 111, 110, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 125, 32, 107, 101, 121, 103, 101, 110, 44, 32, 115, 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, 125, 32, 107, 101, 121, 103, 101, 110, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 107, 101, 121, 103, 101, 110, 45, 115, 101, 108, 101, 99, 116, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 112, 120, 59, 32, 125, 32, 116, 101, 120, 116, 97, 114, 101, 97, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 116, 101, 120, 116, 97, 114, 101, 97, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 117, 115, 101, 114, 45, 115, 101, 108, 101, 99, 116, 58, 32, 116, 101, 120, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 111, 114, 105, 101, 110, 116, 58, 32, 118, 101, 114, 116, 105, 99, 97, 108, 59, 32, 114, 101, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 45, 119, 114, 97, 112, 59, 32, 119, 111, 114, 100, 45, 119, 114, 97, 112, 58, 32, 98, 114, 101, 97, 107, 45, 119, 111, 114, 100, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, 32, 105, 115, 105, 110, 100, 101, 120, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 105, 110, 112, 117, 116, 45, 112, 108, 97, 99, 101, 104, 111, 108, 100, 101, 114, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 100, 97, 114, 107, 71, 114, 97, 121, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 112, 97, 115, 115, 119, 111, 114, 100, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 100, 105, 115, 99, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 105, 109, 97, 103, 101, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 98, 97, 115, 101, 108, 105, 110, 101, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, 116, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 102, 105, 108, 108, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 35, 70, 65, 70, 70, 66, 68, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 105, 109, 97, 103, 101, 58, 110, 111, 110, 101, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 99, 111, 108, 111, 114, 58, 32, 35, 48, 48, 48, 48, 48, 48, 32, 33, 105, 109, 112, 111, 114, 116, 97, 110, 116, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 109, 97, 114, 103, 105, 110, 58, 32, 51, 112, 120, 32, 48, 46, 53, 101, 120, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 112, 117, 115, 104, 45, 98, 117, 116, 116, 111, 110, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 84, 101, 120, 116, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 50, 112, 120, 32, 54, 112, 120, 32, 51, 112, 120, 32, 54, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 111, 117, 116, 115, 101, 116, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 66, 117, 116, 116, 111, 110, 70, 97, 99, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, 114, 45, 104, 111, 114, 105, 122, 111, 110, 116, 97, 108, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 50, 112, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 110, 103, 101, 34, 93, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 115, 108, 105, 100, 101, 114, 45, 116, 104, 117, 109, 98, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 115, 108, 105, 100, 101, 114, 116, 104, 117, 109, 98, 45, 104, 111, 114, 105, 122, 111, 110, 116, 97, 108, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 115, 101, 108, 101, 99, 116, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 107, 101, 121, 103, 101, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 103, 114, 111, 117, 112, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 111, 112, 116, 105, 111, 110, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 100, 97, 116, 97, 103, 114, 105, 100, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 71, 114, 97, 121, 84, 101, 120, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 105, 110, 115, 101, 116, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 44, 32, 98, 117, 116, 116, 111, 110, 58, 97, 99, 116, 105, 118, 101, 58, 100, 105, 115, 97, 98, 108, 101, 100, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 111, 117, 116, 115, 101, 116, 32, 125, 32, 97, 114, 101, 97, 44, 32, 112, 97, 114, 97, 109, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 99, 104, 101, 99, 107, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 114, 97, 100, 105, 111, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 109, 117, 108, 116, 105, 112, 108, 101, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 93, 91, 109, 117, 108, 116, 105, 112, 108, 101, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 108, 105, 115, 116, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 115, 116, 97, 114, 116, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, 121, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 48, 34, 93, 44, 32, 115, 101, 108, 101, 99, 116, 91, 115, 105, 122, 101, 61, 34, 49, 34, 93, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 110, 117, 108, 105, 115, 116, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 97, 108, 105, 103, 110, 58, 32, 99, 101, 110, 116, 101, 114, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 115, 111, 108, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 53, 112, 120, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 125, 32, 111, 112, 116, 103, 114, 111, 117, 112, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 59, 32, 125, 32, 111, 112, 116, 105, 111, 110, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 125, 32, 111, 117, 116, 112, 117, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 59, 32, 125, 32, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58, 32, 50, 49, 52, 55, 52, 56, 51, 54, 52, 55, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 97, 98, 115, 111, 108, 117, 116, 101, 59, 32, 111, 112, 97, 99, 105, 116, 121, 58, 32, 48, 46, 57, 53, 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 48, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 58, 32, 110, 111, 110, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 114, 97, 110, 115, 105, 116, 105, 111, 110, 58, 32, 111, 112, 97, 99, 105, 116, 121, 32, 48, 53, 46, 53, 115, 32, 101, 97, 115, 101, 59, 32, 125, 32, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 45, 109, 101, 115, 115, 97, 103, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 116, 111, 112, 58, 32, 45, 52, 112, 120, 59, 32, 102, 111, 110, 116, 58, 32, 109, 101, 115, 115, 97, 103, 101, 45, 98, 111, 120, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 109, 105, 110, 45, 119, 105, 100, 116, 104, 58, 32, 53, 48, 112, 120, 59, 32, 109, 97, 120, 45, 119, 105, 100, 116, 104, 58, 32, 50, 48, 48, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 115, 111, 108, 105, 100, 32, 50, 112, 120, 32, 35, 52, 48, 48, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 102, 56, 101, 99, 101, 99, 41, 44, 32, 116, 111, 40, 35, 101, 56, 99, 99, 99, 99, 41, 41, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 56, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 56, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 104, 97, 100, 111, 119, 58, 32, 52, 112, 120, 32, 52, 112, 120, 32, 52, 112, 120, 32, 114, 103, 98, 97, 40, 49, 48, 48, 44, 49, 48, 48, 44, 49, 48, 48, 44, 48, 46, 54, 41, 44, 32, 105, 110, 115, 101, 116, 32, 45, 50, 112, 120, 32, 45, 50, 112, 120, 32, 49, 112, 120, 32, 35, 100, 48, 99, 52, 99, 52, 44, 32, 105, 110, 115, 101, 116, 32, 50, 112, 120, 32, 50, 112, 120, 32, 49, 112, 120, 32, 119, 104, 105, 116, 101, 59, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58, 32, 50, 49, 52, 55, 52, 56, 51, 54, 52, 52, 59, 32, 125, 32, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 45, 97, 114, 114, 111, 119, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 112, 111, 115, 105, 116, 105, 111, 110, 58, 32, 114, 101, 108, 97, 116, 105, 118, 101, 59, 32, 108, 101, 102, 116, 58, 32, 51, 50, 112, 120, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 54, 112, 120, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 54, 112, 120, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 35, 102, 56, 101, 99, 101, 99, 59, 32, 98, 111, 114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 50, 112, 120, 32, 48, 32, 48, 32, 50, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45, 115, 116, 121, 108, 101, 58, 32, 115, 111, 108, 105, 100, 59, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 35, 52, 48, 48, 59, 32, 98, 111, 120, 45, 115, 104, 97, 100, 111, 119, 58, 32, 105, 110, 115, 101, 116, 32, 50, 112, 120, 32, 50, 112, 120, 32, 49, 112, 120, 32, 119, 104, 105, 116, 101, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 114, 97, 110, 115, 102, 111, 114, 109, 45, 111, 114, 105, 103, 105, 110, 58, 32, 48, 32, 48, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 114, 97, 110, 115, 102, 111, 114, 109, 58, 32, 114, 111, 116, 97, 116, 101, 40, 52, 53, 100, 101, 103, 41, 59, 32, 122, 45, 105, 110, 100, 101, 120, 58, 32, 50, 49, 52, 55, 52, 56, 51, 54, 52, 53, 59, 32, 125, 32, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 118, 97, 108, 105, 100, 97, 116, 105, 111, 110, 45, 98, 117, 98, 98, 108, 101, 45, 97, 114, 114, 111, 119, 45, 99, 108, 105, 112, 112, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 111, 118, 101, 114, 102, 108, 111, 119, 58, 32, 104, 105, 100, 100, 101, 110, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 54, 112, 120, 59, 32, 125, 32, 109, 101, 116, 101, 114, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 109, 101, 116, 101, 114, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 111, 120, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 101, 109, 59, 32, 119, 105, 100, 116, 104, 58, 32, 53, 101, 109, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 45, 48, 46, 50, 101, 109, 59, 32, 125, 32, 109, 101, 116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116, 101, 114, 45, 98, 97, 114, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 100, 100, 100, 41, 44, 32, 116, 111, 40, 35, 100, 100, 100, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 50, 48, 44, 32, 35, 101, 101, 101, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 99, 99, 99, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 53, 53, 44, 32, 35, 99, 99, 99, 41, 41, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 109, 101, 116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116, 101, 114, 45, 111, 112, 116, 105, 109, 117, 109, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 97, 100, 55, 41, 44, 32, 116, 111, 40, 35, 97, 100, 55, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 50, 48, 44, 32, 35, 99, 101, 97, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 55, 97, 51, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 53, 53, 44, 32, 35, 55, 97, 51, 41, 41, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 109, 101, 116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116, 101, 114, 45, 115, 117, 98, 111, 112, 116, 105, 109, 117, 109, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 102, 101, 55, 41, 44, 32, 116, 111, 40, 35, 102, 101, 55, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 50, 48, 44, 32, 35, 102, 102, 99, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 100, 98, 51, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 53, 53, 44, 32, 35, 100, 98, 51, 41, 41, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 109, 101, 116, 101, 114, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 109, 101, 116, 101, 114, 45, 101, 118, 101, 110, 45, 108, 101, 115, 115, 45, 103, 111, 111, 100, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 103, 114, 97, 100, 105, 101, 110, 116, 40, 108, 105, 110, 101, 97, 114, 44, 32, 108, 101, 102, 116, 32, 116, 111, 112, 44, 32, 108, 101, 102, 116, 32, 98, 111, 116, 116, 111, 109, 44, 32, 102, 114, 111, 109, 40, 35, 102, 55, 55, 41, 44, 32, 116, 111, 40, 35, 102, 55, 55, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 50, 48, 44, 32, 35, 102, 99, 99, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 52, 53, 44, 32, 35, 100, 52, 52, 41, 44, 32, 99, 111, 108, 111, 114, 45, 115, 116, 111, 112, 40, 48, 46, 53, 53, 44, 32, 35, 100, 52, 52, 41, 41, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 32, 123, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 112, 114, 111, 103, 114, 101, 115, 115, 45, 98, 97, 114, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 101, 109, 59, 32, 119, 105, 100, 116, 104, 58, 32, 49, 48, 101, 109, 59, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 45, 48, 46, 50, 101, 109, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 112, 114, 111, 103, 114, 101, 115, 115, 45, 98, 97, 114, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 97, 121, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 112, 114, 111, 103, 114, 101, 115, 115, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 112, 114, 111, 103, 114, 101, 115, 115, 45, 118, 97, 108, 117, 101, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 103, 114, 101, 101, 110, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 48, 48, 37, 59, 32, 119, 105, 100, 116, 104, 58, 32, 53, 48, 37, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 125, 32, 100, 97, 116, 97, 103, 114, 105, 100, 32, 123, 32, 104, 101, 105, 103, 104, 116, 58, 32, 49, 53, 48, 112, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 112, 112, 101, 97, 114, 97, 110, 99, 101, 58, 32, 100, 97, 116, 97, 103, 114, 105, 100, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 98, 111, 120, 45, 115, 105, 122, 105, 110, 103, 58, 32, 98, 111, 114, 100, 101, 114, 45, 98, 111, 120, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 114, 116, 108, 45, 111, 114, 100, 101, 114, 105, 110, 103, 58, 32, 108, 111, 103, 105, 99, 97, 108, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 59, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 119, 104, 105, 116, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 100, 101, 102, 97, 117, 108, 116, 59, 32, 98, 111, 114, 100, 101, 114, 58, 32, 49, 112, 120, 32, 105, 110, 115, 101, 116, 32, 103, 114, 97, 121, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 105, 110, 105, 116, 105, 97, 108, 59, 32, 125, 32, 117, 44, 32, 105, 110, 115, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 117, 110, 100, 101, 114, 108, 105, 110, 101, 32, 125, 32, 115, 116, 114, 111, 110, 103, 44, 32, 98, 32, 123, 32, 102, 111, 110, 116, 45, 119, 101, 105, 103, 104, 116, 58, 32, 98, 111, 108, 100, 101, 114, 32, 125, 32, 105, 44, 32, 99, 105, 116, 101, 44, 32, 101, 109, 44, 32, 118, 97, 114, 44, 32, 97, 100, 100, 114, 101, 115, 115, 32, 123, 32, 102, 111, 110, 116, 45, 115, 116, 121, 108, 101, 58, 32, 105, 116, 97, 108, 105, 99, 32, 125, 32, 116, 116, 44, 32, 99, 111, 100, 101, 44, 32, 107, 98, 100, 44, 32, 115, 97, 109, 112, 32, 123, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, 32, 125, 32, 112, 114, 101, 44, 32, 120, 109, 112, 44, 32, 112, 108, 97, 105, 110, 116, 101, 120, 116, 44, 32, 108, 105, 115, 116, 105, 110, 103, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 112, 114, 101, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 49, 95, 95, 113, 101, 109, 32, 48, 32, 125, 32, 109, 97, 114, 107, 32, 123, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, 45, 99, 111, 108, 111, 114, 58, 32, 121, 101, 108, 108, 111, 119, 59, 32, 99, 111, 108, 111, 114, 58, 32, 98, 108, 97, 99, 107, 32, 125, 32, 98, 105, 103, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 108, 97, 114, 103, 101, 114, 32, 125, 32, 115, 109, 97, 108, 108, 32, 123, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 115, 44, 32, 115, 116, 114, 105, 107, 101, 44, 32, 100, 101, 108, 32, 123, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 108, 105, 110, 101, 45, 116, 104, 114, 111, 117, 103, 104, 32, 125, 32, 115, 117, 98, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 98, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 115, 117, 112, 32, 123, 32, 118, 101, 114, 116, 105, 99, 97, 108, 45, 97, 108, 105, 103, 110, 58, 32, 115, 117, 112, 101, 114, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 115, 109, 97, 108, 108, 101, 114, 32, 125, 32, 110, 111, 98, 114, 32, 123, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, 110, 111, 119, 114, 97, 112, 32, 125, 32, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 97, 117, 116, 111, 32, 53, 112, 120, 32, 45, 119, 101, 98, 107, 105, 116, 45, 102, 111, 99, 117, 115, 45, 114, 105, 110, 103, 45, 99, 111, 108, 111, 114, 32, 125, 32, 104, 116, 109, 108, 58, 102, 111, 99, 117, 115, 44, 32, 98, 111, 100, 121, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 114, 101, 97, 100, 111, 110, 108, 121, 93, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, 111, 110, 101, 32, 125, 32, 105, 110, 112, 117, 116, 58, 102, 111, 99, 117, 115, 44, 32, 116, 101, 120, 116, 97, 114, 101, 97, 58, 102, 111, 99, 117, 115, 44, 32, 105, 115, 105, 110, 100, 101, 120, 58, 102, 111, 99, 117, 115, 44, 32, 107, 101, 121, 103, 101, 110, 58, 102, 111, 99, 117, 115, 44, 32, 115, 101, 108, 101, 99, 116, 58, 102, 111, 99, 117, 115, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, 58, 32, 45, 50, 112, 120, 32, 125, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 98, 117, 116, 116, 111, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 99, 104, 101, 99, 107, 98, 111, 120, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 104, 105, 100, 100, 101, 110, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 105, 109, 97, 103, 101, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 97, 100, 105, 111, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 114, 101, 115, 101, 116, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 101, 97, 114, 99, 104, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 115, 117, 98, 109, 105, 116, 34, 93, 58, 102, 111, 99, 117, 115, 44, 32, 105, 110, 112, 117, 116, 91, 116, 121, 112, 101, 61, 34, 102, 105, 108, 101, 34, 93, 58, 102, 111, 99, 117, 115, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 102, 105, 108, 101, 45, 117, 112, 108, 111, 97, 100, 45, 98, 117, 116, 116, 111, 110, 32, 123, 32, 111, 117, 116, 108, 105, 110, 101, 45, 111, 102, 102, 115, 101, 116, 58, 32, 48, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 108, 105, 110, 107, 59, 32, 116, 101, 120, 116, 45, 100, 101, 99, 111, 114, 97, 116, 105, 111, 110, 58, 32, 110, 111, 110, 101, 59, 32, 99, 117, 114, 115, 111, 114, 58, 32, 97, 117, 116, 111, 59, 32, 125, 32, 97, 58, 45, 119, 101, 98, 107, 105, 116, 45, 97, 110, 121, 45, 108, 105, 110, 107, 58, 97, 99, 116, 105, 118, 101, 32, 123, 32, 99, 111, 108, 111, 114, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 99, 116, 105, 118, 101, 108, 105, 110, 107, 32, 125, 32, 114, 117, 98, 121, 44, 32, 114, 116, 32, 123, 32, 116, 101, 120, 116, 45, 105, 110, 100, 101, 110, 116, 58, 32, 48, 59, 32, 125, 32, 114, 116, 32, 123, 32, 108, 105, 110, 101, 45, 104, 101, 105, 103, 104, 116, 58, 32, 110, 111, 114, 109, 97, 108, 59, 32, 45, 119, 101, 98, 107, 105, 116, 45, 116, 101, 120, 116, 45, 101, 109, 112, 104, 97, 115, 105, 115, 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 114, 117, 98, 121, 32, 62, 32, 114, 116, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 59, 32, 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 53, 48, 37, 59, 32, 116, 101, 120, 116, 45, 97, 108, 105, 103, 110, 58, 32, 45, 119, 101, 98, 107, 105, 116, 45, 97, 117, 116, 111, 59, 32, 125, 32, 114, 117, 98, 121, 32, 62, 32, 114, 112, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 59, 32, 125, 32, 110, 111, 102, 114, 97, 109, 101, 115, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 110, 111, 110, 101, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, 44, 32, 102, 114, 97, 109, 101, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 102, 114, 97, 109, 101, 115, 101, 116, 32, 123, 32, 98, 111, 114, 100, 101, 114, 45, 99, 111, 108, 111, 114, 58, 32, 105, 110, 104, 101, 114, 105, 116, 32, 125, 32, 105, 102, 114, 97, 109, 101, 32, 123, 32, 98, 111, 114, 100, 101, 114, 58, 32, 50, 112, 120, 32, 105, 110, 115, 101, 116, 32, 125, 32, 100, 101, 116, 97, 105, 108, 115, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 115, 117, 109, 109, 97, 114, 121, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 98, 108, 111, 99, 107, 32, 125, 32, 115, 117, 109, 109, 97, 114, 121, 58, 58, 45, 119, 101, 98, 107, 105, 116, 45, 100, 101, 116, 97, 105, 108, 115, 45, 109, 97, 114, 107, 101, 114, 32, 123, 32, 100, 105, 115, 112, 108, 97, 121, 58, 32, 105, 110, 108, 105, 110, 101, 45, 98, 108, 111, 99, 107, 59, 32, 119, 105, 100, 116, 104, 58, 32, 48, 46, 54, 54, 101, 109, 59, 32, 104, 101, 105, 103, 104, 116, 58, 32, 48, 46, 54, 54, 101, 109, 59, 32, 109, 97, 114, 103, 105, 110, 45, 114, 105, 103, 104, 116, 58, 32, 48, 46, 52, 101, 109, 59, 32, 125, 32, 64, 112, 97, 103, 101, 32, 123, 32, 115, 105, 122, 101, 58, 32, 97, 117, 116, 111, 59, 32, 109, 97, 114, 103, 105, 110, 58, 32, 97, 117, 116, 111, 59, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 48, 112, 120, 59, 32, 98, 111, 114, 100, 101, 114, 45, 119, 105, 100, 116, 104, 58, 32, 48, 112, 120, 59, 32, 125 };这样经过上面2个文件的转化就转化成为C++层次的数组,那么我们就可以在源代码中直接去使用了。
具体使用的过程:
CSSStyleSelector.cpp文件下面
static void loadFullDefaultStyle(UserAgentType type) { if (simpleDefaultStyleSheet) { ASSERT(defaultStyle); delete defaultStyle; simpleDefaultStyleSheet->deref(); defaultStyle = new RuleSet; simpleDefaultStyleSheet = 0; } else { ASSERT(!defaultStyle); defaultStyle = new RuleSet; defaultPrintStyle = new RuleSet; defaultQuirksStyle = new RuleSet; } // Strict-mode rules. String defaultRules ; if(type == DefaultUserAgent) defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet(); else if (type == DvbUserAgent) defaultRules = String(guangxidvbUserAgentStyleSheet, sizeof(guangxidvbUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet(); else if (type == VodUserAgent) defaultRules = String(guangxivodUserAgentStyleSheet, sizeof(guangxivodUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraDefaultStyleSheet(); CSSStyleSheet* defaultSheet = parseUASheet(defaultRules); defaultStyle->addRulesFromSheet(defaultSheet, screenEval()); defaultPrintStyle->addRulesFromSheet(defaultSheet, printEval()); // Quirks-mode rules. String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraQuirksStyleSheet(); CSSStyleSheet* quirksSheet = parseUASheet(quirksRules); defaultQuirksStyle->addRulesFromSheet(quirksSheet, screenEval()); }
loadFullDefaultStyle函数都是在
CSSStyleSelector文件里面,那么我们就可以通过设置setting的开关来完成相应版本的定制工作。
上面的介绍只是简单的思路。
希望对大家有所启发。
有什么问题可以直接发邮件[email protected]或者qq 390012381,大家一块学习,一块进步!