mirror of
https://github.com/zhwei820/learn.lianglianglee.com.git
synced 2025-09-25 04:36:41 +08:00
623 lines
20 KiB
HTML
623 lines
20 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<!-- saved from url=(0046)https://kaiiiz.github.io/hexo-theme-book-demo/ -->
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
|
||
<head>
|
||
|
||
<head>
|
||
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
|
||
|
||
<link rel="icon" href="/static/favicon.png">
|
||
|
||
<title>00 OKR 工作法:组织目标管理的神器.md.html</title>
|
||
|
||
<!-- Spectre.css framework -->
|
||
|
||
<link rel="stylesheet" href="/static/index.css">
|
||
|
||
<!-- theme css & js -->
|
||
|
||
<meta name="generator" content="Hexo 4.2.0">
|
||
|
||
</head>
|
||
|
||
|
||
|
||
<body>
|
||
|
||
|
||
|
||
<div class="book-container">
|
||
|
||
<div class="book-sidebar">
|
||
|
||
<div class="book-brand">
|
||
|
||
<a href="/">
|
||
|
||
<img src="/static/favicon.png">
|
||
|
||
<span>技术文章摘抄</span>
|
||
|
||
</a>
|
||
|
||
</div>
|
||
|
||
<div class="book-menu uncollapsible">
|
||
|
||
<ul class="uncollapsible">
|
||
|
||
<li><a href="/" class="current-tab">首页</a></li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
<ul class="uncollapsible">
|
||
|
||
<li><a href="../">上一级</a></li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
<ul class="uncollapsible">
|
||
|
||
<li>
|
||
|
||
|
||
|
||
<a class="current-tab" href="/专栏/OKR组织敏捷目标和绩效管理-完/00 OKR 工作法:组织目标管理的神器.md.html">00 OKR 工作法:组织目标管理的神器.md.html</a>
|
||
|
||
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/01 目标管理发展:OKR 之前,大家都在用什么管理组织目标?.md.html">01 目标管理发展:OKR 之前,大家都在用什么管理组织目标?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/02 OKR 价值:为什么互联网公司都在用 OKR?.md.html">02 OKR 价值:为什么互联网公司都在用 OKR?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/03 OKR 与战略:OKR 如何解决组织增长问题?.md.html">03 OKR 与战略:OKR 如何解决组织增长问题?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/04 OKR 生成:各层级的 OKR 要遵循什么规律?.md.html">04 OKR 生成:各层级的 OKR 要遵循什么规律?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/05 O:什么样的 O 得领导赏识?.md.html">05 O:什么样的 O 得领导赏识?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/06 KR :写好 KR 的万能公式.md.html">06 KR :写好 KR 的万能公式.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/07 案例实战:教你写出高质量的 OKR.md.html">07 案例实战:教你写出高质量的 OKR.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/08 流程:你应该这样制定、管理 OKR!.md.html">08 流程:你应该这样制定、管理 OKR!.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/09 OKR 与 KPI 的区别和联系.md.html">09 OKR 与 KPI 的区别和联系.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/10 激励:如何用 OKR 激活你的团队?.md.html">10 激励:如何用 OKR 激活你的团队?.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/11 文化:OKR 文化的塑造和沉淀.md.html">11 文化:OKR 文化的塑造和沉淀.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/12 变革:OKR 转型难点及解决方案.md.html">12 变革:OKR 转型难点及解决方案.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/13 加餐 OKR 填写模板及案例.md.html">13 加餐 OKR 填写模板及案例.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
<li>
|
||
|
||
|
||
|
||
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/结束语 OKR 工作法:制胜互联网下半场.md.html">结束语 OKR 工作法:制胜互联网下半场.md.html</a>
|
||
|
||
|
||
|
||
</li>
|
||
|
||
</ul>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<div class="sidebar-toggle" onclick="sidebar_toggle()" onmouseover="add_inner()" onmouseleave="remove_inner()">
|
||
|
||
<div class="sidebar-toggle-inner"></div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<script>
|
||
|
||
function add_inner() {
|
||
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
|
||
inner.classList.add('show')
|
||
|
||
}
|
||
|
||
|
||
|
||
function remove_inner() {
|
||
|
||
let inner = document.querySelector('.sidebar-toggle-inner')
|
||
|
||
inner.classList.remove('show')
|
||
|
||
}
|
||
|
||
|
||
|
||
function sidebar_toggle() {
|
||
|
||
let sidebar_toggle = document.querySelector('.sidebar-toggle')
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let content = document.querySelector('.off-canvas-content')
|
||
|
||
if (sidebar_toggle.classList.contains('extend')) { // show
|
||
|
||
sidebar_toggle.classList.remove('extend')
|
||
|
||
sidebar.classList.remove('hide')
|
||
|
||
content.classList.remove('extend')
|
||
|
||
} else { // hide
|
||
|
||
sidebar_toggle.classList.add('extend')
|
||
|
||
sidebar.classList.add('hide')
|
||
|
||
content.classList.add('extend')
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
function open_sidebar() {
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
|
||
sidebar.classList.add('show')
|
||
|
||
overlay.classList.add('show')
|
||
|
||
}
|
||
|
||
function hide_canvas() {
|
||
|
||
let sidebar = document.querySelector('.book-sidebar')
|
||
|
||
let overlay = document.querySelector('.off-canvas-overlay')
|
||
|
||
sidebar.classList.remove('show')
|
||
|
||
overlay.classList.remove('show')
|
||
|
||
}
|
||
|
||
|
||
|
||
</script>
|
||
|
||
|
||
|
||
<div class="off-canvas-content">
|
||
|
||
<div class="columns">
|
||
|
||
<div class="column col-12 col-lg-12">
|
||
|
||
<div class="book-navbar">
|
||
|
||
<!-- For Responsive Layout -->
|
||
|
||
<header class="navbar">
|
||
|
||
<section class="navbar-section">
|
||
|
||
<a onclick="open_sidebar()">
|
||
|
||
<i class="icon icon-menu"></i>
|
||
|
||
</a>
|
||
|
||
</section>
|
||
|
||
</header>
|
||
|
||
</div>
|
||
|
||
<div class="book-content" style="max-width: 960px; margin: 0 auto;
|
||
|
||
overflow-x: auto;
|
||
|
||
overflow-y: hidden;">
|
||
|
||
<div class="book-post">
|
||
|
||
<p id="tip" align="center"></p>
|
||
|
||
<div><h1>00 OKR 工作法:组织目标管理的神器</h1>
|
||
|
||
<p>你好,我是何留留,京东平台生态部敏捷转型负责人,很高兴能在这里和你分享我在京东落地 OKR 的实战经验。</p>
|
||
|
||
<p>说起 OKR,相信你并不陌生,它起源于英特尔,发扬光大于谷歌。国外的领英、亚马逊、Dropbox、Zynga 等成熟和创业公司都在用;国内的华为、BAT、字节跳动、京东等互联网和高科技企业也纷纷在推 OKR,那么,OKR 为什么如此受欢迎呢?</p>
|
||
|
||
<h3>用 OKR 迎战互联网下半场</h3>
|
||
|
||
<p>随着流量红利的消退,增长越来越乏力,互联网进入下半场后,有越来越多的组织管理问题被放大。比如,我们经常听到组织中不同角色的吐槽。</p>
|
||
|
||
<ul>
|
||
|
||
<li>员工:“感觉自己就是个干活的,根本不知道大部门的方向和做这些事的价值是什么。”</li>
|
||
|
||
<li>Team Lead: “团队没什么活力,执行力不行。”</li>
|
||
|
||
<li>部门负责人:“计划总赶不上变化,KPI 定了也白定。”</li>
|
||
|
||
<li>决策层:“战略定了,时间过了大半,还没什么结果。”</li>
|
||
|
||
</ul>
|
||
|
||
<p>诸如此类的问题,在 OKR 应用后都得到了有效解决。一位经理人曾跟我说,团队中竟然有人在用 OKR 自发做着老板没有要求的事情,感觉团队更有干劲儿了;也有团队成员找到我说,用了 OKR 感觉自己工作更加有意义,知道组织中的战略是什么,也知道自己所做的工作竟然可以支撑组织战略的实现,非常开心。</p>
|
||
|
||
<p>OKR 就是有着这样的魔力,为什么呢?从本质上来说,<strong>OKR 是一套目标管理方法论,是一个包括了从目标的制定,目标实现过程的管理,再到目标完成的效果评价的系统工程</strong>。这个闭环的目标管理过程几乎涵盖了工作中的方方面面,覆盖到了组织中各个层级的人。也就是说,用好 OKR 能给工作的各个环节以及各类人员都能带来不同的价值。</p>
|
||
|
||
<p>而在互联网的下半场,这把组织目标管理的神器能帮助我们解决的问题还有更多。</p>
|
||
|
||
<h3>OKR 这把神器还“神”在哪些地方?</h3>
|
||
|
||
<p>我们大部分人都是在组织中工作和成长,即使你去创业,本身也是在创立一个组织,<strong>而一个组织所能成立的理由就是去实现目标</strong>。所以管理好目标,对于组织发展和在组织中成长的人来说都非常重要。</p>
|
||
|
||
<p>此外,每个组织都面临内外部环境的挑战,一方面是如何灵活应对不断变化的外部经营环境,另一方面是如何建设好一个具备竞争力的内在组织。学好用好 OKR,这些问题都能迎刃而解。</p>
|
||
|
||
<h4>(1)解决“唯 KPI 论”难题,灵活获得组织绩效</h4>
|
||
|
||
<p>以往“唯 KPI 论”,只看结果数字的做法势必带来过程管理问题,导致文化差,激励不公平,领导力丧失。更重要的是,KPI 通常只用来管理既定的计划,忽略了外部经营环境的不确定性。试想,如果在计划赶不上变化时,你还紧盯着既定的 KPI,势必南辕北辙。</p>
|
||
|
||
<p>OKR 方法则通过建立一系列跟踪和回顾机制,以及对目标的持续检视和调整活动,能够灵活应对 VUCA 的经营环境,取得高质量的组织绩效。</p>
|
||
|
||
<h4>(2)解决组织增长问题,保证组织目标落地执行</h4>
|
||
|
||
<p>定战略,核心就是要能解决组织增长的问题,OKR 通过更加结构化的方式帮助我们进行战略管理,承载了组织战略所要的增长。</p>
|
||
|
||
<p>O 就是战略方向,KR 则是增长的量化指标。而 OKR 通过业务型 OKR + 非业务型 OKR 的组合,不仅关注财务和用户型的业务增长,也关注过程效率和能力提升等非业务型增长。所以,我认为 OKR 能够保障组织全方位增长,获得业务成功的同时,让组织更加健康发展。</p>
|
||
|
||
<p>此外,OKR 的制定遵循着基本的约束和生成规律:</p>
|
||
|
||
<ul>
|
||
|
||
<li>通过自上而下对齐 O 把握方向,让组织中不同层级生成的目标都是一致的,形成合力;</li>
|
||
|
||
<li>通过 KR 对目标具体实现路径的讨论和共识,拆解和分工,有力地支撑了目标的完成;</li>
|
||
|
||
<li>通过对个人 OKR 生成的制定分类,让每个人的工作目标都能聚焦在与上级目标对齐上、与外部支持目标对齐上,保证了每个人的目标都是与组织目标相关的。</li>
|
||
|
||
</ul>
|
||
|
||
<p>所以 OKR 结构化的管理战略,有效解决了组织增长的问题,并通过 OKR 的层层关联,互相支撑,有力确保了组织目标的落地实现。</p>
|
||
|
||
<h4>(3)提升组织文化建设和领导力,激活组织中的人</h4>
|
||
|
||
<p>OKR 持续的协同制定过程,以及团队 OKR 的通晒机制,有助于团队明确目标,强化信任关系,为组织带来协作和诚信的优秀文化。此外,OKR “制定—过程检视和调整—闭环评估”的工作机制,更是拉动了管理者和被管理者持续对目标制定和实现过程的沟通、确认和共识,建立了上下级良好的工作关系。所以我认为,用好 OKR 可以提升组织文化建设和领导力。</p>
|
||
|
||
<p>在个体层面,21 世纪是知识工作者时代,激活知识工作者,让他们更有动力,核心就是让他们的工作能够更有目标感、要有自主性、要能持续成长。OKR 首先就是从目标出发来思考工作的起点,鼓励创意和自主,改变了传统的“命令+控制”的管理方式,甚至激励大家自己定出想做的方向,最后结合组织目标和自己自主发起目标的实际完成情况来综合评价绩效,进行晋升和认可。这样一来,组织中的“人”开始被激活。</p>
|
||
|
||
<p>至此,相信你已经感受到 OKR 工作法的魅力。而<strong>这把神器想要在组织目标管理中有效且持续地发挥好“神力”,我们不仅需要对于理论的学习和理解,更需要实践的指导</strong>。</p>
|
||
|
||
<p>不少组织落地 OKR 却落成形式化,是因为缺少了对 OKR 全局视角的理解和实践,比如仅仅在团队维度进行应用,忽略了组织绩效的获得是一个整体;或者是引入了新的 OKR 目标和绩效管理方法后,组织中的流程、激励和文化却没有调整和升级,没有为 OKR 落地营造匹配的组织环境。久而久之,OKR 形式化就不可避免。</p>
|
||
|
||
<p>我从 2019 年中开始,有幸全程参与了京东引入和推动 OKR 落地的过程,并在京东零售、京东健康、京东物流三个子集团辅导过 OKR 转型,见证了 OKR 给组织带来的巨大价值。我特别期望能把我在京东落地 OKR 的这些干货、实践和总结,毫无保留地分享给你,希望能帮你更加有效地理解和落地 OKR。</p>
|
||
|
||
<h3>我是如何设计这门课程的?</h3>
|
||
|
||
<p>在这个专栏中,我依托<strong>京东和行业上多个 OKR 实战案例(字节、百度、快手等)</strong>,帮你系统化理解 OKR 方法的运用,不仅有理论也有实操,不仅有案例也有提炼的方法论。</p>
|
||
|
||
<p><strong>模块一,全局:OKR工作法</strong>。我将介绍 OKR 与其他目标管理方法的差异和联系,并从业务、经营、组织管理和人四个维度,全盘解读 OKR 火起来的真正原因,再通过老牌互联网公司百度李彦宏的 OKR 案例,帮你加深理解 OKR 与组织战略的关系,最后带你掌握组织中各个层级和个人 OKR 的生成规律。</p>
|
||
|
||
<p>当你理清了 OKR 的发展背景、运用的特殊意义、与战略的映射关系,以及组织中各个层级的生成规律,也就理清了 OKR 工作法是如何在组织目标管理中发挥整体作用的。</p>
|
||
|
||
<p><strong>模块二,实操:O 和 KR 怎么写</strong>。实际写 OKR 时,相信你遇到过很多实操的问题,比如什么样的 O 才是有价值的?O 写了改、改了删,为什么总感觉没法一步到位写清楚呢?KR 需要怎么量化?到底写几个 O、 几个 KR 合适?</p>
|
||
|
||
<p>以上这些问题,我都会进行详细说明,并给你一个万能公式,助你下笔如有神。</p>
|
||
|
||
<p><strong>模块三,落地:OKR 的流程和变革管理</strong>。这部分我将教会你一套建立 OKR 的流程机制,告别“OKR 根本就落不了地,用着用着就变成 KPI”的担心。</p>
|
||
|
||
<p>我会结合京东的案例,介绍 OKR 的设定和管理流程中核心环节的有效实践,保证你学完马上就能用,还会通过对比 KPI 和 OKR 的异同,帮你彻底搞懂这两者的区别和联系。</p>
|
||
|
||
<p>此外,OKR 作为一种新的工作方式,落地过程会涉及一系列变革,我也会向你介绍组织中应该如何升级激励和文化来匹配 OKR 的落地转型。</p>
|
||
|
||
<p>最后,推动 OKR 变革的过程一定还会遇到很多阻力和难点,我会为你提供相应的解决方案,帮你扫清落地障碍。</p>
|
||
|
||
<h3>适合人群</h3>
|
||
|
||
<ul>
|
||
|
||
<li>如果你的组织即将导入 OKR,你肯定特别焦虑,OKR 到底是什么,到底该咋做,有没有一个相对完整成体系的 OKR 课程让我来学习参考一下?</li>
|
||
|
||
<li>如果你是一名经理人,肯定特别期望激活所带团队中的每个人,提高团队的执行力,领导团队取得业绩突破和创新。</li>
|
||
|
||
<li>如果你是部门负责人,一定特别期望部门业务能获得持续地增长,并想找到更好的方法来聚焦增长方向,设立增长指标,也一定特别在意战略目标确定后,如何才能保证落地不偏移。</li>
|
||
|
||
<li>如果你是负责绩效的 HR 同学,当 KPI 的绩效管理方法正变得越来越形式化和无效,你肯定特别期望能找到取得更好绩效的新的目标管理方法。</li>
|
||
|
||
</ul>
|
||
|
||
<p>以上这些大家所面临的问题和期待,我都有详细的案例讲解和系统化说明,相信你一定会茅塞顿开,对照着我讲的 OKR 工作法去落地,一定会解决你的困惑,收获满满。</p>
|
||
|
||
<h3>讲师寄语</h3>
|
||
|
||
<p>OKR 正在国内外如火如荼的发展,将来势必成为每个组织都会使用的新的目标管理方法。此外,OKR 不仅能用在工作上,甚至也能用在你自己生活和学习上,比如给自己定个学习 OKR 的OKR,定个锻炼身体的 OKR,定个旅游的 OKR,你也可以通过 OKR 来持续自我管理好自己的生活和学习,实现更美好的人生价值。</p>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div>
|
||
|
||
|
||
|
||
<div style="float: right">
|
||
|
||
<a href="/专栏/OKR组织敏捷目标和绩效管理-完/01 目标管理发展:OKR 之前,大家都在用什么管理组织目标?.md.html">下一页</a>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
|
||
|
||
<a class="off-canvas-overlay" onclick="hide_canvas()"></a>
|
||
|
||
</div>
|
||
|
||
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v652eace1692a40cfa3763df669d7439c1639079717194" integrity="sha512-Gi7xpJR8tSkrpF7aordPZQlW2DLtzUlZcumS8dMQjwDHEnw9I7ZLyiOj/6tZStRBGtGgN6ceN6cMH8z7etPGlw==" data-cf-beacon='{"rayId":"7099738ac8813d60","version":"2021.12.0","r":1,"token":"1f5d475227ce4f0089a7cff1ab17c0f5","si":100}' crossorigin="anonymous"></script>
|
||
|
||
</body>
|
||
|
||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||
|
||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-NPSEEVD756"></script>
|
||
|
||
<script>
|
||
|
||
window.dataLayer = window.dataLayer || [];
|
||
|
||
|
||
|
||
function gtag() {
|
||
|
||
dataLayer.push(arguments);
|
||
|
||
}
|
||
|
||
|
||
|
||
gtag('js', new Date());
|
||
|
||
gtag('config', 'G-NPSEEVD756');
|
||
|
||
var path = window.location.pathname
|
||
|
||
var cookie = getCookie("lastPath");
|
||
|
||
console.log(path)
|
||
|
||
if (path.replace("/", "") === "") {
|
||
|
||
if (cookie.replace("/", "") !== "") {
|
||
|
||
console.log(cookie)
|
||
|
||
document.getElementById("tip").innerHTML = "<a href='" + cookie + "'>跳转到上次进度</a>"
|
||
|
||
}
|
||
|
||
} else {
|
||
|
||
setCookie("lastPath", path)
|
||
|
||
}
|
||
|
||
|
||
|
||
function setCookie(cname, cvalue) {
|
||
|
||
var d = new Date();
|
||
|
||
d.setTime(d.getTime() + (180 * 24 * 60 * 60 * 1000));
|
||
|
||
var expires = "expires=" + d.toGMTString();
|
||
|
||
document.cookie = cname + "=" + cvalue + "; " + expires + ";path = /";
|
||
|
||
}
|
||
|
||
|
||
|
||
function getCookie(cname) {
|
||
|
||
var name = cname + "=";
|
||
|
||
var ca = document.cookie.split(';');
|
||
|
||
for (var i = 0; i < ca.length; i++) {
|
||
|
||
var c = ca[i].trim();
|
||
|
||
if (c.indexOf(name) === 0) return c.substring(name.length, c.length);
|
||
|
||
}
|
||
|
||
return "";
|
||
|
||
}
|
||
|
||
|
||
|
||
</script>
|
||
|
||
|
||
|
||
</html>
|
||
|