1617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin## -*- coding: utf-8 -*- 2617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<!DOCTYPE html> 3617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<html> 4617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<!-- Copyright (C) 2012 The Android Open Source Project 5617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 6617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin Licensed under the Apache License, Version 2.0 (the "License"); 7617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin you may not use this file except in compliance with the License. 8617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin You may obtain a copy of the License at 9617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 10617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin http://www.apache.org/licenses/LICENSE-2.0 11617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 12617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin Unless required by applicable law or agreed to in writing, software 13617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin distributed under the License is distributed on an "AS IS" BASIS, 14617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin See the License for the specific language governing permissions and 16617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin limitations under the License. 17617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin--> 18617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<head> 196ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin <!-- automatically generated from html.mako. do NOT edit directly --> 20617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <meta charset="utf-8" /> 210477854868fda8f877e21e1e18474e24c14bb8d7Eino-Ville Talvala <title>Android Camera HAL3.4 Properties</title> 22617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <style type="text/css"> 23fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala body { background-color: #f7f7f7; font-family: Roboto, sans-serif;} 24fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala h1 { color: #333333; } 25fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala h2 { color: #333333; } 26fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala a:link { color: #258aaf; text-decoration: none} 27fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala a:hover { color: #459aaf; text-decoration: underline } 28fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala a:visited { color: #154a5f; text-decoration: none} 29fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777} 30fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa } 31fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .entry { background-color: #f0f0f0 } 328eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala .entry_cont { background-color: #f0f0f0 } 33fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .entries_header { background-color: #dddddd; text-align: center} 34fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala 35fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala /* toc style */ 36fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .toc_section_header { font-size:1.3em; } 37fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .toc_kind_header { font-size:1.2em; } 386c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin .toc_deprecated { text-decoration:line-through; } 39617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 40617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* table column sizes */ 41fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } 42fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } 43617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .th_name { width: 20% } 44617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .th_units { width: 10% } 45617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .th_tags { width: 5% } 468eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala .th_details { width: 25% } 47617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .th_type { width: 20% } 48fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .th_description { width: 20% } 49fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .th_range { width: 10% } 50617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin td { font-size: 0.9em; } 51617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 52617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* hide the first thead, we need it there only to enforce column sizes */ 53617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .thead_dummy { visibility: hidden; } 54617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 55617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* Entry flair */ 568eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } 576c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin .entry_name_deprecated { text-decoration:line-through; } 58617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 59617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* Entry type flair */ 60fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;} 61fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" } 62fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala .entry_type_visibility { font-weight: bolder; padding-left:1em} 636c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin .entry_type_synthetic { font-weight: bolder; color: #996600; } 64ca25627fc63255d147286ef9a9624059825eb548Igor Murashkin .entry_type_hwlevel { font-weight: bolder; color: #000066; } 656c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; } 66617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry_type_enum_name { font-family: monospace; font-weight: bolder; } 67617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry_type_enum_notes:before { content:" - " } 68a10351ae06772a2f559bf6ce9fb9587a0649b670Igor Murashkin .entry_type_enum_notes>p:first-child { display:inline; } 69617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry_type_enum_value:before { content:" = " } 70617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry_type_enum_value { font-family: monospace; } 71617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; } 72617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;} 736c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin .entry_range_deprecated { font-weight: bolder; } 74617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 75617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* Entry tags flair */ 76617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin .entry_tags ul { list-style-type: none; } 77617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 788eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala /* Entry details (full docs) flair */ 798eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala .entry_details_header { font-weight: bold; background-color: #dddddd; 808eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; } 818eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala 828eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala /* Entry spacer flair */ 838eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; } 84617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 85617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* TODO: generate abbr element for each tag link? */ 86617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin /* TODO for each x.y.z try to link it to the entry */ 87617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 88617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </style> 896ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin 906ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin <style> 916ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin 926ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin { 936ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin /* broken... 946ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin supposedly there is a bug in chrome that it lays out tables before 956ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin it knows its being printed, so the page-break-* styles are ignored 966ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin */ 976ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin tr { page-break-after: always; page-break-inside: avoid; } 986ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin } 996ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin 1006ad61d460aabf8db9b52e946bb38b8f20717b2a8Igor Murashkin </style> 101617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin</head> 102617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 103617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<%! 104c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin import re 1051dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin from metadata_helpers import md 1061dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin from metadata_helpers import IMAGE_SRC_METADATA 10763c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala from metadata_helpers import filter_tags 108ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala from metadata_helpers import filter_links 1090b080452cca90f215d10d636abfb47701d7518daIgor Murashkin from metadata_helpers import wbr 110c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin 111c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin # insert line breaks after every two \n\n 112c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin def br(text): 113c469f7dc234ec0b901440902cd6e39acaf9b0781Igor Murashkin return re.sub(r"(\r?\n)(\r?\n)", r"\1<br>\2<br>", text) 1141dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin 11563c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala # Convert node name "x.y.z" of kind w to an HTML anchor of form 11663c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala # <a href="#w_x.y.z">x.y.z</a> 11763c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala def html_anchor(node): 11863c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala return '<a href="#%s_%s">%s</a>' % (node.kind, node.name, node.name) 11963c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala 120ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala # Convert target "xxx.yyy#zzz" to a HTML reference to Android public developer 121ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala # docs with link name from shortname. 122ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala def html_link(target, shortname): 123ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala if shortname == '': 124ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala lastdot = target.rfind('.') 125ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala if lastdot == -1: 126ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala shortname = target 127ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala else: 128ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala shortname = target[lastdot + 1:] 129ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala 130ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala target = target.replace('.','/') 131ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala if target.find('#') != -1: 132ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala target = target.replace('#','.html#') 133ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala else: 134ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala target = target + '.html' 135ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala 136ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala return '<a href="https://developer.android.com/reference/%s">%s</a>' % (target, shortname) 137ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala 1381dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin # Render as markdown, and do HTML-doc-specific rewrites 1391dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin def md_html(text): 1401dd4ecb0ea0589610b3616459b707c2898889153Igor Murashkin return md(text, IMAGE_SRC_METADATA) 141a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala 14263c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala # linkify tag names such as "android.x.y.z" into html anchors 14363c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala def linkify_tags(metadata): 14463c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala def linkify_filter(text): 145ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala tagged_text = filter_tags(text, metadata, html_anchor) 146ddda2bb917a1eb725c85d8c2b61bff2abf568a95Eino-Ville Talvala return filter_links(tagged_text, html_link) 14763c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala return linkify_filter 14863c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala 149a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala # Number of rows an entry will span 150a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala def entry_cols(prop): 151a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala cols = 1 152a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala if prop.details: cols = cols + 2 153a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala if prop.hal_details: cols = cols + 2 154a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala return cols 155617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin%> 156617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 157617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<body> 15842165c20025783c9db8a9362102c4b31055db41fEino-Ville Talvala <h1>Android Camera HAL3.2 Properties</h1> 159fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala\ 160fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala<%def name="insert_toc_body(node)"> 161fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % for nested in node.namespaces: 162fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala${ insert_toc_body(nested)} 163fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % endfor 164fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % for entry in node.merged_entries: 1656c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin <li 1666c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % if entry.deprecated: 1676c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin class="toc_deprecated" 1686c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % endif 1696c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin >${html_anchor(entry)}</li> 170fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % endfor 171fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala</%def> 172617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 173617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <h2>Table of Contents</h2> 174617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul class="toc"> 175fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <li><a href="#tag_index" class="toc_section_header">Tags</a></li> 176fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala% for root in metadata.outer_namespaces: 177fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % for section in root.sections: 178fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <li> 179fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <span class="toc_section_header"><a href="#section_${section.name}">${section.name}</a></span> 180fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <ul class="toc_section"> 181fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % for kind in section.merged_kinds: # dynamic,static,controls 182fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <li> 183fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <span class="toc_kind_header">${kind.name}</span> 184fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <ul class="toc_section">\ 185fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala${ insert_toc_body(kind)}\ 186fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala </ul> 187fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala </li> 188617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 189fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala </ul> <!-- toc_section --> 190fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala </li> 191fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala % endfor 192fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala% endfor 193617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 194617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 195fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala 196617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <h1>Properties</h1> 197617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <table class="properties"> 198617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 199617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <thead class="thead_dummy"> 200617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <tr> 201617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_name">Property Name</th> 202617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_type">Type</th> 203617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_description">Description</th> 204617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_units">Units</th> 205617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_range">Range</th> 206617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_tags">Tags</th> 207617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </tr> 208617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </thead> <!-- so that the first occurrence of thead is not 209617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin above the first occurrence of tr --> 210617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin% for root in metadata.outer_namespaces: 211617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<!-- <namespace name="${root.name}"> --> 212617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for section in root.sections: 2138eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <tr><td colspan="6" id="section_${section.name}" class="section">${section.name}</td></tr> 214617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 215617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if section.description is not None: 216617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <tr class="description"><td>${section.description}</td></tr> 217617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 218617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 2195804a48bb15d245fb06f72cf6d64369f151fcc28Igor Murashkin % for kind in section.merged_kinds: # dynamic,static,controls 2208eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <tr><td colspan="6" class="kind">${kind.name}</td></tr> 221617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 222fcef4c2eac3bc623f278a5b064ef1aef267870aaEino-Ville Talvala <thead class="entries_header"> 223617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <tr> 224617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_name">Property Name</th> 225617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_type">Type</th> 226617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_description">Description</th> 227617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_units">Units</th> 228617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_range">Range</th> 229617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <th class="th_tags">Tags</th> 230617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </tr> 231617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </thead> 232617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 233617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <tbody> 234617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 235617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <%def name="insert_body(node)"> 236617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for nested in node.namespaces: 237617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${insert_namespace(nested)} 238617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 239617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 240617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for entry in node.merged_entries: 241617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${insert_entry(entry)} 242617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 243617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </%def> 244617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 245617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <%def name="insert_namespace(namespace)"> 246617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${insert_body(namespace)} 247617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </%def> 248617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 249617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <%def name="insert_entry(prop)"> 250617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <tr class="entry" id="${prop.kind}_${prop.name}"> 2516c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin <td class="entry_name 2526c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % if prop.deprecated: 2536c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin entry_name_deprecated 2546c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % endif 2556c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin " rowspan="${entry_cols(prop)}"> 256a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala ${prop.name | wbr} 257a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala </td> 258617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <td class="entry_type"> 259b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin % if prop.enum: 260b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin <span class="entry_type_name entry_type_name_enum">${prop.type}</span> 261b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin % else: 262b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin <span class="entry_type_name">${prop.type}</span> 263b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin % endif 264617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.container is not None: 265617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <span class="entry_type_container">x</span> 266617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 267617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 268617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.container == 'array': 269617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <span class="entry_type_array"> 270617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${" x ".join(prop.container_sizes)} 271617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </span> 272617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % elif prop.container == 'tuple': 273617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul class="entry_type_tuple"> 274617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for val in prop.tuple_values: 275617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <li>${val}</li> 276617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 277617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 278617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 279b8dc88148bca2e5a267c2ff39aff94b98b00ad6dIgor Murashkin <span class="entry_type_visibility"> [${prop.applied_visibility}${" as %s" %prop.typedef.name if prop.typedef else ""}]</span> 2806c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin 2816c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % if prop.synthetic: 2826c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin <span class="entry_type_synthetic">[synthetic] </span> 2836c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % endif 2846c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin 285ca25627fc63255d147286ef9a9624059825eb548Igor Murashkin % if prop.hwlevel: 286ca25627fc63255d147286ef9a9624059825eb548Igor Murashkin <span class="entry_type_hwlevel">[${prop.hwlevel}] </span> 287ca25627fc63255d147286ef9a9624059825eb548Igor Murashkin % endif 288ca25627fc63255d147286ef9a9624059825eb548Igor Murashkin 2896c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % if prop.deprecated: 2906c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin <span class="entry_type_deprecated">[deprecated] </span> 2916c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % endif 2926c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin 293617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.type_notes is not None: 294617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <div class="entry_type_notes">${prop.type_notes | wbr}</div> 295617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 296617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 297b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin % if prop.enum: 298617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul class="entry_type_enum"> 299617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for value in prop.enum.values: 300617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <li> 301617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <span class="entry_type_enum_name">${value.name}</span> 3027defc683c4e99cfef83d8352d20e619ad1018e9dZhijun He % if value.deprecated: 3037defc683c4e99cfef83d8352d20e619ad1018e9dZhijun He <span class="entry_type_enum_deprecated">[deprecated]</span> 3047defc683c4e99cfef83d8352d20e619ad1018e9dZhijun He % endif: 305617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if value.optional: 306b432916043290beb246054a77f8978b3136f4315Eino-Ville Talvala <span class="entry_type_enum_optional">[optional]</span> 307b432916043290beb246054a77f8978b3136f4315Eino-Ville Talvala % endif: 308b432916043290beb246054a77f8978b3136f4315Eino-Ville Talvala % if value.hidden: 3097defc683c4e99cfef83d8352d20e619ad1018e9dZhijun He <span class="entry_type_enum_hidden">[hidden]</span> 310617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif: 311617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if value.id is not None: 312617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <span class="entry_type_enum_value">${value.id}</span> 313617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 314617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if value.notes is not None: 315a10351ae06772a2f559bf6ce9fb9587a0649b670Igor Murashkin <span class="entry_type_enum_notes">${value.notes | md_html, linkify_tags(metadata), wbr}</span> 316617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 317617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </li> 318617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 319617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 320617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 321617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 322617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </td> <!-- entry_type --> 323617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 324617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <td class="entry_description"> 325617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.description is not None: 32663c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala ${prop.description | md_html, linkify_tags(metadata), wbr} 327617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 328617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </td> 329617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 330617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <td class="entry_units"> 331617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.units is not None: 332617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${prop.units | wbr} 333617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 334617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </td> 335617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 336617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <td class="entry_range"> 3376c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % if prop.deprecated: 3386c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p> 3396c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin % endif 340617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % if prop.range is not None: 34163c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala ${prop.range | md_html, linkify_tags(metadata), wbr} 342617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 343617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </td> 344617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 345617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <td class="entry_tags"> 346baacf9a9f032ca392b37b4982eafa43b0a8d4b52Igor Murashkin % if next(prop.tags, None): 347617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul class="entry_tags"> 348617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for tag in prop.tags: 349617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <li><a href="#tag_${tag.id}">${tag.id}</a></li> 350617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 351617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 352617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endif 353617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </td> 354617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 3558eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala </tr> 356a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala % if prop.details is not None: 3578eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <tr class="entries_header"> 3588eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <th class="th_details" colspan="5">Details</th> 3598eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala </tr> 3608eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <tr class="entry_cont"> 3618eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <td class="entry_details" colspan="5"> 36263c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala ${prop.details | md_html, linkify_tags(metadata), wbr} 3638eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala </td> 3648eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala </tr> 3658eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala % endif 366a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala 367a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala % if prop.hal_details is not None: 368a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala <tr class="entries_header"> 369a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala <th class="th_details" colspan="5">HAL Implementation Details</th> 370a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala </tr> 371a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala <tr class="entry_cont"> 372a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala <td class="entry_details" colspan="5"> 37363c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala ${prop.hal_details | md_html, linkify_tags(metadata), wbr} 374a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala </td> 375a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala </tr> 376a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala % endif 377a5b73c27ddbf032d1b3b4f628ac8fc0846c0ed2cEino-Ville Talvala 3788eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> 3798eb7005a84d714009bf5868d65f412da407d30b2Eino-Ville Talvala <!-- end of entry --> 380617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </%def> 381617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 382617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin ${insert_body(kind)} 383617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 384617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <!-- end of kind --> 385617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </tbody> 386617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor # for each kind 387617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 388617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <!-- end of section --> 389617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 390617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin<!-- </namespace> --> 391617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin% endfor 392617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </table> 393617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 394617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <div class="tags" id="tag_index"> 395617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <h2>Tags</h2> 396617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul> 397617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for tag in metadata.tags: 398617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <li id="tag_${tag.id}">${tag.id} - ${tag.description} 399617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin <ul class="tags_entries"> 400617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % for prop in tag.entries: 40163c0fb27d923a32d9a398471ad318bfe84befbebEino-Ville Talvala <li>${html_anchor(prop)} (${prop.kind})</li> 402617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 403617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 404617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </li> <!-- tag_${tag.id} --> 405617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin % endfor 406617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </ul> 407617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin </div> 408617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 409617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin [ <a href="#">top</a> ] 410617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin 411617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin</body> 412617da1675f9ea7b6ea33d9e6f47e0a07379f14b1Igor Murashkin</html> 413