From 3d763374fe584903603ff814df59eb4acade4b6c Mon Sep 17 00:00:00 2001 From: wangrunji0408 Date: Mon, 27 Jul 2020 20:04:56 +0000 Subject: [PATCH] deploy: 87123f4801394669a0205218cc32345afeed1329 --- ch01-01-kernel-object.html | 48 ++++++++++++++++++++++++++++------ img/ch01-01-kernel-object.png | Bin 0 -> 24499 bytes print.html | 48 ++++++++++++++++++++++++++++------ searchindex.js | 2 +- searchindex.json | 2 +- 5 files changed, 82 insertions(+), 18 deletions(-) create mode 100644 img/ch01-01-kernel-object.png diff --git a/ch01-01-kernel-object.html b/ch01-01-kernel-object.html index ad0b244..4894309 100644 --- a/ch01-01-kernel-object.html +++ b/ch01-01-kernel-object.html @@ -157,9 +157,40 @@

初识内核对象

内核对象简介

-

TODO

-

详细内容可参考 Fuchsia 官方文档:内核对象

-

在这一节中我们将在 Rust 中实现内核对象的概念。

+

在动手编写我们的代码之前,需要首先进行调研和学习,对目标对象有一个全面系统的了解。 +而了解一个项目设计的最好方式就是阅读官方提供的手册和文档。

+

让我们先来阅读一下 Fuchsia 官方文档:内核对象。这个链接是社区翻译的中文版,已经有些年头了。如果读者能够科学上网,推荐直接阅读官方英文版

+

通过阅读文档,我们了解到与内核对象相关的三个重要概念:对象(Object),句柄(Handle),权限(Rights)。它们在 Zircon 内核中的角色和关系如下图所示:

+

+

简单来说:

+ +

此外在内核对象的文档中,还列举了一些常用对象。点击链接进去就能查看到这个对象的具体描述,在页面最下方还列举了与这个对象相关的全部系统调用。 +进一步查看系统调用的 API 定义,以及它的行为描述,我们就能更深入地了解用户程序操作内核对象的一些细节:

+ +

我们还发现,有一类 Object 系统调用是对所有内核对象都适用的。 +这表明所有内核对象都有一些公共属性,例如 ID、名称等等。每一种内核对象也会有自己特有的属性。

+

其中一些 Object 系统调用和信号相关。Zircon 每个内核对象都附带有 32 个 信号(Signals),它们代表了不同类型的事件。 +与传统 Unix 系统的信号不同,它不能异步地打断用户程序运行,而只能由用户程序主动地阻塞等待在某个对象的某些信号上面。 +信号是 Zircon 内核中很重要的机制,不过这部分在前期不会涉及,我们留到第五章再具体实现。

+

以上我们了解了 Zircon 内核对象的相关概念和使用方式。接下来在这一节中,我们将用 Rust 实现内核对象的基本框架,以方便后续快速实现各种具体类型的内核对象。 +从传统面向对象语言的视角看,我们只是在实现一个基类。但由于 Rust 语言模型的限制,这件事情需要用到一些特殊的技巧。

建立项目

首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可:

$ curl https://sh.rustup.rs -sSf | sh
@@ -323,10 +354,11 @@ DummyObject *dummy = dynamic_cast<DummyObject*>(base);
 

但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下:

-
use core::any::Any;
-use alloc::sync::Arc;
-
-trait KernelObject: Any + Send + Sync {}
+
use std::any::Any;
+use std::sync::Arc;
+fn main() {}
+
+trait KernelObject: Any + Send + Sync {}
 fn downcast_v1<T: KernelObject>(object: Arc<dyn KernelObject>) -> Arc<T> {
     object.downcast::<T>().unwrap()
 }
@@ -334,7 +366,7 @@ fn downcast_v2<T: KernelObject>(object: Arc<dyn KernelObject>) ->
     let object: Arc<dyn Any + Send + Sync + 'static> = object;
     object.downcast::<T>().unwrap()
 }
-
+

当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库:

[dependencies]
 downcast-rs = { version = "1.2.0", default-features = false }
diff --git a/img/ch01-01-kernel-object.png b/img/ch01-01-kernel-object.png
new file mode 100644
index 0000000000000000000000000000000000000000..9c8cdf66d08c97dfe71983b9f1b70f4c29266bfc
GIT binary patch
literal 24499
zcmcG#bx>SE*FK1AuwX%g2KV3|+}$NeaF@Z|-7U!A?iSpF`=G(y27)uVE_vUte%~Kk
zwSR2wPIXmJcb`6e&Uv15=iZ*%k;;lvXefjzP*6~4GScFzP*Ct7C@2_LB-r!
z_r{B|yt>5O+uQ4YhF#9_^4~eRe8BstensHw$!_UPyW_6})0%Lr`sm!rUpp6vUF#FW
zJM(Sh(T$4(eV`c2oYl;+dXwBS%@S{=LO10?7neF8=cc&l*B7;7FW-*L*Vos-*XOWs
zaOtD93I(o@&rjD6x7G7KUTx{lO-Zr+C4Y`KY_q`#h)5B=1;{8LIJh`kS4Kix{b#_d
z_fL;H<^GgkC_!`amzS6F`7VS+gtw3Pn`Z~A#qPMcxM#OlDZ^Fnttsf}9|F6weVybI
z6B8L28CC{^`?sb)e#F$%)4SjKd3=0aKHI5V>TVK0UpUn|Gc&UQo(}z;ceRqt%En?`
z6~d?Hdv$-~k6DKVrWe_n|U0n@2Shj17Rm}ITTj;+$)
zCJdG`!*Ajj89Sjx>218yl07k_c)C_xJZhwtv#l
z(qxZU>|Y*h`L-L!%slL-o2RVFi!-6&kmOWk+}_?E9v%*D&qenY`T6;ERyb+tYN~0d
z;*c;NOhuEiNSvOYT4(Ol3+eCe?fv=lr>Lk%#2_XsD@(#OEh;L?+S&XQB}aF6cUxPV
zO|_STLkSiEb$NNYh{!iyKAy(L#?;hQD+A&D8lW&Q_14zb`uci^yRw=`L&jL0jg5_*
zicIxzWK2ik*iII4u+?62Mdbu8|VGb{2emZ;wdB~^gXZ1
z-pzV>F=_5kLSA2}YJOZ_t*eQ(p;lgQT7IHZelWn>zH+uPvp7{FFQc$OEMZ~3?49sV
zGU6iY9xErkf$#K(3dnmY$1jKZ_x1nX$LRK~xG9o03ie(Hs5l`nj~oK}k%YVzLRH~kBJ;&E6$pN(?Iu;*1iKX(cTX4Y_Pc9Sp|O?$q&KZ4@Nln61v+uHgl-$
z?$y82o?rfK7x>oop1p4h-NFKB4P!T-gOc|R#FD(NCqFz9#8D
zFp;s5H;?v_tg_$vFxDnWXMjIT*4~Whh!CQyy{2;2GpBr`Sh~-iRq6~Et?aSO7A^Al
zZJR1v6R6Eb%(e&`kY;n&oiNv(jFdI`^XHT>`Uau5$GXH9^=pY2fC}D#)Kr;mOu64?n+1d->r0v+97~NI|DkUPU%zbe_yb%N6&+l6B>;
zfZ+2zm@GNj6XQzcEHTE7dCg0n#!%T6!xhf9p94lUzqZ9A^1d~!axAZWQ3kG_Iq664
z56|AvoaD|@mQ*#R4-Y}hOv=o&pVwK>iEuKVFfp>dEtT}@mWu*A_S5+Q#FTusmvdRc1wJu4I!4AK2zd>j#nv|4PPx^G)2qDK&zL?
z!{VNVeOMJ7-?ayzPRTLIcz*#uuX7BN1RC(2f9#45c*4oliWrz7)A_RiS(%(yEm$zf9xw#{$f
zROFD)WVyJ`oKQ3H1aA}qk3Ibyte5!V_?*R`VT#uDYG@%_h!_GUU#tW`Fn6
zlG#YcetZ&z*MTZvkT;=>tJTL&5&N+E2%|_lhdaRrYH^IL>Rv7<_EYUG46p1g^ezta
ziHw`-kBlGs)YI#J-@`IpI8CrDYum#Xp-@S9BxR)Qq~vzS(9@B%OM)H7Q%H?VU<-;q
z5G^T(@ggef!=H8=YVWJTDNhd2{bgQef+1Tx#3C-9`0CdKg=gPI^3ZBc)P#5c#b{3>
zerI6_?pw+pH;xnZ?%d183^esEC8u&|kW$Ibh*Ue1Sd^mxur(;+dHm7PcGQ^|Q!!H`
z`rasVlhr4C8QG6(n+|#cPM}D-GS3FXFol4ilv3LgtKWi1rAPWPHj{s}<9y2hYUklt
z4}+pxBr1ktmxx+;JeslmaP(nnW5dtqhObw^t)Tl}p==qstMw`tl^glMF<`3nvvDql
zjKrO0H=lRB5&BEn=4~BFLv?z1`*}qQzh>gKJ^s(I0O1<>{Y*(gVD7S`-^0p8{}Thd
z67oSpzTCVbdPGeUWc{>|e=sH5v~=r%N@NYptEy6wRI
zan?;^zeaK3S~+>Q&mcYoF<{N|YtAdvdg~|n_6GC|y2k*-eO^YqJx*Lj!`o(VsP4Dr
zvfEe1r-&Ebh%VR=7*4*OfAhXa5YlNQ*{w)6A@?D}CImg^
zW(ca8ixM8u+AIIShUfJwI4bA!9S<1w>a$U!E}2!#_8!5g_YrEM6#2P?jM7W}5&KA+
z*h;`udbrT252undl(8B`^eM}B>SrS?Khm}CFHcYhMKdJ&?0jR9=MIR0GK9H#U$PJ`OJT`KD-yHU|6^#93rI-`)aI_BxeG)r%z~FRHG?yQr+}3xKP5AuM|&`MeLfho2aAM~#VsJJdH5G=7(42VT6ou?FU@
zY5K3;=D%AC8S|XRceBgdLstQfV-hz^i(Hl7Df|^JQjzvnfuw%r1IPF6B>q4RP(sI~
zcTN|hRm)2h$p%uSWXD^3$Q1@hOu|f4J7}2<{4HAU3h8qJO)-Em%r$`!v=I0s$_APa
ztM_0go=D7uPr8Cg;|B-Ex9@^OdBES1IKO_gm9(#?5#CiCB4hcnqXn>3VPziELs~`%
z-99UUl{fls6+{gHMzny$;
z`_L2PXwh$?muL3%Y7pLtlYoxyak>rkkg>m3i;Q=+)G1jeqj+ZFlGTpsi8E{PFQQ&o
zYWWzv4kDn302fCx2S*FhmGiSdP}&gdP|=xCN6txhmwI
zeH?wHZ1N)!iGNBi)!pud8>PQT2%vbf(9iM;cU=STMy&DrzUe~^aq0B*V7rf=^CFo!
zL1WK4CKuAVnPP|zm*gKb-u;^$WHWm~rcb!Xi+7
zQq(+1)?F@Akt+RmAhpmSEW)k)eg
zLLkbNg}z7o8~9m8+Y~m5w@q{c?L!jFs@}i>S7?h|h_wbgU)1V(6G8jy2XeJ$I(733
zKf*B3gXg{vyiB0y7oV)YI$-xZh*t*lMSxeF{mxVfGKMv1b})OwjnlbNIwrfAU6P`s
zO^5yo4>=psIOZ8;`q6;;pW|_N1qbYMeBc#-39vp`e~x!CB@a*os5t`K$WFiew&()l
zq&fs11K*5F(M|u|_aQv!ZSFEeO!K1hE%NeNh=BQ|z>J6b;6osM_AzmGV;&&85P;`W
z18@Nafn4K2I`5pD`Ts%~o8Oh}-%}dv$mS!7p~$cQ-xm6RaG~C2xXLQTiFh~{(NEo`
zLKC@sJ7!i&51V#?mg-A59W(T(3g&Vv43huNZ5%&(?5!#78%zZ2Qfl*aB)EvoLXROWM>Ev=l
zVSR%JZJHDlA7XkpI*erc&oJril>PI=|>5n+q0b
zM3DnWdmOLyjxAIT*CXi7O%4Yq`-x@)-sgclIm!|EYT>Dw?Lzo|l%&gEbNZPH$`jnW
zf?~hgPCERF93yuQEwwRFM=S4242A_gge>w3Yb;olcjeH#nZJFAD;Z{tFTDnU@DmrG
zQw2E1IjPqEh{@ia4rj|rN$`TPHx2}hbm91D%=DWY*f(?zt-JkSgp2(FB)wlFGvzXd
zNw?{nU|?(@dRhy!?x41J&~9`^=all|Z`eObY-#Fiibqqx+#TgvHn$gbZG;Th@DyAcogJWeIz)7`sKGbevVeZANFjVA
z@%SaBd&1K?aJGw{L9?EWM33@UduGHgH+ZcdNSeojT#tpx?1p4FTdMZR23Gk%MTIt?
zj|cwpns)KCi(k`FE``pG5bM
zO7*md1S6Ke0W#^xbgCcrKwbV9N$dSt%bp#T6JxqSsolWuX_@M{7nVbeW?%I|Y7=p4ZJu@$$A^5xF{-5VyA3!sM
z>q;9Ic!tNHTyK@U@vd&nPo@dZNuy-=foQQiZ&il`VR)hykL+7={D3DThz8Yhe-6~&
z9A^jrr1h?7lW5duU}%%)cHE+a^wNyUi6jz|`FHQ99Ilt6$l`*r6OaUK(hkD?JXIM~
zbNS8OeMjIUnCS^YCv&Pu#Qf@g7Ul&*5~w3A=;ql7f`MTwdfnb
z%EB+zu4FVuBX#Hb0^1S9zSVQ!!wed1zu`P8dFg~6~+V1c_N$$xOgCk~IG%4=TpBFtzlm|kl#&Q&9jv9}vif8D)lh^rz^K5P+#wx2)t@&fzc%L7#qfG7ODK;+=Sj_Ci&PbARx
zKM_M7|4H6d*Ri(C;5olC+w*J)odw;#fQ*`(aLN_^-B#x=A&;<^=oo}<^$FbBq1X37
zN$@AX3Q>bnq3bv+Lc`U$)*B?OQC##$r4U<@H4@$(fdstMhXo@lNqY*Ji7Ni~bZ-d(
z@Vx1P1cABv2E2Dly>0(Y`QP%-Hc0bk>&DvFb2qRH7rUP+@?@DxT+Jy*65M^-#?zul
z-1qgxOX|GOk^uz%ga->2bYlhIgjD(A@rSj_y!iY@=KT!DSpNv}U+VD3mCC36um#-l
z#_%5HkHGv=9iJFpC*Anxht;-8gpr*Uc{&mu#YhsL+2c*rvd!80=Ox=D!7xbgbD|6a
zXbs>eZSUgYWU&7!xe_*y6hjNG{F)>TxWWt8!x!uH69GCjlc;OzHCTTbJ`er@dT0-o
z^}zu>>{kOa22yIBP6RFA#Kea!1z;SJB2maFQEcY%3tYK(1$sSZGn=)GeR$*T33xZ*
zB5)>R`Mz4O!7RH|_=7yrTWAWZgS#9-%!Yv1E96UP7IIk|GR~FZ983@pQlZM@Z%c6A
zK+WgDRF3mI_0UaHmy(8l7+2Gf6U-DuiN=euaJjE91?^X@GMf+^4vZnxbJ;a)`U9l-
zCPGgDEOZ1h{a0@(WClSx=C+!P|0SNQ^W4r}z7P(X1s1bxWR}$`KdTwr>M66d?E7Wrdb4^gTh|
zp5U#e4~1BqS{lBz0s733I-&$kWMVIsg)}Qp|T-{sVP?K9P&$(-L+A8R#uvb{mKRW}7~Jit@^Wd}#7@
zLl@5O^I*8nfn>vi>lET}bbzHT*zx1fCu<50$e{pxPj0Z6DC6OKgs4MqG->}iQ_5&^
zNcP5M7np(oMoY-7&8~IKWAp9NLjikhtR$Q>>wdMaN?fkZE~H2WsEujTc625JyhYFQ
z+26rS*mrzo(Le#)@@y*9ej%mIf{b4`l4L@NL7`zOTb;OGQ=T6})VOtl!;WgMm{y?L
z3jI{gW>JEJb>J~_ecrnYAm)Z%{y(I08)Br$%1VyOyo34njq3BiOamEqjzhT2&{E{K
zeK1bMP>2u@c+`ImV)Z6#(TiNG-)(TJxEd1Xde&IR+rh_o1Aq`OcQN
zw+##&Lk~#SLY~&+w1Ogvp=3Q5lk%FnR`4Nx@QQ;$tj
z`6#}ACc2B`23T>+NAHTlLAt2OVDPy@Ugw}Q8}g#!ye~ok12!Cg0NnSyZ!rtorjlm?
zg)d!YovGaQ3C;lT6Waj>;?KcwHh3p=Vs5-sBs9Fp3;KjwK@gVxPTJs1@k*NFUcM~g
z+g@de_|v#eF(SzOyF19;N2;K>h0t0`H}AO#
zsp-Bu<$53x&GIqnbi~_igc{7WIR{2)yISLo4@wD<3zj`v-s{|FllcjeJ_>{gEoK1X
z0ZC_HnNxDUgD~`y7cjMQ_`%zpk?yz*f>}UspD#y*eyab~>NABV)3Re>HbMc`_~s?1
z?|A^U5TL$%b$YC}6
z52Lv${)hH`ZCF_U%>{f=Y{Y*u;eEvZ|L`90zsW%Ke==n4f73?tUoO27fu`(J9j_9x
zRQ{5bXHTrpxbFn#0KJXZoopHb&852n2C=knYx8(qP>NF(!
zQbzdwb;sBFJAdA#6aQS;k*E;Ftf9Lob;PsSUW@s#2kgPL_q|7*Nd+_)I~$oYg+gB0
zassOS+;XN^)%s!VaiHs(e_w0H%^>GyRCinSkGk#&7#OV!;H~xRwm}JvdBc?ewltj1
z@P3u|++l)ZN4|j`P>mPEdoUGvE%YQm>B(((n#5ElkNKfJ7i2<^InQR&
z7`z|*5VsLNxYFJs^zlgwnm963!R|G4Uv<+&l%8uR6QB#N_x5?D5y1X60`Mw&e`Cxd
z-qRxbq)Y!FHl2H#&!QIUZ
z4+jDUdQb*J_#|H-l;(kCd1KQH0j(^iB!M5X>kbm5K8j?n?tL2^Anx6vkf>=6$
z5sGz!FFbd6+Cw)b_7`NSLAwIp`m)U}9>`$o|KZ!5D>t=O4A7k_xo@ZxStNVbT_2!(kKcVtx_g2^1B#d+TPH`bpy(1x6#
z-UN>v#4>jDCk&R>>d0i3d$EFbjgvk_)U#1C52a_+VM_BH8Y9zSc(9fe^LVh%^!$d!
z$H@7>vOM^6E9fT)n|Y!cJF)4P0XUPYIiA&O*A#)-1wVAhfbn>tm)pC}X`R409<3fR
zYc$eS{(+SBHrZ5F^iNf?{GcY5-Qnmsn@eY452>?$=lpU(4B)8kWor`u$nGgPuvMIip55!j_sOkw6cKnc?lz9&#il5>Ob9Mvjy{lhr6|?@3o9Q0$fKG3%
zLAM{!Tk&fbSiTRb9oP2z(8Dy$+sNmByH^foilbXL13vC0bay4z@OE#0Kkn>#n6Iacht%R1hc8w9>OHr7_+{-7svGp5Rnq@%t39E!Esx@z(iao6
zYNx�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,它是进程间通信(IPC)的基础设施,也是传送对象的唯一管道。

初识内核对象

内核对象简介

-

TODO

-

详细内容可参考 Fuchsia 官方文档:内核对象

-

在这一节中我们将在 Rust 中实现内核对象的概念。

+

在动手编写我们的代码之前,需要首先进行调研和学习,对目标对象有一个全面系统的了解。 +而了解一个项目设计的最好方式就是阅读官方提供的手册和文档。

+

让我们先来阅读一下 Fuchsia 官方文档:内核对象。这个链接是社区翻译的中文版,已经有些年头了。如果读者能够科学上网,推荐直接阅读官方英文版

+

通过阅读文档,我们了解到与内核对象相关的三个重要概念:对象(Object),句柄(Handle),权限(Rights)。它们在 Zircon 内核中的角色和关系如下图所示:

+

+

简单来说:

+
    +
  • Zircon是一个基于对象的内核,内核资源被抽象封装在不同的 对象 中。
  • +
  • 用户程序通过 句柄 与内核交互。句柄是对某一对象的引用,并且附加了特定的 权限
  • +
  • 对象通过 引用计数 管理生命周期。当最后一个句柄关闭时,对象随之销毁。
  • +
+

此外在内核对象的文档中,还列举了一些常用对象。点击链接进去就能查看到这个对象的具体描述,在页面最下方还列举了与这个对象相关的全部系统调用。 +进一步查看系统调用的 API 定义,以及它的行为描述,我们就能更深入地了解用户程序操作内核对象的一些细节:

+
    +
  • +

    创建:每一种内核对象都存在一个系统调用来创建它,例如 zx_channel_create。 +创建对象时一般需要传入一个参数选项 options,若创建成功则内核会将一个新句柄写入用户指定的内存中。

    +
  • +
  • +

    使用:获得对象句柄后可以通过若干系统调用对它进行操作,例如 zx_channel_write。 +这类系统调用一般需要传入句柄 handle 作为第一个参数,内核首先对其进行检查,如果句柄非法或者对象类型与系统调用不匹配就会报错。 +接下来内核会检查句柄的权限是否满足操作的要求,例如 write 操作一般要求句柄具有 WRITE 权限,如果权限不满足就会继续报错。

    +
  • +
  • +

    关闭:当用户程序不再使用对象时,会调用 zx_handle_close 关闭句柄。当用户进程退出时,仍处于打开状态的句柄也都会自动关闭。

    +
  • +
+

我们还发现,有一类 Object 系统调用是对所有内核对象都适用的。 +这表明所有内核对象都有一些公共属性,例如 ID、名称等等。每一种内核对象也会有自己特有的属性。

+

其中一些 Object 系统调用和信号相关。Zircon 每个内核对象都附带有 32 个 信号(Signals),它们代表了不同类型的事件。 +与传统 Unix 系统的信号不同,它不能异步地打断用户程序运行,而只能由用户程序主动地阻塞等待在某个对象的某些信号上面。 +信号是 Zircon 内核中很重要的机制,不过这部分在前期不会涉及,我们留到第五章再具体实现。

+

以上我们了解了 Zircon 内核对象的相关概念和使用方式。接下来在这一节中,我们将用 Rust 实现内核对象的基本框架,以方便后续快速实现各种具体类型的内核对象。 +从传统面向对象语言的视角看,我们只是在实现一个基类。但由于 Rust 语言模型的限制,这件事情需要用到一些特殊的技巧。

建立项目

首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可:

$ curl https://sh.rustup.rs -sSf | sh
@@ -342,10 +373,11 @@ DummyObject *dummy = dynamic_cast<DummyObject*>(base);
 

但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下:

-
use core::any::Any;
-use alloc::sync::Arc;
-
-trait KernelObject: Any + Send + Sync {}
+
use std::any::Any;
+use std::sync::Arc;
+fn main() {}
+
+trait KernelObject: Any + Send + Sync {}
 fn downcast_v1<T: KernelObject>(object: Arc<dyn KernelObject>) -> Arc<T> {
     object.downcast::<T>().unwrap()
 }
@@ -353,7 +385,7 @@ fn downcast_v2<T: KernelObject>(object: Arc<dyn KernelObject>) ->
     let object: Arc<dyn Any + Send + Sync + 'static> = object;
     object.downcast::<T>().unwrap()
 }
-
+

当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库:

[dependencies]
 downcast-rs = { version = "1.2.0", default-features = false }
diff --git a/searchindex.js b/searchindex.js
index 8b7f385..9a72b6a 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Object.assign(window.search, {"doc_urls":["index.html#简明-zcore-教程","index.html#自己动手山寨操作系统自顶向下方法","zcore-intro.html#zcore-整体结构和设计模式","fuchsia.html#fuchsia-os-和-zircon-微内核","ch01-00-object.html#内核对象","ch01-01-kernel-object.html#初识内核对象","ch01-01-kernel-object.html#内核对象简介","ch01-01-kernel-object.html#建立项目","ch01-01-kernel-object.html#实现-kernelobject-接口","ch01-01-kernel-object.html#实现一个空对象","ch01-01-kernel-object.html#实现接口到具体类型的向下转换","ch01-01-kernel-object.html#模拟继承用宏自动生成接口实现代码","ch01-01-kernel-object.html#总结","ch01-02-process-object.html#对象管理器process-对象","ch01-02-process-object.html#句柄和权限","ch01-02-process-object.html#实现第一个内核对象","ch01-02-process-object.html#存储内核对象句柄","ch01-02-process-object.html#根据句柄查找内核对象","ch01-03-channel-object.html#对象传送器channel-对象","ch01-03-channel-object.html#创建一对内核对象","ch01-03-channel-object.html#实现数据传输","ch02-00-task.html#任务管理","ch02-01-zircon-task.html#zircon-任务管理体系","ch02-02-hal-async.html#硬件抽象层与异步运行时","ch02-03-thread-object.html#线程管理thread-对象","ch02-04-process-job-object.html#进程管理process-与-job-对象","ch03-00-memory.html#内存管理","ch03-01-zircon-memory.html#zircon-内存管理模型","ch03-02-vmo.html#物理内存vmo-对象","ch03-03-vmar.html#虚拟内存vmar-对象","ch04-00-userspace.html#用户程序","ch04-01-user-program.html#zircon-用户程序","ch04-02-load-elf.html#加载-elf-文件","ch04-03-context-switch.html#上下文切换","ch04-04-syscall.html#系统调用"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":1,"title":1},"1":{"body":20,"breadcrumbs":0,"title":0},"10":{"body":118,"breadcrumbs":0,"title":0},"11":{"body":175,"breadcrumbs":0,"title":0},"12":{"body":7,"breadcrumbs":0,"title":0},"13":{"body":0,"breadcrumbs":1,"title":1},"14":{"body":0,"breadcrumbs":0,"title":0},"15":{"body":0,"breadcrumbs":0,"title":0},"16":{"body":0,"breadcrumbs":0,"title":0},"17":{"body":0,"breadcrumbs":0,"title":0},"18":{"body":0,"breadcrumbs":1,"title":1},"19":{"body":0,"breadcrumbs":0,"title":0},"2":{"body":0,"breadcrumbs":1,"title":1},"20":{"body":0,"breadcrumbs":0,"title":0},"21":{"body":0,"breadcrumbs":0,"title":0},"22":{"body":0,"breadcrumbs":1,"title":1},"23":{"body":0,"breadcrumbs":0,"title":0},"24":{"body":0,"breadcrumbs":1,"title":1},"25":{"body":0,"breadcrumbs":2,"title":2},"26":{"body":0,"breadcrumbs":0,"title":0},"27":{"body":0,"breadcrumbs":1,"title":1},"28":{"body":0,"breadcrumbs":1,"title":1},"29":{"body":0,"breadcrumbs":1,"title":1},"3":{"body":0,"breadcrumbs":3,"title":3},"30":{"body":0,"breadcrumbs":0,"title":0},"31":{"body":0,"breadcrumbs":1,"title":1},"32":{"body":0,"breadcrumbs":1,"title":1},"33":{"body":0,"breadcrumbs":0,"title":0},"34":{"body":0,"breadcrumbs":0,"title":0},"4":{"body":4,"breadcrumbs":0,"title":0},"5":{"body":0,"breadcrumbs":0,"title":0},"6":{"body":3,"breadcrumbs":0,"title":0},"7":{"body":67,"breadcrumbs":0,"title":0},"8":{"body":35,"breadcrumbs":1,"title":1},"9":{"body":138,"breadcrumbs":0,"title":0}},"docs":{"0":{"body":"","breadcrumbs":"简明 zCore 教程","id":"0","title":"简明 zCore 教程"},"1":{"body":"zCore 是用 Rust 语言重写的 Zircon 微内核,它是 Google 正在开发的 Fuchsia OS 中的底层内核。 本教程基于 zCore 的真实开发历史,还原其开发过程。带领读者一步一步用 Rust 实现自己的 Zircon 内核,最终能够运行原生的 shell 程序。 在此过程中我们将体会 Zircon 微内核的设计理念,感受如何用 Rust 语言以一种现代的方式编写系统软件,在项目中实现理论与实践的融合。 与传统操作系统开发不同的是,zCore 使用一种自顶向下的方法:首先基于宿主系统已有的功能,在用户态实现一个能够工作的 libOS,然后再逐步替换底层实现, \"移植\"回裸机环境中运行。因此我们更关注系统的整体设计,从高层视角看待 OS 如何为用户提供服务,而不纠结于底层硬件细节。 鉴于此,本教程假设读者了解操作系统基本概念和原理,具有常用的 Linux 系统使用经验,并且会使用 Rust 语言编写简单程序。 如果读者不熟悉操作系统和 Rust 语言,希望以自底向上方法从零构建操作系统, rCore Tutorial 可能是更好的选择。 如果你准备好了,让我们开始吧!","breadcrumbs":"自己动手山寨操作系统:自顶向下方法","id":"1","title":"自己动手山寨操作系统:自顶向下方法"},"10":{"body":"在系统调用中,用户进程会传入一个内核对象的句柄,然后内核会根据系统调用的类型,尝试将其转换成特定类型的对象。 于是这里产生了一个很重要的需求:将接口 Arc 转换成具体类型的结构 Arc where T: KernelObject。 这种操作在面向对象语言中称为 向下转换(downcast) 。 在大部分编程语言中,向下转换都是一件非常轻松的事情。例如在 C/C++ 中,我们可以这样写: struct KernelObject {...};\nstruct DummyObject: KernelObject {...}; KernelObject *base = ...;\n// C 风格:强制类型转换\nDummyObject *dummy = (DummyObject*)(base);\n// C++ 风格:动态类型转换\nDummyObject *dummy = dynamic_cast(base); 但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下: # use core::any::Any;\n# use alloc::sync::Arc;\n#\ntrait KernelObject: Any + Send + Sync {}\nfn downcast_v1(object: Arc) -> Arc { object.downcast::().unwrap()\n}\nfn downcast_v2(object: Arc) -> Arc { let object: Arc = object; object.downcast::().unwrap()\n} 当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库: [dependencies]\ndowncast-rs = { version = \"1.2.0\", default-features = false } (题外话:这个库原来是不支持 no_std 的,zCore 有这个需求,于是就顺便帮他实现了一把) 按照它文档的描述,我们要为自己的接口实现向下转换,只需以下修改: // src/object/mod.rs\nuse core::fmt::Debug;\nuse downcast_rs::{impl_downcast, DowncastSync}; pub trait KernelObject: DowncastSync + Debug {...}\nimpl_downcast!(sync KernelObject); 其中 DowncastSync 代替了原来的 Send + Sync,Debug 用于出错时输出调试信息。 impl_downcast! 宏用来帮我们自动生成转换函数,然后就可以用 downcast_arc 来对 Arc 做向下转换了。我们直接来测试一把: // src/object/object.rs\n#[test]\nfn downcast() { let dummy = DummyObject::new(); let object: Arc = dummy; let _result: Arc = object.downcast_arc::().unwrap();\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.47s Running target/debug/deps/zcore-ae1be84852989b13 running 2 tests\ntest object::downcast ... ok\ntest object::tests::dummy_object ... ok","breadcrumbs":"内核对象 » 实现接口到具体类型的向下转换","id":"10","title":"实现接口到具体类型的向下转换"},"11":{"body":"上面我们已经完整实现了一个内核对象,代码看起来很简洁。但当我们要实现更多对象的时候,就会发现一个问题: 这些对象拥有一些公共属性,接口方法也有共同的实现。 在传统 OOP 语言中,我们通常使用 继承(inheritance) 来复用这些公共代码:子类 B 可以继承父类 A,然后自动拥有父类的所有字段和方法。 继承是一个很强大的功能,但在长期实践中人们也逐渐发现了它的弊端。有兴趣的读者可以看一看知乎上的探讨: 面向对象编程的弊端是什么? 。 经典著作《设计模式》中就鼓励大家 使用组合代替继承 。而一些现代的编程语言,如 Go 和 Rust,甚至直接抛弃了继承。在 Rust 中,通常使用组合结构和 Deref trait 来部分模拟继承。 继承野蛮,trait 文明。 —— 某 Rust 爱好者 接下来我们模仿 downcast-rs 库的做法,使用一种基于宏的代码生成方案,来实现 KernelObject 的继承。 当然这只是抛砖引玉,如果读者自己实现了,或者了解到社区中有更好的解决方案,也欢迎指出。 具体做法是这样的: 使用一个 struct 来提供所有的公共属性和方法,作为所有子类的第一个成员。 为子类实现 trait 接口,所有方法直接委托给内部 struct 完成。这部分使用宏来自动生成模板代码。 而所谓的内部 struct,其实就是我们上面实现的 DummyObject。为了更好地体现它的功能,我们给他改个名叫 KObjectBase: // src/object/mod.rs\n/// 内核对象核心结构\npub struct KObjectBase { /// 对象 ID pub id: KoID, inner: Mutex,\n} /// `KObjectBase` 的内部可变部分\n#[derive(Default)]\nstruct KObjectBaseInner { name: String,\n} 接下来我们把它的构造函数改为实现 Default trait,并且公共属性和方法都指定为 pub: // src/object/mod.rs\nimpl Default for KObjectBase { /// 创建一个新 `KObjectBase` fn default() -> Self { KObjectBase { id: Self::new_koid(), inner: Default::default(), } }\n}\nimpl KObjectBase { /// 生成一个唯一的 ID fn new_koid() -> KoID {...} /// 获取对象名称 pub fn name(&self) -> String {...} /// 设置对象名称 pub fn set_name(&self, name: &str) {...}\n} 最后来写一个魔法的宏! // src/object/mod.rs\n/// 为内核对象 struct 自动实现 `KernelObject` trait 的宏。\n#[macro_export] // 导出宏,可在 crate 外部使用\nmacro_rules! impl_kobject { // 匹配类型名,并可以提供函数覆盖默认实现 ($class:ident $( $fn:tt )*) => { // 为对象实现 KernelObject trait,方法直接转发到内部 struct impl KernelObject for $class { fn id(&self) -> KoID { // 直接访问内部的 pub 属性 self.base.id } fn type_name(&self) -> &str { // 用 stringify! 宏将输入转成字符串 stringify!($class) } // 注意宏里面的类型要写完整路径,例如:alloc::string::String fn name(&self) -> alloc::string::String { self.base.name() } fn set_name(&self, name: &str){ // 直接访问内部的 pub 方法 self.base.set_name(name) } // 可以传入任意数量的函数,覆盖 trait 的默认实现 $( $fn )* } // 为对象实现 Debug trait impl core::fmt::Debug for $class { fn fmt( &self, f: &mut core::fmt::Formatter<'_>, ) -> core::result::Result<(), core::fmt::Error> { // 输出对象类型、ID 和名称 f.debug_tuple(&stringify!($class)) .field(&self.id()) .field(&self.name()) .finish() } } };\n} 轮子已经造好了!让我们看看如何用它方便地实现一个内核对象,仍以 DummyObject 为例: // src/object/mod.rs\n/// 空对象\npub struct DummyObject { // 其中必须包含一个名为 `base` 的 `KObjectBase` base: KObjectBase,\n} // 使用刚才的宏,声明其为内核对象,自动生成必要的代码\nimpl_kobject!(DummyObject); impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { base: KObjectBase::default(), }) }\n} 是不是方便了很多?最后按照惯例,用单元测试检验实现的正确性: // src/object/mod.rs\n#[test]\nfn impl_kobject() { use alloc::format; let dummy = DummyObject::new(); let object: Arc = dummy; assert_eq!(object.type_name(), \"DummyObject\"); assert_eq!(object.name(), \"\"); object.set_name(\"dummy\"); assert_eq!(object.name(), \"dummy\"); assert_eq!( format!(\"{:?}\", object), format!(\"DummyObject({}, \\\"dummy\\\")\", object.id()) ); let _result: Arc = object.downcast_arc::().unwrap();\n} 有兴趣的读者可以继续探索使用功能更强大的 过程宏(proc_macro) ,进一步简化实现新内核对象所需的模板代码。 如果能把上面的代码块缩小成下面这两行,就更加完美了: #[KernelObject]\npub struct DummyObject;","breadcrumbs":"内核对象 » 模拟继承:用宏自动生成接口实现代码","id":"11","title":"模拟继承:用宏自动生成接口实现代码"},"12":{"body":"在这一节中我们用 Rust 语言实现了 Zircon 最核心的 内核对象 概念。在此过程中涉及到 Rust 的一系列语言特性和设计模式: 使用 trait 实现接口 使用 内部可变性 模式实现并发对象 基于社区解决方案实现 trait 到 struct 的 向下转换 使用组合模拟继承,并使用 宏 实现模板代码的自动生成 由于 Rust 独特的 面向对象编程特性 ,我们在实现内核对象的过程中遇到了一定的挑战。 不过万事开头难,解决这些问题为整个项目打下了坚实基础,后面实现新的内核对象就会变得简单很多。 在下一节中,我们将介绍内核对象相关的另外两个概念:句柄和权限,并实现内核对象的存储和访问。","breadcrumbs":"内核对象 » 总结","id":"12","title":"总结"},"13":{"body":"","breadcrumbs":"内核对象 » 对象管理器:Process 对象","id":"13","title":"对象管理器:Process 对象"},"14":{"body":"","breadcrumbs":"内核对象 » 句柄和权限","id":"14","title":"句柄和权限"},"15":{"body":"","breadcrumbs":"内核对象 » 实现第一个内核对象","id":"15","title":"实现第一个内核对象"},"16":{"body":"","breadcrumbs":"内核对象 » 存储内核对象句柄","id":"16","title":"存储内核对象句柄"},"17":{"body":"","breadcrumbs":"内核对象 » 根据句柄查找内核对象","id":"17","title":"根据句柄查找内核对象"},"18":{"body":"","breadcrumbs":"内核对象 » 对象传送器:Channel 对象","id":"18","title":"对象传送器:Channel 对象"},"19":{"body":"","breadcrumbs":"内核对象 » 创建一对内核对象","id":"19","title":"创建一对内核对象"},"2":{"body":"","breadcrumbs":"zCore 整体结构和设计模式","id":"2","title":"zCore 整体结构和设计模式"},"20":{"body":"","breadcrumbs":"内核对象 » 实现数据传输","id":"20","title":"实现数据传输"},"21":{"body":"","breadcrumbs":"任务管理","id":"21","title":"任务管理"},"22":{"body":"","breadcrumbs":"任务管理 » Zircon 任务管理体系","id":"22","title":"Zircon 任务管理体系"},"23":{"body":"","breadcrumbs":"任务管理 » 硬件抽象层与异步运行时","id":"23","title":"硬件抽象层与异步运行时"},"24":{"body":"","breadcrumbs":"任务管理 » 线程管理:Thread 对象","id":"24","title":"线程管理:Thread 对象"},"25":{"body":"","breadcrumbs":"任务管理 » 进程管理:Process 与 Job 对象","id":"25","title":"进程管理:Process 与 Job 对象"},"26":{"body":"","breadcrumbs":"内存管理","id":"26","title":"内存管理"},"27":{"body":"","breadcrumbs":"内存管理 » Zircon 内存管理模型","id":"27","title":"Zircon 内存管理模型"},"28":{"body":"","breadcrumbs":"内存管理 » 物理内存:VMO 对象","id":"28","title":"物理内存:VMO 对象"},"29":{"body":"","breadcrumbs":"内存管理 » 虚拟内存:VMAR 对象","id":"29","title":"虚拟内存:VMAR 对象"},"3":{"body":"","breadcrumbs":"Fuchsia OS 和 Zircon 微内核","id":"3","title":"Fuchsia OS 和 Zircon 微内核"},"30":{"body":"","breadcrumbs":"用户程序","id":"30","title":"用户程序"},"31":{"body":"","breadcrumbs":"用户程序 » Zircon 用户程序","id":"31","title":"Zircon 用户程序"},"32":{"body":"","breadcrumbs":"用户程序 » 加载 ELF 文件","id":"32","title":"加载 ELF 文件"},"33":{"body":"","breadcrumbs":"用户程序 » 上下文切换","id":"33","title":"上下文切换"},"34":{"body":"","breadcrumbs":"用户程序 » 系统调用","id":"34","title":"系统调用"},"4":{"body":"Zircon 是一个基于内核对象的系统。系统的功能被划分到若干组内核对象中。 作为一切的开始,本章首先构造了一个内核对象框架,作为后面实现的基础。 然后我们实现第一个内核对象 —— Process,它是所有对象的容器,也是将来我们操作对象的入口点。 最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信( IPC )的基础设施,也是传送对象的唯一管道。","breadcrumbs":"内核对象","id":"4","title":"内核对象"},"5":{"body":"","breadcrumbs":"内核对象 » 初识内核对象","id":"5","title":"初识内核对象"},"6":{"body":"TODO 详细内容可参考 Fuchsia 官方文档: 内核对象 。 在这一节中我们将在 Rust 中实现内核对象的概念。","breadcrumbs":"内核对象 » 内核对象简介","id":"6","title":"内核对象简介"},"7":{"body":"首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可: $ curl https://sh.rustup.rs -sSf | sh 具体安装方法可以参考 官方文档 。 接下来我们用 cargo 创建一个 Rust 库项目: $ cargo new --lib zcore\n$ cd zcore 我们将在这个 crate 中实现所有的内核对象,以库(lib)而不是可执行文件(bin)的形式组织代码,后面我们会依赖单元测试保证代码的正确性。 由于我们会用到一些不稳定(unstable)的语言特性,需要使用 nightly 版本的工具链。在项目根目录下创建一个 rust-toolchain 文件,指明使用的工具链版本: nightly-2020-06-04 这个程序库目前是在你的 Linux 或 macOS 上运行,但有朝一日它会成为一个真正的 OS 在裸机上运行。 为此我们需要移除对标准库的依赖,使其成为一个不依赖当前 OS 功能的库。在 lib.rs 的第一行添加声明: // src/lib.rs\n#![no_std]\nextern crate alloc; 现在我们可以尝试运行一下自带的单元测试,编译器可能会自动下载并安装工具链: $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.52s Running target/debug/deps/zcore-dc6d43637bc5df7a running 1 test\ntest tests::it_works ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out","breadcrumbs":"内核对象 » 建立项目","id":"7","title":"建立项目"},"8":{"body":"所有的内核对象有一系列共同的属性和方法,我们称这些方法为对象的公共 接口(Interface) 。 同一种方法在不同类型的对象中可能会有不同的行为,在面向对象语言中我们称其为 多态(Polymorphism) 。 Rust 是一门部分面向对象的语言,我们通常用它的 trait 实现接口和多态。 首先创建一个 KernelObject trait 作为内核对象的公共接口: // src/object/mod.rs\n/// 内核对象公共接口\npub trait KernelObject: Send + Sync { /// 获取对象 ID fn id(&self) -> KoID; /// 获取对象类型名 fn type_name(&self) -> &str; /// 获取对象名称 fn name(&self) -> String; /// 设置对象名称 fn set_name(&self, name: &str);\n} /// 对象 ID 类型\npub type KoID = u64; 这里的 Send + Sync 是一个约束所有 KernelObject 都要满足的前提条件,即它必须是一个 并发对象 。 所谓并发对象指的是 可以安全地被多线程共享访问 。事实上我们的内核本身就是一个共享地址空间的多线程程序,在裸机上每个 CPU 核都可以被视为一个并发执行的线程。 由于内核对象可能被多个线程同时访问,因此它必须是并发对象。","breadcrumbs":"内核对象 » 实现 KernelObject 接口","id":"8","title":"实现 KernelObject 接口"},"9":{"body":"接下来我们实现一个最简单的空对象 DummyObject,并为它实现 KernelObject 接口: // src/object/object.rs\nuse spin::Mutex; /// 空对象\n#[derive(Debug)]\npub struct DummyObject { id: KoID, inner: Mutex,\n} /// `DummyObject` 的内部可变部分\n#[derive(Default, Debug)]\nstruct DummyObjectInner { name: String,\n} 这里我们采用一种 内部可变性 的设计模式:将对象的所有可变的部分封装到一个内部对象 DummyObjectInner 中,并在原对象中用自旋锁 Mutex 把它包起来,剩下的其它字段都是不可变的。 Mutex 会用最简单的方式帮我们处理好并发访问问题:如果有其他人正在访问,我就在这里死等。 数据被 Mutex 包起来之后需要首先使用 lock() 拿到锁之后才能访问。此时并发访问已经安全,因此被包起来的结构自动具有了 Send + Sync 特性。 使用自旋锁引入了新的依赖库 spin ,需要在 Cargo.toml 中加入以下声明: [dependencies]\nspin = \"0.5\" 然后我们为新对象实现构造函数: // src/object/object.rs\nuse alloc::sync::Arc;\nuse core::sync::atomic::*; impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { id: Self::new_koid(), inner: Default::default(), }) } /// 生成一个唯一的 ID fn new_koid() -> KoID { static NEXT_KOID: AtomicU64 = AtomicU64::new(1024); NEXT_KOID.fetch_add(1, Ordering::SeqCst) }\n} 根据文档描述,每个内核对象都有唯一的 ID。为此我们需要实现一个全局的 ID 分配方法。这里采用的方法是用一个静态变量存放下一个待分配 ID 值,每次分配就原子地 +1。 ID 类型使用 u64,保证了数值空间足够大,在有生之年都不用担心溢出问题。在 Zircon 中 ID 从 1024 开始分配,1024 以下保留作内核内部使用。 另外注意这里 new 函数返回类型不是 Self 而是 Arc,这是为了以后方便而做的统一约定。 最后我们为它实现 KernelObject 接口: // src/object/object.rs\nimpl KernelObject for DummyObject { fn id(&self) -> KoID { self.id } fn type_name(&self) -> &str { \"DummyObject\" } fn name(&self) -> String { self.inner.lock().name.clone() } fn set_name(&self, name: &str) { self.inner.lock().name = String::from(name); }\n} 到此为止,我们已经迈出了万里长征第一步,实现了一个最简单的功能。有实现,就要有测试!即使最简单的代码也要保证它的行为符合我们预期。 只有对现有代码进行充分测试,在未来做添加和修改的时候,我们才有信心不会把事情搞砸。俗话讲\"万丈高楼平地起\",把地基打好才能盖摩天大楼。 为了证明上面代码的正确性,我们写一个简单的单元测试,替换掉自带的 it_works 函数: // src/object/object.rs\n#[cfg(test)]\nmod tests { use super::*; #[test] fn dummy_object() { let o1 = DummyObject::new(); let o2 = DummyObject::new(); assert_ne!(o1.id(), o2.id()); assert_eq!(o1.type_name(), \"DummyObject\"); assert_eq!(o1.name(), \"\"); o1.set_name(\"object1\"); assert_eq!(o1.name(), \"object1\"); }\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.53s Running target/debug/deps/zcore-ae1be84852989b13 running 1 test\ntest tests::dummy_object ... ok 大功告成!让我们用 cargo fmt 命令格式化一下代码,然后记得 git commit 及时保存进展。","breadcrumbs":"内核对象 » 实现一个空对象","id":"9","title":"实现一个空对象"}},"length":35,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.0},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.23606797749979},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.0},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.0},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.0},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0},"4":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"breadcrumbs":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.4142135623730951}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.23606797749979},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.23606797749979},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.0},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.4142135623730951}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.4142135623730951},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"4":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"title":{"root":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"18":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}}},"f":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"13":{"tf":1.0},"25":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"0":{"tf":1.0},"2":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}});
\ No newline at end of file
+Object.assign(window.search, {"doc_urls":["index.html#简明-zcore-教程","index.html#自己动手山寨操作系统自顶向下方法","zcore-intro.html#zcore-整体结构和设计模式","fuchsia.html#fuchsia-os-和-zircon-微内核","ch01-00-object.html#内核对象","ch01-01-kernel-object.html#初识内核对象","ch01-01-kernel-object.html#内核对象简介","ch01-01-kernel-object.html#建立项目","ch01-01-kernel-object.html#实现-kernelobject-接口","ch01-01-kernel-object.html#实现一个空对象","ch01-01-kernel-object.html#实现接口到具体类型的向下转换","ch01-01-kernel-object.html#模拟继承用宏自动生成接口实现代码","ch01-01-kernel-object.html#总结","ch01-02-process-object.html#对象管理器process-对象","ch01-02-process-object.html#句柄和权限","ch01-02-process-object.html#实现第一个内核对象","ch01-02-process-object.html#存储内核对象句柄","ch01-02-process-object.html#根据句柄查找内核对象","ch01-03-channel-object.html#对象传送器channel-对象","ch01-03-channel-object.html#创建一对内核对象","ch01-03-channel-object.html#实现数据传输","ch02-00-task.html#任务管理","ch02-01-zircon-task.html#zircon-任务管理体系","ch02-02-hal-async.html#硬件抽象层与异步运行时","ch02-03-thread-object.html#线程管理thread-对象","ch02-04-process-job-object.html#进程管理process-与-job-对象","ch03-00-memory.html#内存管理","ch03-01-zircon-memory.html#zircon-内存管理模型","ch03-02-vmo.html#物理内存vmo-对象","ch03-03-vmar.html#虚拟内存vmar-对象","ch04-00-userspace.html#用户程序","ch04-01-user-program.html#zircon-用户程序","ch04-02-load-elf.html#加载-elf-文件","ch04-03-context-switch.html#上下文切换","ch04-04-syscall.html#系统调用"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":1,"title":1},"1":{"body":20,"breadcrumbs":0,"title":0},"10":{"body":120,"breadcrumbs":0,"title":0},"11":{"body":175,"breadcrumbs":0,"title":0},"12":{"body":7,"breadcrumbs":0,"title":0},"13":{"body":0,"breadcrumbs":1,"title":1},"14":{"body":0,"breadcrumbs":0,"title":0},"15":{"body":0,"breadcrumbs":0,"title":0},"16":{"body":0,"breadcrumbs":0,"title":0},"17":{"body":0,"breadcrumbs":0,"title":0},"18":{"body":0,"breadcrumbs":1,"title":1},"19":{"body":0,"breadcrumbs":0,"title":0},"2":{"body":0,"breadcrumbs":1,"title":1},"20":{"body":0,"breadcrumbs":0,"title":0},"21":{"body":0,"breadcrumbs":0,"title":0},"22":{"body":0,"breadcrumbs":1,"title":1},"23":{"body":0,"breadcrumbs":0,"title":0},"24":{"body":0,"breadcrumbs":1,"title":1},"25":{"body":0,"breadcrumbs":2,"title":2},"26":{"body":0,"breadcrumbs":0,"title":0},"27":{"body":0,"breadcrumbs":1,"title":1},"28":{"body":0,"breadcrumbs":1,"title":1},"29":{"body":0,"breadcrumbs":1,"title":1},"3":{"body":0,"breadcrumbs":3,"title":3},"30":{"body":0,"breadcrumbs":0,"title":0},"31":{"body":0,"breadcrumbs":1,"title":1},"32":{"body":0,"breadcrumbs":1,"title":1},"33":{"body":0,"breadcrumbs":0,"title":0},"34":{"body":0,"breadcrumbs":0,"title":0},"4":{"body":4,"breadcrumbs":0,"title":0},"5":{"body":0,"breadcrumbs":0,"title":0},"6":{"body":23,"breadcrumbs":0,"title":0},"7":{"body":67,"breadcrumbs":0,"title":0},"8":{"body":35,"breadcrumbs":1,"title":1},"9":{"body":138,"breadcrumbs":0,"title":0}},"docs":{"0":{"body":"","breadcrumbs":"简明 zCore 教程","id":"0","title":"简明 zCore 教程"},"1":{"body":"zCore 是用 Rust 语言重写的 Zircon 微内核,它是 Google 正在开发的 Fuchsia OS 中的底层内核。 本教程基于 zCore 的真实开发历史,还原其开发过程。带领读者一步一步用 Rust 实现自己的 Zircon 内核,最终能够运行原生的 shell 程序。 在此过程中我们将体会 Zircon 微内核的设计理念,感受如何用 Rust 语言以一种现代的方式编写系统软件,在项目中实现理论与实践的融合。 与传统操作系统开发不同的是,zCore 使用一种自顶向下的方法:首先基于宿主系统已有的功能,在用户态实现一个能够工作的 libOS,然后再逐步替换底层实现, \"移植\"回裸机环境中运行。因此我们更关注系统的整体设计,从高层视角看待 OS 如何为用户提供服务,而不纠结于底层硬件细节。 鉴于此,本教程假设读者了解操作系统基本概念和原理,具有常用的 Linux 系统使用经验,并且会使用 Rust 语言编写简单程序。 如果读者不熟悉操作系统和 Rust 语言,希望以自底向上方法从零构建操作系统, rCore Tutorial 可能是更好的选择。 如果你准备好了,让我们开始吧!","breadcrumbs":"自己动手山寨操作系统:自顶向下方法","id":"1","title":"自己动手山寨操作系统:自顶向下方法"},"10":{"body":"在系统调用中,用户进程会传入一个内核对象的句柄,然后内核会根据系统调用的类型,尝试将其转换成特定类型的对象。 于是这里产生了一个很重要的需求:将接口 Arc 转换成具体类型的结构 Arc where T: KernelObject。 这种操作在面向对象语言中称为 向下转换(downcast) 。 在大部分编程语言中,向下转换都是一件非常轻松的事情。例如在 C/C++ 中,我们可以这样写: struct KernelObject {...};\nstruct DummyObject: KernelObject {...}; KernelObject *base = ...;\n// C 风格:强制类型转换\nDummyObject *dummy = (DummyObject*)(base);\n// C++ 风格:动态类型转换\nDummyObject *dummy = dynamic_cast(base); 但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下: # use std::any::Any;\n# use std::sync::Arc;\n# fn main() {} trait KernelObject: Any + Send + Sync {}\nfn downcast_v1(object: Arc) -> Arc { object.downcast::().unwrap()\n}\nfn downcast_v2(object: Arc) -> Arc { let object: Arc = object; object.downcast::().unwrap()\n} 当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库: [dependencies]\ndowncast-rs = { version = \"1.2.0\", default-features = false } (题外话:这个库原来是不支持 no_std 的,zCore 有这个需求,于是就顺便帮他实现了一把) 按照它文档的描述,我们要为自己的接口实现向下转换,只需以下修改: // src/object/mod.rs\nuse core::fmt::Debug;\nuse downcast_rs::{impl_downcast, DowncastSync}; pub trait KernelObject: DowncastSync + Debug {...}\nimpl_downcast!(sync KernelObject); 其中 DowncastSync 代替了原来的 Send + Sync,Debug 用于出错时输出调试信息。 impl_downcast! 宏用来帮我们自动生成转换函数,然后就可以用 downcast_arc 来对 Arc 做向下转换了。我们直接来测试一把: // src/object/object.rs\n#[test]\nfn downcast() { let dummy = DummyObject::new(); let object: Arc = dummy; let _result: Arc = object.downcast_arc::().unwrap();\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.47s Running target/debug/deps/zcore-ae1be84852989b13 running 2 tests\ntest object::downcast ... ok\ntest object::tests::dummy_object ... ok","breadcrumbs":"内核对象 » 实现接口到具体类型的向下转换","id":"10","title":"实现接口到具体类型的向下转换"},"11":{"body":"上面我们已经完整实现了一个内核对象,代码看起来很简洁。但当我们要实现更多对象的时候,就会发现一个问题: 这些对象拥有一些公共属性,接口方法也有共同的实现。 在传统 OOP 语言中,我们通常使用 继承(inheritance) 来复用这些公共代码:子类 B 可以继承父类 A,然后自动拥有父类的所有字段和方法。 继承是一个很强大的功能,但在长期实践中人们也逐渐发现了它的弊端。有兴趣的读者可以看一看知乎上的探讨: 面向对象编程的弊端是什么? 。 经典著作《设计模式》中就鼓励大家 使用组合代替继承 。而一些现代的编程语言,如 Go 和 Rust,甚至直接抛弃了继承。在 Rust 中,通常使用组合结构和 Deref trait 来部分模拟继承。 继承野蛮,trait 文明。 —— 某 Rust 爱好者 接下来我们模仿 downcast-rs 库的做法,使用一种基于宏的代码生成方案,来实现 KernelObject 的继承。 当然这只是抛砖引玉,如果读者自己实现了,或者了解到社区中有更好的解决方案,也欢迎指出。 具体做法是这样的: 使用一个 struct 来提供所有的公共属性和方法,作为所有子类的第一个成员。 为子类实现 trait 接口,所有方法直接委托给内部 struct 完成。这部分使用宏来自动生成模板代码。 而所谓的内部 struct,其实就是我们上面实现的 DummyObject。为了更好地体现它的功能,我们给他改个名叫 KObjectBase: // src/object/mod.rs\n/// 内核对象核心结构\npub struct KObjectBase { /// 对象 ID pub id: KoID, inner: Mutex,\n} /// `KObjectBase` 的内部可变部分\n#[derive(Default)]\nstruct KObjectBaseInner { name: String,\n} 接下来我们把它的构造函数改为实现 Default trait,并且公共属性和方法都指定为 pub: // src/object/mod.rs\nimpl Default for KObjectBase { /// 创建一个新 `KObjectBase` fn default() -> Self { KObjectBase { id: Self::new_koid(), inner: Default::default(), } }\n}\nimpl KObjectBase { /// 生成一个唯一的 ID fn new_koid() -> KoID {...} /// 获取对象名称 pub fn name(&self) -> String {...} /// 设置对象名称 pub fn set_name(&self, name: &str) {...}\n} 最后来写一个魔法的宏! // src/object/mod.rs\n/// 为内核对象 struct 自动实现 `KernelObject` trait 的宏。\n#[macro_export] // 导出宏,可在 crate 外部使用\nmacro_rules! impl_kobject { // 匹配类型名,并可以提供函数覆盖默认实现 ($class:ident $( $fn:tt )*) => { // 为对象实现 KernelObject trait,方法直接转发到内部 struct impl KernelObject for $class { fn id(&self) -> KoID { // 直接访问内部的 pub 属性 self.base.id } fn type_name(&self) -> &str { // 用 stringify! 宏将输入转成字符串 stringify!($class) } // 注意宏里面的类型要写完整路径,例如:alloc::string::String fn name(&self) -> alloc::string::String { self.base.name() } fn set_name(&self, name: &str){ // 直接访问内部的 pub 方法 self.base.set_name(name) } // 可以传入任意数量的函数,覆盖 trait 的默认实现 $( $fn )* } // 为对象实现 Debug trait impl core::fmt::Debug for $class { fn fmt( &self, f: &mut core::fmt::Formatter<'_>, ) -> core::result::Result<(), core::fmt::Error> { // 输出对象类型、ID 和名称 f.debug_tuple(&stringify!($class)) .field(&self.id()) .field(&self.name()) .finish() } } };\n} 轮子已经造好了!让我们看看如何用它方便地实现一个内核对象,仍以 DummyObject 为例: // src/object/mod.rs\n/// 空对象\npub struct DummyObject { // 其中必须包含一个名为 `base` 的 `KObjectBase` base: KObjectBase,\n} // 使用刚才的宏,声明其为内核对象,自动生成必要的代码\nimpl_kobject!(DummyObject); impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { base: KObjectBase::default(), }) }\n} 是不是方便了很多?最后按照惯例,用单元测试检验实现的正确性: // src/object/mod.rs\n#[test]\nfn impl_kobject() { use alloc::format; let dummy = DummyObject::new(); let object: Arc = dummy; assert_eq!(object.type_name(), \"DummyObject\"); assert_eq!(object.name(), \"\"); object.set_name(\"dummy\"); assert_eq!(object.name(), \"dummy\"); assert_eq!( format!(\"{:?}\", object), format!(\"DummyObject({}, \\\"dummy\\\")\", object.id()) ); let _result: Arc = object.downcast_arc::().unwrap();\n} 有兴趣的读者可以继续探索使用功能更强大的 过程宏(proc_macro) ,进一步简化实现新内核对象所需的模板代码。 如果能把上面的代码块缩小成下面这两行,就更加完美了: #[KernelObject]\npub struct DummyObject;","breadcrumbs":"内核对象 » 模拟继承:用宏自动生成接口实现代码","id":"11","title":"模拟继承:用宏自动生成接口实现代码"},"12":{"body":"在这一节中我们用 Rust 语言实现了 Zircon 最核心的 内核对象 概念。在此过程中涉及到 Rust 的一系列语言特性和设计模式: 使用 trait 实现接口 使用 内部可变性 模式实现并发对象 基于社区解决方案实现 trait 到 struct 的 向下转换 使用组合模拟继承,并使用 宏 实现模板代码的自动生成 由于 Rust 独特的 面向对象编程特性 ,我们在实现内核对象的过程中遇到了一定的挑战。 不过万事开头难,解决这些问题为整个项目打下了坚实基础,后面实现新的内核对象就会变得简单很多。 在下一节中,我们将介绍内核对象相关的另外两个概念:句柄和权限,并实现内核对象的存储和访问。","breadcrumbs":"内核对象 » 总结","id":"12","title":"总结"},"13":{"body":"","breadcrumbs":"内核对象 » 对象管理器:Process 对象","id":"13","title":"对象管理器:Process 对象"},"14":{"body":"","breadcrumbs":"内核对象 » 句柄和权限","id":"14","title":"句柄和权限"},"15":{"body":"","breadcrumbs":"内核对象 » 实现第一个内核对象","id":"15","title":"实现第一个内核对象"},"16":{"body":"","breadcrumbs":"内核对象 » 存储内核对象句柄","id":"16","title":"存储内核对象句柄"},"17":{"body":"","breadcrumbs":"内核对象 » 根据句柄查找内核对象","id":"17","title":"根据句柄查找内核对象"},"18":{"body":"","breadcrumbs":"内核对象 » 对象传送器:Channel 对象","id":"18","title":"对象传送器:Channel 对象"},"19":{"body":"","breadcrumbs":"内核对象 » 创建一对内核对象","id":"19","title":"创建一对内核对象"},"2":{"body":"","breadcrumbs":"zCore 整体结构和设计模式","id":"2","title":"zCore 整体结构和设计模式"},"20":{"body":"","breadcrumbs":"内核对象 » 实现数据传输","id":"20","title":"实现数据传输"},"21":{"body":"","breadcrumbs":"任务管理","id":"21","title":"任务管理"},"22":{"body":"","breadcrumbs":"任务管理 » Zircon 任务管理体系","id":"22","title":"Zircon 任务管理体系"},"23":{"body":"","breadcrumbs":"任务管理 » 硬件抽象层与异步运行时","id":"23","title":"硬件抽象层与异步运行时"},"24":{"body":"","breadcrumbs":"任务管理 » 线程管理:Thread 对象","id":"24","title":"线程管理:Thread 对象"},"25":{"body":"","breadcrumbs":"任务管理 » 进程管理:Process 与 Job 对象","id":"25","title":"进程管理:Process 与 Job 对象"},"26":{"body":"","breadcrumbs":"内存管理","id":"26","title":"内存管理"},"27":{"body":"","breadcrumbs":"内存管理 » Zircon 内存管理模型","id":"27","title":"Zircon 内存管理模型"},"28":{"body":"","breadcrumbs":"内存管理 » 物理内存:VMO 对象","id":"28","title":"物理内存:VMO 对象"},"29":{"body":"","breadcrumbs":"内存管理 » 虚拟内存:VMAR 对象","id":"29","title":"虚拟内存:VMAR 对象"},"3":{"body":"","breadcrumbs":"Fuchsia OS 和 Zircon 微内核","id":"3","title":"Fuchsia OS 和 Zircon 微内核"},"30":{"body":"","breadcrumbs":"用户程序","id":"30","title":"用户程序"},"31":{"body":"","breadcrumbs":"用户程序 » Zircon 用户程序","id":"31","title":"Zircon 用户程序"},"32":{"body":"","breadcrumbs":"用户程序 » 加载 ELF 文件","id":"32","title":"加载 ELF 文件"},"33":{"body":"","breadcrumbs":"用户程序 » 上下文切换","id":"33","title":"上下文切换"},"34":{"body":"","breadcrumbs":"用户程序 » 系统调用","id":"34","title":"系统调用"},"4":{"body":"Zircon 是一个基于内核对象的系统。系统的功能被划分到若干组内核对象中。 作为一切的开始,本章首先构造了一个内核对象框架,作为后面实现的基础。 然后我们实现第一个内核对象 —— Process,它是所有对象的容器,也是将来我们操作对象的入口点。 最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信( IPC )的基础设施,也是传送对象的唯一管道。","breadcrumbs":"内核对象","id":"4","title":"内核对象"},"5":{"body":"","breadcrumbs":"内核对象 » 初识内核对象","id":"5","title":"初识内核对象"},"6":{"body":"在动手编写我们的代码之前,需要首先进行调研和学习,对目标对象有一个全面系统的了解。 而了解一个项目设计的最好方式就是阅读官方提供的手册和文档。 让我们先来阅读一下 Fuchsia 官方文档: 内核对象 。这个链接是社区翻译的中文版,已经有些年头了。如果读者能够科学上网,推荐直接阅读 官方英文版 。 通过阅读文档,我们了解到与内核对象相关的三个重要概念: 对象(Object),句柄(Handle),权限(Rights) 。它们在 Zircon 内核中的角色和关系如下图所示: 简单来说: Zircon是一个基于对象的内核,内核资源被抽象封装在不同的 对象 中。 用户程序通过 句柄 与内核交互。句柄是对某一对象的引用,并且附加了特定的 权限 。 对象通过 引用计数 管理生命周期。当最后一个句柄关闭时,对象随之销毁。 此外在内核对象的文档中,还列举了一些 常用对象 。点击链接进去就能查看到这个对象的 具体描述 ,在页面最下方还列举了与这个对象相关的 全部系统调用 。 进一步查看系统调用的 API 定义 ,以及它的 行为描述 ,我们就能更深入地了解用户程序操作内核对象的一些细节: 创建:每一种内核对象都存在一个系统调用来创建它,例如 zx_channel_create 。 创建对象时一般需要传入一个参数选项 options,若创建成功则内核会将一个新句柄写入用户指定的内存中。 使用:获得对象句柄后可以通过若干系统调用对它进行操作,例如 zx_channel_write 。 这类系统调用一般需要传入句柄 handle 作为第一个参数,内核首先对其进行检查,如果句柄非法或者对象类型与系统调用不匹配就会报错。 接下来内核会检查句柄的权限是否满足操作的要求,例如 write 操作一般要求句柄具有 WRITE 权限,如果权限不满足就会继续报错。 关闭:当用户程序不再使用对象时,会调用 zx_handle_close 关闭句柄。当用户进程退出时,仍处于打开状态的句柄也都会自动关闭。 我们还发现,有一类 Object 系统调用是对所有内核对象都适用的。 这表明所有内核对象都有一些公共属性,例如 ID、名称等等。每一种内核对象也会有自己特有的属性。 其中一些 Object 系统调用和信号相关。Zircon 每个内核对象都附带有 32 个 信号(Signals) ,它们代表了不同类型的事件。 与传统 Unix 系统的信号不同,它不能异步地打断用户程序运行,而只能由用户程序主动地阻塞等待在某个对象的某些信号上面。 信号是 Zircon 内核中很重要的机制,不过这部分在前期不会涉及,我们留到第五章再具体实现。 以上我们了解了 Zircon 内核对象的相关概念和使用方式。接下来在这一节中,我们将用 Rust 实现内核对象的基本框架,以方便后续快速实现各种具体类型的内核对象。 从传统面向对象语言的视角看,我们只是在实现一个基类。但由于 Rust 语言模型的限制,这件事情需要用到一些特殊的技巧。","breadcrumbs":"内核对象 » 内核对象简介","id":"6","title":"内核对象简介"},"7":{"body":"首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可: $ curl https://sh.rustup.rs -sSf | sh 具体安装方法可以参考 官方文档 。 接下来我们用 cargo 创建一个 Rust 库项目: $ cargo new --lib zcore\n$ cd zcore 我们将在这个 crate 中实现所有的内核对象,以库(lib)而不是可执行文件(bin)的形式组织代码,后面我们会依赖单元测试保证代码的正确性。 由于我们会用到一些不稳定(unstable)的语言特性,需要使用 nightly 版本的工具链。在项目根目录下创建一个 rust-toolchain 文件,指明使用的工具链版本: nightly-2020-06-04 这个程序库目前是在你的 Linux 或 macOS 上运行,但有朝一日它会成为一个真正的 OS 在裸机上运行。 为此我们需要移除对标准库的依赖,使其成为一个不依赖当前 OS 功能的库。在 lib.rs 的第一行添加声明: // src/lib.rs\n#![no_std]\nextern crate alloc; 现在我们可以尝试运行一下自带的单元测试,编译器可能会自动下载并安装工具链: $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.52s Running target/debug/deps/zcore-dc6d43637bc5df7a running 1 test\ntest tests::it_works ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out","breadcrumbs":"内核对象 » 建立项目","id":"7","title":"建立项目"},"8":{"body":"所有的内核对象有一系列共同的属性和方法,我们称这些方法为对象的公共 接口(Interface) 。 同一种方法在不同类型的对象中可能会有不同的行为,在面向对象语言中我们称其为 多态(Polymorphism) 。 Rust 是一门部分面向对象的语言,我们通常用它的 trait 实现接口和多态。 首先创建一个 KernelObject trait 作为内核对象的公共接口: // src/object/mod.rs\n/// 内核对象公共接口\npub trait KernelObject: Send + Sync { /// 获取对象 ID fn id(&self) -> KoID; /// 获取对象类型名 fn type_name(&self) -> &str; /// 获取对象名称 fn name(&self) -> String; /// 设置对象名称 fn set_name(&self, name: &str);\n} /// 对象 ID 类型\npub type KoID = u64; 这里的 Send + Sync 是一个约束所有 KernelObject 都要满足的前提条件,即它必须是一个 并发对象 。 所谓并发对象指的是 可以安全地被多线程共享访问 。事实上我们的内核本身就是一个共享地址空间的多线程程序,在裸机上每个 CPU 核都可以被视为一个并发执行的线程。 由于内核对象可能被多个线程同时访问,因此它必须是并发对象。","breadcrumbs":"内核对象 » 实现 KernelObject 接口","id":"8","title":"实现 KernelObject 接口"},"9":{"body":"接下来我们实现一个最简单的空对象 DummyObject,并为它实现 KernelObject 接口: // src/object/object.rs\nuse spin::Mutex; /// 空对象\n#[derive(Debug)]\npub struct DummyObject { id: KoID, inner: Mutex,\n} /// `DummyObject` 的内部可变部分\n#[derive(Default, Debug)]\nstruct DummyObjectInner { name: String,\n} 这里我们采用一种 内部可变性 的设计模式:将对象的所有可变的部分封装到一个内部对象 DummyObjectInner 中,并在原对象中用自旋锁 Mutex 把它包起来,剩下的其它字段都是不可变的。 Mutex 会用最简单的方式帮我们处理好并发访问问题:如果有其他人正在访问,我就在这里死等。 数据被 Mutex 包起来之后需要首先使用 lock() 拿到锁之后才能访问。此时并发访问已经安全,因此被包起来的结构自动具有了 Send + Sync 特性。 使用自旋锁引入了新的依赖库 spin ,需要在 Cargo.toml 中加入以下声明: [dependencies]\nspin = \"0.5\" 然后我们为新对象实现构造函数: // src/object/object.rs\nuse alloc::sync::Arc;\nuse core::sync::atomic::*; impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { id: Self::new_koid(), inner: Default::default(), }) } /// 生成一个唯一的 ID fn new_koid() -> KoID { static NEXT_KOID: AtomicU64 = AtomicU64::new(1024); NEXT_KOID.fetch_add(1, Ordering::SeqCst) }\n} 根据文档描述,每个内核对象都有唯一的 ID。为此我们需要实现一个全局的 ID 分配方法。这里采用的方法是用一个静态变量存放下一个待分配 ID 值,每次分配就原子地 +1。 ID 类型使用 u64,保证了数值空间足够大,在有生之年都不用担心溢出问题。在 Zircon 中 ID 从 1024 开始分配,1024 以下保留作内核内部使用。 另外注意这里 new 函数返回类型不是 Self 而是 Arc,这是为了以后方便而做的统一约定。 最后我们为它实现 KernelObject 接口: // src/object/object.rs\nimpl KernelObject for DummyObject { fn id(&self) -> KoID { self.id } fn type_name(&self) -> &str { \"DummyObject\" } fn name(&self) -> String { self.inner.lock().name.clone() } fn set_name(&self, name: &str) { self.inner.lock().name = String::from(name); }\n} 到此为止,我们已经迈出了万里长征第一步,实现了一个最简单的功能。有实现,就要有测试!即使最简单的代码也要保证它的行为符合我们预期。 只有对现有代码进行充分测试,在未来做添加和修改的时候,我们才有信心不会把事情搞砸。俗话讲\"万丈高楼平地起\",把地基打好才能盖摩天大楼。 为了证明上面代码的正确性,我们写一个简单的单元测试,替换掉自带的 it_works 函数: // src/object/object.rs\n#[cfg(test)]\nmod tests { use super::*; #[test] fn dummy_object() { let o1 = DummyObject::new(); let o2 = DummyObject::new(); assert_ne!(o1.id(), o2.id()); assert_eq!(o1.type_name(), \"DummyObject\"); assert_eq!(o1.name(), \"\"); o1.set_name(\"object1\"); assert_eq!(o1.name(), \"object1\"); }\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.53s Running target/debug/deps/zcore-ae1be84852989b13 running 1 test\ntest tests::dummy_object ... ok 大功告成!让我们用 cargo fmt 命令格式化一下代码,然后记得 git commit 及时保存进展。","breadcrumbs":"内核对象 » 实现一个空对象","id":"9","title":"实现一个空对象"}},"length":35,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"3":{"2":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"6":{"tf":1.0}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.0},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":4,"docs":{"11":{"tf":2.23606797749979},"6":{"tf":1.0},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.0},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"6":{"tf":1.4142135623730951}},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"句":{"df":0,"docs":{},"柄":{"df":0,"docs":{},"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"权":{"df":0,"docs":{},"限":{"df":0,"docs":{},"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"d":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"6":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.4142135623730951}}}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.0},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0},"4":{"tf":1.0},"6":{"tf":2.23606797749979},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"x":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"c":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"breadcrumbs":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"3":{"2":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"6":{"tf":1.0}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.4142135623730951}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":4,"docs":{"11":{"tf":2.23606797749979},"6":{"tf":1.0},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.23606797749979},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"6":{"tf":1.4142135623730951}},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"句":{"df":0,"docs":{},"柄":{"df":0,"docs":{},"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"权":{"df":0,"docs":{},"限":{"df":0,"docs":{},"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"d":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"6":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.4142135623730951}}}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.4142135623730951},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"4":{"tf":1.0},"6":{"tf":2.23606797749979},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"x":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"c":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"title":{"root":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"18":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}}},"f":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"13":{"tf":1.0},"25":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"0":{"tf":1.0},"2":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}});
\ No newline at end of file
diff --git a/searchindex.json b/searchindex.json
index b8b84d4..8d9e4f2 100644
--- a/searchindex.json
+++ b/searchindex.json
@@ -1 +1 @@
-{"doc_urls":["index.html#简明-zcore-教程","index.html#自己动手山寨操作系统自顶向下方法","zcore-intro.html#zcore-整体结构和设计模式","fuchsia.html#fuchsia-os-和-zircon-微内核","ch01-00-object.html#内核对象","ch01-01-kernel-object.html#初识内核对象","ch01-01-kernel-object.html#内核对象简介","ch01-01-kernel-object.html#建立项目","ch01-01-kernel-object.html#实现-kernelobject-接口","ch01-01-kernel-object.html#实现一个空对象","ch01-01-kernel-object.html#实现接口到具体类型的向下转换","ch01-01-kernel-object.html#模拟继承用宏自动生成接口实现代码","ch01-01-kernel-object.html#总结","ch01-02-process-object.html#对象管理器process-对象","ch01-02-process-object.html#句柄和权限","ch01-02-process-object.html#实现第一个内核对象","ch01-02-process-object.html#存储内核对象句柄","ch01-02-process-object.html#根据句柄查找内核对象","ch01-03-channel-object.html#对象传送器channel-对象","ch01-03-channel-object.html#创建一对内核对象","ch01-03-channel-object.html#实现数据传输","ch02-00-task.html#任务管理","ch02-01-zircon-task.html#zircon-任务管理体系","ch02-02-hal-async.html#硬件抽象层与异步运行时","ch02-03-thread-object.html#线程管理thread-对象","ch02-04-process-job-object.html#进程管理process-与-job-对象","ch03-00-memory.html#内存管理","ch03-01-zircon-memory.html#zircon-内存管理模型","ch03-02-vmo.html#物理内存vmo-对象","ch03-03-vmar.html#虚拟内存vmar-对象","ch04-00-userspace.html#用户程序","ch04-01-user-program.html#zircon-用户程序","ch04-02-load-elf.html#加载-elf-文件","ch04-03-context-switch.html#上下文切换","ch04-04-syscall.html#系统调用"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":1,"title":1},"1":{"body":20,"breadcrumbs":0,"title":0},"10":{"body":118,"breadcrumbs":0,"title":0},"11":{"body":175,"breadcrumbs":0,"title":0},"12":{"body":7,"breadcrumbs":0,"title":0},"13":{"body":0,"breadcrumbs":1,"title":1},"14":{"body":0,"breadcrumbs":0,"title":0},"15":{"body":0,"breadcrumbs":0,"title":0},"16":{"body":0,"breadcrumbs":0,"title":0},"17":{"body":0,"breadcrumbs":0,"title":0},"18":{"body":0,"breadcrumbs":1,"title":1},"19":{"body":0,"breadcrumbs":0,"title":0},"2":{"body":0,"breadcrumbs":1,"title":1},"20":{"body":0,"breadcrumbs":0,"title":0},"21":{"body":0,"breadcrumbs":0,"title":0},"22":{"body":0,"breadcrumbs":1,"title":1},"23":{"body":0,"breadcrumbs":0,"title":0},"24":{"body":0,"breadcrumbs":1,"title":1},"25":{"body":0,"breadcrumbs":2,"title":2},"26":{"body":0,"breadcrumbs":0,"title":0},"27":{"body":0,"breadcrumbs":1,"title":1},"28":{"body":0,"breadcrumbs":1,"title":1},"29":{"body":0,"breadcrumbs":1,"title":1},"3":{"body":0,"breadcrumbs":3,"title":3},"30":{"body":0,"breadcrumbs":0,"title":0},"31":{"body":0,"breadcrumbs":1,"title":1},"32":{"body":0,"breadcrumbs":1,"title":1},"33":{"body":0,"breadcrumbs":0,"title":0},"34":{"body":0,"breadcrumbs":0,"title":0},"4":{"body":4,"breadcrumbs":0,"title":0},"5":{"body":0,"breadcrumbs":0,"title":0},"6":{"body":3,"breadcrumbs":0,"title":0},"7":{"body":67,"breadcrumbs":0,"title":0},"8":{"body":35,"breadcrumbs":1,"title":1},"9":{"body":138,"breadcrumbs":0,"title":0}},"docs":{"0":{"body":"","breadcrumbs":"简明 zCore 教程","id":"0","title":"简明 zCore 教程"},"1":{"body":"zCore 是用 Rust 语言重写的 Zircon 微内核,它是 Google 正在开发的 Fuchsia OS 中的底层内核。 本教程基于 zCore 的真实开发历史,还原其开发过程。带领读者一步一步用 Rust 实现自己的 Zircon 内核,最终能够运行原生的 shell 程序。 在此过程中我们将体会 Zircon 微内核的设计理念,感受如何用 Rust 语言以一种现代的方式编写系统软件,在项目中实现理论与实践的融合。 与传统操作系统开发不同的是,zCore 使用一种自顶向下的方法:首先基于宿主系统已有的功能,在用户态实现一个能够工作的 libOS,然后再逐步替换底层实现, \"移植\"回裸机环境中运行。因此我们更关注系统的整体设计,从高层视角看待 OS 如何为用户提供服务,而不纠结于底层硬件细节。 鉴于此,本教程假设读者了解操作系统基本概念和原理,具有常用的 Linux 系统使用经验,并且会使用 Rust 语言编写简单程序。 如果读者不熟悉操作系统和 Rust 语言,希望以自底向上方法从零构建操作系统, rCore Tutorial 可能是更好的选择。 如果你准备好了,让我们开始吧!","breadcrumbs":"自己动手山寨操作系统:自顶向下方法","id":"1","title":"自己动手山寨操作系统:自顶向下方法"},"10":{"body":"在系统调用中,用户进程会传入一个内核对象的句柄,然后内核会根据系统调用的类型,尝试将其转换成特定类型的对象。 于是这里产生了一个很重要的需求:将接口 Arc 转换成具体类型的结构 Arc where T: KernelObject。 这种操作在面向对象语言中称为 向下转换(downcast) 。 在大部分编程语言中,向下转换都是一件非常轻松的事情。例如在 C/C++ 中,我们可以这样写: struct KernelObject {...};\nstruct DummyObject: KernelObject {...}; KernelObject *base = ...;\n// C 风格:强制类型转换\nDummyObject *dummy = (DummyObject*)(base);\n// C++ 风格:动态类型转换\nDummyObject *dummy = dynamic_cast(base); 但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下: # use core::any::Any;\n# use alloc::sync::Arc;\n#\ntrait KernelObject: Any + Send + Sync {}\nfn downcast_v1(object: Arc) -> Arc { object.downcast::().unwrap()\n}\nfn downcast_v2(object: Arc) -> Arc { let object: Arc = object; object.downcast::().unwrap()\n} 当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库: [dependencies]\ndowncast-rs = { version = \"1.2.0\", default-features = false } (题外话:这个库原来是不支持 no_std 的,zCore 有这个需求,于是就顺便帮他实现了一把) 按照它文档的描述,我们要为自己的接口实现向下转换,只需以下修改: // src/object/mod.rs\nuse core::fmt::Debug;\nuse downcast_rs::{impl_downcast, DowncastSync}; pub trait KernelObject: DowncastSync + Debug {...}\nimpl_downcast!(sync KernelObject); 其中 DowncastSync 代替了原来的 Send + Sync,Debug 用于出错时输出调试信息。 impl_downcast! 宏用来帮我们自动生成转换函数,然后就可以用 downcast_arc 来对 Arc 做向下转换了。我们直接来测试一把: // src/object/object.rs\n#[test]\nfn downcast() { let dummy = DummyObject::new(); let object: Arc = dummy; let _result: Arc = object.downcast_arc::().unwrap();\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.47s Running target/debug/deps/zcore-ae1be84852989b13 running 2 tests\ntest object::downcast ... ok\ntest object::tests::dummy_object ... ok","breadcrumbs":"内核对象 » 实现接口到具体类型的向下转换","id":"10","title":"实现接口到具体类型的向下转换"},"11":{"body":"上面我们已经完整实现了一个内核对象,代码看起来很简洁。但当我们要实现更多对象的时候,就会发现一个问题: 这些对象拥有一些公共属性,接口方法也有共同的实现。 在传统 OOP 语言中,我们通常使用 继承(inheritance) 来复用这些公共代码:子类 B 可以继承父类 A,然后自动拥有父类的所有字段和方法。 继承是一个很强大的功能,但在长期实践中人们也逐渐发现了它的弊端。有兴趣的读者可以看一看知乎上的探讨: 面向对象编程的弊端是什么? 。 经典著作《设计模式》中就鼓励大家 使用组合代替继承 。而一些现代的编程语言,如 Go 和 Rust,甚至直接抛弃了继承。在 Rust 中,通常使用组合结构和 Deref trait 来部分模拟继承。 继承野蛮,trait 文明。 —— 某 Rust 爱好者 接下来我们模仿 downcast-rs 库的做法,使用一种基于宏的代码生成方案,来实现 KernelObject 的继承。 当然这只是抛砖引玉,如果读者自己实现了,或者了解到社区中有更好的解决方案,也欢迎指出。 具体做法是这样的: 使用一个 struct 来提供所有的公共属性和方法,作为所有子类的第一个成员。 为子类实现 trait 接口,所有方法直接委托给内部 struct 完成。这部分使用宏来自动生成模板代码。 而所谓的内部 struct,其实就是我们上面实现的 DummyObject。为了更好地体现它的功能,我们给他改个名叫 KObjectBase: // src/object/mod.rs\n/// 内核对象核心结构\npub struct KObjectBase { /// 对象 ID pub id: KoID, inner: Mutex,\n} /// `KObjectBase` 的内部可变部分\n#[derive(Default)]\nstruct KObjectBaseInner { name: String,\n} 接下来我们把它的构造函数改为实现 Default trait,并且公共属性和方法都指定为 pub: // src/object/mod.rs\nimpl Default for KObjectBase { /// 创建一个新 `KObjectBase` fn default() -> Self { KObjectBase { id: Self::new_koid(), inner: Default::default(), } }\n}\nimpl KObjectBase { /// 生成一个唯一的 ID fn new_koid() -> KoID {...} /// 获取对象名称 pub fn name(&self) -> String {...} /// 设置对象名称 pub fn set_name(&self, name: &str) {...}\n} 最后来写一个魔法的宏! // src/object/mod.rs\n/// 为内核对象 struct 自动实现 `KernelObject` trait 的宏。\n#[macro_export] // 导出宏,可在 crate 外部使用\nmacro_rules! impl_kobject { // 匹配类型名,并可以提供函数覆盖默认实现 ($class:ident $( $fn:tt )*) => { // 为对象实现 KernelObject trait,方法直接转发到内部 struct impl KernelObject for $class { fn id(&self) -> KoID { // 直接访问内部的 pub 属性 self.base.id } fn type_name(&self) -> &str { // 用 stringify! 宏将输入转成字符串 stringify!($class) } // 注意宏里面的类型要写完整路径,例如:alloc::string::String fn name(&self) -> alloc::string::String { self.base.name() } fn set_name(&self, name: &str){ // 直接访问内部的 pub 方法 self.base.set_name(name) } // 可以传入任意数量的函数,覆盖 trait 的默认实现 $( $fn )* } // 为对象实现 Debug trait impl core::fmt::Debug for $class { fn fmt( &self, f: &mut core::fmt::Formatter<'_>, ) -> core::result::Result<(), core::fmt::Error> { // 输出对象类型、ID 和名称 f.debug_tuple(&stringify!($class)) .field(&self.id()) .field(&self.name()) .finish() } } };\n} 轮子已经造好了!让我们看看如何用它方便地实现一个内核对象,仍以 DummyObject 为例: // src/object/mod.rs\n/// 空对象\npub struct DummyObject { // 其中必须包含一个名为 `base` 的 `KObjectBase` base: KObjectBase,\n} // 使用刚才的宏,声明其为内核对象,自动生成必要的代码\nimpl_kobject!(DummyObject); impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { base: KObjectBase::default(), }) }\n} 是不是方便了很多?最后按照惯例,用单元测试检验实现的正确性: // src/object/mod.rs\n#[test]\nfn impl_kobject() { use alloc::format; let dummy = DummyObject::new(); let object: Arc = dummy; assert_eq!(object.type_name(), \"DummyObject\"); assert_eq!(object.name(), \"\"); object.set_name(\"dummy\"); assert_eq!(object.name(), \"dummy\"); assert_eq!( format!(\"{:?}\", object), format!(\"DummyObject({}, \\\"dummy\\\")\", object.id()) ); let _result: Arc = object.downcast_arc::().unwrap();\n} 有兴趣的读者可以继续探索使用功能更强大的 过程宏(proc_macro) ,进一步简化实现新内核对象所需的模板代码。 如果能把上面的代码块缩小成下面这两行,就更加完美了: #[KernelObject]\npub struct DummyObject;","breadcrumbs":"内核对象 » 模拟继承:用宏自动生成接口实现代码","id":"11","title":"模拟继承:用宏自动生成接口实现代码"},"12":{"body":"在这一节中我们用 Rust 语言实现了 Zircon 最核心的 内核对象 概念。在此过程中涉及到 Rust 的一系列语言特性和设计模式: 使用 trait 实现接口 使用 内部可变性 模式实现并发对象 基于社区解决方案实现 trait 到 struct 的 向下转换 使用组合模拟继承,并使用 宏 实现模板代码的自动生成 由于 Rust 独特的 面向对象编程特性 ,我们在实现内核对象的过程中遇到了一定的挑战。 不过万事开头难,解决这些问题为整个项目打下了坚实基础,后面实现新的内核对象就会变得简单很多。 在下一节中,我们将介绍内核对象相关的另外两个概念:句柄和权限,并实现内核对象的存储和访问。","breadcrumbs":"内核对象 » 总结","id":"12","title":"总结"},"13":{"body":"","breadcrumbs":"内核对象 » 对象管理器:Process 对象","id":"13","title":"对象管理器:Process 对象"},"14":{"body":"","breadcrumbs":"内核对象 » 句柄和权限","id":"14","title":"句柄和权限"},"15":{"body":"","breadcrumbs":"内核对象 » 实现第一个内核对象","id":"15","title":"实现第一个内核对象"},"16":{"body":"","breadcrumbs":"内核对象 » 存储内核对象句柄","id":"16","title":"存储内核对象句柄"},"17":{"body":"","breadcrumbs":"内核对象 » 根据句柄查找内核对象","id":"17","title":"根据句柄查找内核对象"},"18":{"body":"","breadcrumbs":"内核对象 » 对象传送器:Channel 对象","id":"18","title":"对象传送器:Channel 对象"},"19":{"body":"","breadcrumbs":"内核对象 » 创建一对内核对象","id":"19","title":"创建一对内核对象"},"2":{"body":"","breadcrumbs":"zCore 整体结构和设计模式","id":"2","title":"zCore 整体结构和设计模式"},"20":{"body":"","breadcrumbs":"内核对象 » 实现数据传输","id":"20","title":"实现数据传输"},"21":{"body":"","breadcrumbs":"任务管理","id":"21","title":"任务管理"},"22":{"body":"","breadcrumbs":"任务管理 » Zircon 任务管理体系","id":"22","title":"Zircon 任务管理体系"},"23":{"body":"","breadcrumbs":"任务管理 » 硬件抽象层与异步运行时","id":"23","title":"硬件抽象层与异步运行时"},"24":{"body":"","breadcrumbs":"任务管理 » 线程管理:Thread 对象","id":"24","title":"线程管理:Thread 对象"},"25":{"body":"","breadcrumbs":"任务管理 » 进程管理:Process 与 Job 对象","id":"25","title":"进程管理:Process 与 Job 对象"},"26":{"body":"","breadcrumbs":"内存管理","id":"26","title":"内存管理"},"27":{"body":"","breadcrumbs":"内存管理 » Zircon 内存管理模型","id":"27","title":"Zircon 内存管理模型"},"28":{"body":"","breadcrumbs":"内存管理 » 物理内存:VMO 对象","id":"28","title":"物理内存:VMO 对象"},"29":{"body":"","breadcrumbs":"内存管理 » 虚拟内存:VMAR 对象","id":"29","title":"虚拟内存:VMAR 对象"},"3":{"body":"","breadcrumbs":"Fuchsia OS 和 Zircon 微内核","id":"3","title":"Fuchsia OS 和 Zircon 微内核"},"30":{"body":"","breadcrumbs":"用户程序","id":"30","title":"用户程序"},"31":{"body":"","breadcrumbs":"用户程序 » Zircon 用户程序","id":"31","title":"Zircon 用户程序"},"32":{"body":"","breadcrumbs":"用户程序 » 加载 ELF 文件","id":"32","title":"加载 ELF 文件"},"33":{"body":"","breadcrumbs":"用户程序 » 上下文切换","id":"33","title":"上下文切换"},"34":{"body":"","breadcrumbs":"用户程序 » 系统调用","id":"34","title":"系统调用"},"4":{"body":"Zircon 是一个基于内核对象的系统。系统的功能被划分到若干组内核对象中。 作为一切的开始,本章首先构造了一个内核对象框架,作为后面实现的基础。 然后我们实现第一个内核对象 —— Process,它是所有对象的容器,也是将来我们操作对象的入口点。 最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信( IPC )的基础设施,也是传送对象的唯一管道。","breadcrumbs":"内核对象","id":"4","title":"内核对象"},"5":{"body":"","breadcrumbs":"内核对象 » 初识内核对象","id":"5","title":"初识内核对象"},"6":{"body":"TODO 详细内容可参考 Fuchsia 官方文档: 内核对象 。 在这一节中我们将在 Rust 中实现内核对象的概念。","breadcrumbs":"内核对象 » 内核对象简介","id":"6","title":"内核对象简介"},"7":{"body":"首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可: $ curl https://sh.rustup.rs -sSf | sh 具体安装方法可以参考 官方文档 。 接下来我们用 cargo 创建一个 Rust 库项目: $ cargo new --lib zcore\n$ cd zcore 我们将在这个 crate 中实现所有的内核对象,以库(lib)而不是可执行文件(bin)的形式组织代码,后面我们会依赖单元测试保证代码的正确性。 由于我们会用到一些不稳定(unstable)的语言特性,需要使用 nightly 版本的工具链。在项目根目录下创建一个 rust-toolchain 文件,指明使用的工具链版本: nightly-2020-06-04 这个程序库目前是在你的 Linux 或 macOS 上运行,但有朝一日它会成为一个真正的 OS 在裸机上运行。 为此我们需要移除对标准库的依赖,使其成为一个不依赖当前 OS 功能的库。在 lib.rs 的第一行添加声明: // src/lib.rs\n#![no_std]\nextern crate alloc; 现在我们可以尝试运行一下自带的单元测试,编译器可能会自动下载并安装工具链: $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.52s Running target/debug/deps/zcore-dc6d43637bc5df7a running 1 test\ntest tests::it_works ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out","breadcrumbs":"内核对象 » 建立项目","id":"7","title":"建立项目"},"8":{"body":"所有的内核对象有一系列共同的属性和方法,我们称这些方法为对象的公共 接口(Interface) 。 同一种方法在不同类型的对象中可能会有不同的行为,在面向对象语言中我们称其为 多态(Polymorphism) 。 Rust 是一门部分面向对象的语言,我们通常用它的 trait 实现接口和多态。 首先创建一个 KernelObject trait 作为内核对象的公共接口: // src/object/mod.rs\n/// 内核对象公共接口\npub trait KernelObject: Send + Sync { /// 获取对象 ID fn id(&self) -> KoID; /// 获取对象类型名 fn type_name(&self) -> &str; /// 获取对象名称 fn name(&self) -> String; /// 设置对象名称 fn set_name(&self, name: &str);\n} /// 对象 ID 类型\npub type KoID = u64; 这里的 Send + Sync 是一个约束所有 KernelObject 都要满足的前提条件,即它必须是一个 并发对象 。 所谓并发对象指的是 可以安全地被多线程共享访问 。事实上我们的内核本身就是一个共享地址空间的多线程程序,在裸机上每个 CPU 核都可以被视为一个并发执行的线程。 由于内核对象可能被多个线程同时访问,因此它必须是并发对象。","breadcrumbs":"内核对象 » 实现 KernelObject 接口","id":"8","title":"实现 KernelObject 接口"},"9":{"body":"接下来我们实现一个最简单的空对象 DummyObject,并为它实现 KernelObject 接口: // src/object/object.rs\nuse spin::Mutex; /// 空对象\n#[derive(Debug)]\npub struct DummyObject { id: KoID, inner: Mutex,\n} /// `DummyObject` 的内部可变部分\n#[derive(Default, Debug)]\nstruct DummyObjectInner { name: String,\n} 这里我们采用一种 内部可变性 的设计模式:将对象的所有可变的部分封装到一个内部对象 DummyObjectInner 中,并在原对象中用自旋锁 Mutex 把它包起来,剩下的其它字段都是不可变的。 Mutex 会用最简单的方式帮我们处理好并发访问问题:如果有其他人正在访问,我就在这里死等。 数据被 Mutex 包起来之后需要首先使用 lock() 拿到锁之后才能访问。此时并发访问已经安全,因此被包起来的结构自动具有了 Send + Sync 特性。 使用自旋锁引入了新的依赖库 spin ,需要在 Cargo.toml 中加入以下声明: [dependencies]\nspin = \"0.5\" 然后我们为新对象实现构造函数: // src/object/object.rs\nuse alloc::sync::Arc;\nuse core::sync::atomic::*; impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { id: Self::new_koid(), inner: Default::default(), }) } /// 生成一个唯一的 ID fn new_koid() -> KoID { static NEXT_KOID: AtomicU64 = AtomicU64::new(1024); NEXT_KOID.fetch_add(1, Ordering::SeqCst) }\n} 根据文档描述,每个内核对象都有唯一的 ID。为此我们需要实现一个全局的 ID 分配方法。这里采用的方法是用一个静态变量存放下一个待分配 ID 值,每次分配就原子地 +1。 ID 类型使用 u64,保证了数值空间足够大,在有生之年都不用担心溢出问题。在 Zircon 中 ID 从 1024 开始分配,1024 以下保留作内核内部使用。 另外注意这里 new 函数返回类型不是 Self 而是 Arc,这是为了以后方便而做的统一约定。 最后我们为它实现 KernelObject 接口: // src/object/object.rs\nimpl KernelObject for DummyObject { fn id(&self) -> KoID { self.id } fn type_name(&self) -> &str { \"DummyObject\" } fn name(&self) -> String { self.inner.lock().name.clone() } fn set_name(&self, name: &str) { self.inner.lock().name = String::from(name); }\n} 到此为止,我们已经迈出了万里长征第一步,实现了一个最简单的功能。有实现,就要有测试!即使最简单的代码也要保证它的行为符合我们预期。 只有对现有代码进行充分测试,在未来做添加和修改的时候,我们才有信心不会把事情搞砸。俗话讲\"万丈高楼平地起\",把地基打好才能盖摩天大楼。 为了证明上面代码的正确性,我们写一个简单的单元测试,替换掉自带的 it_works 函数: // src/object/object.rs\n#[cfg(test)]\nmod tests { use super::*; #[test] fn dummy_object() { let o1 = DummyObject::new(); let o2 = DummyObject::new(); assert_ne!(o1.id(), o2.id()); assert_eq!(o1.type_name(), \"DummyObject\"); assert_eq!(o1.name(), \"\"); o1.set_name(\"object1\"); assert_eq!(o1.name(), \"object1\"); }\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.53s Running target/debug/deps/zcore-ae1be84852989b13 running 1 test\ntest tests::dummy_object ... ok 大功告成!让我们用 cargo fmt 命令格式化一下代码,然后记得 git commit 及时保存进展。","breadcrumbs":"内核对象 » 实现一个空对象","id":"9","title":"实现一个空对象"}},"length":35,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.0},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.23606797749979},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.0},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.0},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.0},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0},"4":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"breadcrumbs":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.4142135623730951}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":2.23606797749979},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.23606797749979},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.0},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"d":{"df":0,"docs":{},"o":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.4142135623730951}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.4142135623730951},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":8,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"4":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}}},"title":{"root":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"18":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}}},"f":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"13":{"tf":1.0},"25":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"0":{"tf":1.0},"2":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}}
\ No newline at end of file
+{"doc_urls":["index.html#简明-zcore-教程","index.html#自己动手山寨操作系统自顶向下方法","zcore-intro.html#zcore-整体结构和设计模式","fuchsia.html#fuchsia-os-和-zircon-微内核","ch01-00-object.html#内核对象","ch01-01-kernel-object.html#初识内核对象","ch01-01-kernel-object.html#内核对象简介","ch01-01-kernel-object.html#建立项目","ch01-01-kernel-object.html#实现-kernelobject-接口","ch01-01-kernel-object.html#实现一个空对象","ch01-01-kernel-object.html#实现接口到具体类型的向下转换","ch01-01-kernel-object.html#模拟继承用宏自动生成接口实现代码","ch01-01-kernel-object.html#总结","ch01-02-process-object.html#对象管理器process-对象","ch01-02-process-object.html#句柄和权限","ch01-02-process-object.html#实现第一个内核对象","ch01-02-process-object.html#存储内核对象句柄","ch01-02-process-object.html#根据句柄查找内核对象","ch01-03-channel-object.html#对象传送器channel-对象","ch01-03-channel-object.html#创建一对内核对象","ch01-03-channel-object.html#实现数据传输","ch02-00-task.html#任务管理","ch02-01-zircon-task.html#zircon-任务管理体系","ch02-02-hal-async.html#硬件抽象层与异步运行时","ch02-03-thread-object.html#线程管理thread-对象","ch02-04-process-job-object.html#进程管理process-与-job-对象","ch03-00-memory.html#内存管理","ch03-01-zircon-memory.html#zircon-内存管理模型","ch03-02-vmo.html#物理内存vmo-对象","ch03-03-vmar.html#虚拟内存vmar-对象","ch04-00-userspace.html#用户程序","ch04-01-user-program.html#zircon-用户程序","ch04-02-load-elf.html#加载-elf-文件","ch04-03-context-switch.html#上下文切换","ch04-04-syscall.html#系统调用"],"index":{"documentStore":{"docInfo":{"0":{"body":0,"breadcrumbs":1,"title":1},"1":{"body":20,"breadcrumbs":0,"title":0},"10":{"body":120,"breadcrumbs":0,"title":0},"11":{"body":175,"breadcrumbs":0,"title":0},"12":{"body":7,"breadcrumbs":0,"title":0},"13":{"body":0,"breadcrumbs":1,"title":1},"14":{"body":0,"breadcrumbs":0,"title":0},"15":{"body":0,"breadcrumbs":0,"title":0},"16":{"body":0,"breadcrumbs":0,"title":0},"17":{"body":0,"breadcrumbs":0,"title":0},"18":{"body":0,"breadcrumbs":1,"title":1},"19":{"body":0,"breadcrumbs":0,"title":0},"2":{"body":0,"breadcrumbs":1,"title":1},"20":{"body":0,"breadcrumbs":0,"title":0},"21":{"body":0,"breadcrumbs":0,"title":0},"22":{"body":0,"breadcrumbs":1,"title":1},"23":{"body":0,"breadcrumbs":0,"title":0},"24":{"body":0,"breadcrumbs":1,"title":1},"25":{"body":0,"breadcrumbs":2,"title":2},"26":{"body":0,"breadcrumbs":0,"title":0},"27":{"body":0,"breadcrumbs":1,"title":1},"28":{"body":0,"breadcrumbs":1,"title":1},"29":{"body":0,"breadcrumbs":1,"title":1},"3":{"body":0,"breadcrumbs":3,"title":3},"30":{"body":0,"breadcrumbs":0,"title":0},"31":{"body":0,"breadcrumbs":1,"title":1},"32":{"body":0,"breadcrumbs":1,"title":1},"33":{"body":0,"breadcrumbs":0,"title":0},"34":{"body":0,"breadcrumbs":0,"title":0},"4":{"body":4,"breadcrumbs":0,"title":0},"5":{"body":0,"breadcrumbs":0,"title":0},"6":{"body":23,"breadcrumbs":0,"title":0},"7":{"body":67,"breadcrumbs":0,"title":0},"8":{"body":35,"breadcrumbs":1,"title":1},"9":{"body":138,"breadcrumbs":0,"title":0}},"docs":{"0":{"body":"","breadcrumbs":"简明 zCore 教程","id":"0","title":"简明 zCore 教程"},"1":{"body":"zCore 是用 Rust 语言重写的 Zircon 微内核,它是 Google 正在开发的 Fuchsia OS 中的底层内核。 本教程基于 zCore 的真实开发历史,还原其开发过程。带领读者一步一步用 Rust 实现自己的 Zircon 内核,最终能够运行原生的 shell 程序。 在此过程中我们将体会 Zircon 微内核的设计理念,感受如何用 Rust 语言以一种现代的方式编写系统软件,在项目中实现理论与实践的融合。 与传统操作系统开发不同的是,zCore 使用一种自顶向下的方法:首先基于宿主系统已有的功能,在用户态实现一个能够工作的 libOS,然后再逐步替换底层实现, \"移植\"回裸机环境中运行。因此我们更关注系统的整体设计,从高层视角看待 OS 如何为用户提供服务,而不纠结于底层硬件细节。 鉴于此,本教程假设读者了解操作系统基本概念和原理,具有常用的 Linux 系统使用经验,并且会使用 Rust 语言编写简单程序。 如果读者不熟悉操作系统和 Rust 语言,希望以自底向上方法从零构建操作系统, rCore Tutorial 可能是更好的选择。 如果你准备好了,让我们开始吧!","breadcrumbs":"自己动手山寨操作系统:自顶向下方法","id":"1","title":"自己动手山寨操作系统:自顶向下方法"},"10":{"body":"在系统调用中,用户进程会传入一个内核对象的句柄,然后内核会根据系统调用的类型,尝试将其转换成特定类型的对象。 于是这里产生了一个很重要的需求:将接口 Arc 转换成具体类型的结构 Arc where T: KernelObject。 这种操作在面向对象语言中称为 向下转换(downcast) 。 在大部分编程语言中,向下转换都是一件非常轻松的事情。例如在 C/C++ 中,我们可以这样写: struct KernelObject {...};\nstruct DummyObject: KernelObject {...}; KernelObject *base = ...;\n// C 风格:强制类型转换\nDummyObject *dummy = (DummyObject*)(base);\n// C++ 风格:动态类型转换\nDummyObject *dummy = dynamic_cast(base); 但在 Rust 中,由于其 trait 模型的限制,向下转换并不是一件容易的事情。 虽然标准库中提供了 Any trait,部分实现了动态类型的功能,但实际操作起来却困难重重。 不信邪的同学可以自己折腾一下: # use std::any::Any;\n# use std::sync::Arc;\n# fn main() {} trait KernelObject: Any + Send + Sync {}\nfn downcast_v1(object: Arc) -> Arc { object.downcast::().unwrap()\n}\nfn downcast_v2(object: Arc) -> Arc { let object: Arc = object; object.downcast::().unwrap()\n} 当然这个问题也困扰了 Rust 社区中的很多人。目前已经有人提出了一套不错的解决方案,就是我们接下来要引入的 downcast-rs 库: [dependencies]\ndowncast-rs = { version = \"1.2.0\", default-features = false } (题外话:这个库原来是不支持 no_std 的,zCore 有这个需求,于是就顺便帮他实现了一把) 按照它文档的描述,我们要为自己的接口实现向下转换,只需以下修改: // src/object/mod.rs\nuse core::fmt::Debug;\nuse downcast_rs::{impl_downcast, DowncastSync}; pub trait KernelObject: DowncastSync + Debug {...}\nimpl_downcast!(sync KernelObject); 其中 DowncastSync 代替了原来的 Send + Sync,Debug 用于出错时输出调试信息。 impl_downcast! 宏用来帮我们自动生成转换函数,然后就可以用 downcast_arc 来对 Arc 做向下转换了。我们直接来测试一把: // src/object/object.rs\n#[test]\nfn downcast() { let dummy = DummyObject::new(); let object: Arc = dummy; let _result: Arc = object.downcast_arc::().unwrap();\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.47s Running target/debug/deps/zcore-ae1be84852989b13 running 2 tests\ntest object::downcast ... ok\ntest object::tests::dummy_object ... ok","breadcrumbs":"内核对象 » 实现接口到具体类型的向下转换","id":"10","title":"实现接口到具体类型的向下转换"},"11":{"body":"上面我们已经完整实现了一个内核对象,代码看起来很简洁。但当我们要实现更多对象的时候,就会发现一个问题: 这些对象拥有一些公共属性,接口方法也有共同的实现。 在传统 OOP 语言中,我们通常使用 继承(inheritance) 来复用这些公共代码:子类 B 可以继承父类 A,然后自动拥有父类的所有字段和方法。 继承是一个很强大的功能,但在长期实践中人们也逐渐发现了它的弊端。有兴趣的读者可以看一看知乎上的探讨: 面向对象编程的弊端是什么? 。 经典著作《设计模式》中就鼓励大家 使用组合代替继承 。而一些现代的编程语言,如 Go 和 Rust,甚至直接抛弃了继承。在 Rust 中,通常使用组合结构和 Deref trait 来部分模拟继承。 继承野蛮,trait 文明。 —— 某 Rust 爱好者 接下来我们模仿 downcast-rs 库的做法,使用一种基于宏的代码生成方案,来实现 KernelObject 的继承。 当然这只是抛砖引玉,如果读者自己实现了,或者了解到社区中有更好的解决方案,也欢迎指出。 具体做法是这样的: 使用一个 struct 来提供所有的公共属性和方法,作为所有子类的第一个成员。 为子类实现 trait 接口,所有方法直接委托给内部 struct 完成。这部分使用宏来自动生成模板代码。 而所谓的内部 struct,其实就是我们上面实现的 DummyObject。为了更好地体现它的功能,我们给他改个名叫 KObjectBase: // src/object/mod.rs\n/// 内核对象核心结构\npub struct KObjectBase { /// 对象 ID pub id: KoID, inner: Mutex,\n} /// `KObjectBase` 的内部可变部分\n#[derive(Default)]\nstruct KObjectBaseInner { name: String,\n} 接下来我们把它的构造函数改为实现 Default trait,并且公共属性和方法都指定为 pub: // src/object/mod.rs\nimpl Default for KObjectBase { /// 创建一个新 `KObjectBase` fn default() -> Self { KObjectBase { id: Self::new_koid(), inner: Default::default(), } }\n}\nimpl KObjectBase { /// 生成一个唯一的 ID fn new_koid() -> KoID {...} /// 获取对象名称 pub fn name(&self) -> String {...} /// 设置对象名称 pub fn set_name(&self, name: &str) {...}\n} 最后来写一个魔法的宏! // src/object/mod.rs\n/// 为内核对象 struct 自动实现 `KernelObject` trait 的宏。\n#[macro_export] // 导出宏,可在 crate 外部使用\nmacro_rules! impl_kobject { // 匹配类型名,并可以提供函数覆盖默认实现 ($class:ident $( $fn:tt )*) => { // 为对象实现 KernelObject trait,方法直接转发到内部 struct impl KernelObject for $class { fn id(&self) -> KoID { // 直接访问内部的 pub 属性 self.base.id } fn type_name(&self) -> &str { // 用 stringify! 宏将输入转成字符串 stringify!($class) } // 注意宏里面的类型要写完整路径,例如:alloc::string::String fn name(&self) -> alloc::string::String { self.base.name() } fn set_name(&self, name: &str){ // 直接访问内部的 pub 方法 self.base.set_name(name) } // 可以传入任意数量的函数,覆盖 trait 的默认实现 $( $fn )* } // 为对象实现 Debug trait impl core::fmt::Debug for $class { fn fmt( &self, f: &mut core::fmt::Formatter<'_>, ) -> core::result::Result<(), core::fmt::Error> { // 输出对象类型、ID 和名称 f.debug_tuple(&stringify!($class)) .field(&self.id()) .field(&self.name()) .finish() } } };\n} 轮子已经造好了!让我们看看如何用它方便地实现一个内核对象,仍以 DummyObject 为例: // src/object/mod.rs\n/// 空对象\npub struct DummyObject { // 其中必须包含一个名为 `base` 的 `KObjectBase` base: KObjectBase,\n} // 使用刚才的宏,声明其为内核对象,自动生成必要的代码\nimpl_kobject!(DummyObject); impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { base: KObjectBase::default(), }) }\n} 是不是方便了很多?最后按照惯例,用单元测试检验实现的正确性: // src/object/mod.rs\n#[test]\nfn impl_kobject() { use alloc::format; let dummy = DummyObject::new(); let object: Arc = dummy; assert_eq!(object.type_name(), \"DummyObject\"); assert_eq!(object.name(), \"\"); object.set_name(\"dummy\"); assert_eq!(object.name(), \"dummy\"); assert_eq!( format!(\"{:?}\", object), format!(\"DummyObject({}, \\\"dummy\\\")\", object.id()) ); let _result: Arc = object.downcast_arc::().unwrap();\n} 有兴趣的读者可以继续探索使用功能更强大的 过程宏(proc_macro) ,进一步简化实现新内核对象所需的模板代码。 如果能把上面的代码块缩小成下面这两行,就更加完美了: #[KernelObject]\npub struct DummyObject;","breadcrumbs":"内核对象 » 模拟继承:用宏自动生成接口实现代码","id":"11","title":"模拟继承:用宏自动生成接口实现代码"},"12":{"body":"在这一节中我们用 Rust 语言实现了 Zircon 最核心的 内核对象 概念。在此过程中涉及到 Rust 的一系列语言特性和设计模式: 使用 trait 实现接口 使用 内部可变性 模式实现并发对象 基于社区解决方案实现 trait 到 struct 的 向下转换 使用组合模拟继承,并使用 宏 实现模板代码的自动生成 由于 Rust 独特的 面向对象编程特性 ,我们在实现内核对象的过程中遇到了一定的挑战。 不过万事开头难,解决这些问题为整个项目打下了坚实基础,后面实现新的内核对象就会变得简单很多。 在下一节中,我们将介绍内核对象相关的另外两个概念:句柄和权限,并实现内核对象的存储和访问。","breadcrumbs":"内核对象 » 总结","id":"12","title":"总结"},"13":{"body":"","breadcrumbs":"内核对象 » 对象管理器:Process 对象","id":"13","title":"对象管理器:Process 对象"},"14":{"body":"","breadcrumbs":"内核对象 » 句柄和权限","id":"14","title":"句柄和权限"},"15":{"body":"","breadcrumbs":"内核对象 » 实现第一个内核对象","id":"15","title":"实现第一个内核对象"},"16":{"body":"","breadcrumbs":"内核对象 » 存储内核对象句柄","id":"16","title":"存储内核对象句柄"},"17":{"body":"","breadcrumbs":"内核对象 » 根据句柄查找内核对象","id":"17","title":"根据句柄查找内核对象"},"18":{"body":"","breadcrumbs":"内核对象 » 对象传送器:Channel 对象","id":"18","title":"对象传送器:Channel 对象"},"19":{"body":"","breadcrumbs":"内核对象 » 创建一对内核对象","id":"19","title":"创建一对内核对象"},"2":{"body":"","breadcrumbs":"zCore 整体结构和设计模式","id":"2","title":"zCore 整体结构和设计模式"},"20":{"body":"","breadcrumbs":"内核对象 » 实现数据传输","id":"20","title":"实现数据传输"},"21":{"body":"","breadcrumbs":"任务管理","id":"21","title":"任务管理"},"22":{"body":"","breadcrumbs":"任务管理 » Zircon 任务管理体系","id":"22","title":"Zircon 任务管理体系"},"23":{"body":"","breadcrumbs":"任务管理 » 硬件抽象层与异步运行时","id":"23","title":"硬件抽象层与异步运行时"},"24":{"body":"","breadcrumbs":"任务管理 » 线程管理:Thread 对象","id":"24","title":"线程管理:Thread 对象"},"25":{"body":"","breadcrumbs":"任务管理 » 进程管理:Process 与 Job 对象","id":"25","title":"进程管理:Process 与 Job 对象"},"26":{"body":"","breadcrumbs":"内存管理","id":"26","title":"内存管理"},"27":{"body":"","breadcrumbs":"内存管理 » Zircon 内存管理模型","id":"27","title":"Zircon 内存管理模型"},"28":{"body":"","breadcrumbs":"内存管理 » 物理内存:VMO 对象","id":"28","title":"物理内存:VMO 对象"},"29":{"body":"","breadcrumbs":"内存管理 » 虚拟内存:VMAR 对象","id":"29","title":"虚拟内存:VMAR 对象"},"3":{"body":"","breadcrumbs":"Fuchsia OS 和 Zircon 微内核","id":"3","title":"Fuchsia OS 和 Zircon 微内核"},"30":{"body":"","breadcrumbs":"用户程序","id":"30","title":"用户程序"},"31":{"body":"","breadcrumbs":"用户程序 » Zircon 用户程序","id":"31","title":"Zircon 用户程序"},"32":{"body":"","breadcrumbs":"用户程序 » 加载 ELF 文件","id":"32","title":"加载 ELF 文件"},"33":{"body":"","breadcrumbs":"用户程序 » 上下文切换","id":"33","title":"上下文切换"},"34":{"body":"","breadcrumbs":"用户程序 » 系统调用","id":"34","title":"系统调用"},"4":{"body":"Zircon 是一个基于内核对象的系统。系统的功能被划分到若干组内核对象中。 作为一切的开始,本章首先构造了一个内核对象框架,作为后面实现的基础。 然后我们实现第一个内核对象 —— Process,它是所有对象的容器,也是将来我们操作对象的入口点。 最后会实现一个稍微复杂但是极其重要的对象 Channel,它是进程间通信( IPC )的基础设施,也是传送对象的唯一管道。","breadcrumbs":"内核对象","id":"4","title":"内核对象"},"5":{"body":"","breadcrumbs":"内核对象 » 初识内核对象","id":"5","title":"初识内核对象"},"6":{"body":"在动手编写我们的代码之前,需要首先进行调研和学习,对目标对象有一个全面系统的了解。 而了解一个项目设计的最好方式就是阅读官方提供的手册和文档。 让我们先来阅读一下 Fuchsia 官方文档: 内核对象 。这个链接是社区翻译的中文版,已经有些年头了。如果读者能够科学上网,推荐直接阅读 官方英文版 。 通过阅读文档,我们了解到与内核对象相关的三个重要概念: 对象(Object),句柄(Handle),权限(Rights) 。它们在 Zircon 内核中的角色和关系如下图所示: 简单来说: Zircon是一个基于对象的内核,内核资源被抽象封装在不同的 对象 中。 用户程序通过 句柄 与内核交互。句柄是对某一对象的引用,并且附加了特定的 权限 。 对象通过 引用计数 管理生命周期。当最后一个句柄关闭时,对象随之销毁。 此外在内核对象的文档中,还列举了一些 常用对象 。点击链接进去就能查看到这个对象的 具体描述 ,在页面最下方还列举了与这个对象相关的 全部系统调用 。 进一步查看系统调用的 API 定义 ,以及它的 行为描述 ,我们就能更深入地了解用户程序操作内核对象的一些细节: 创建:每一种内核对象都存在一个系统调用来创建它,例如 zx_channel_create 。 创建对象时一般需要传入一个参数选项 options,若创建成功则内核会将一个新句柄写入用户指定的内存中。 使用:获得对象句柄后可以通过若干系统调用对它进行操作,例如 zx_channel_write 。 这类系统调用一般需要传入句柄 handle 作为第一个参数,内核首先对其进行检查,如果句柄非法或者对象类型与系统调用不匹配就会报错。 接下来内核会检查句柄的权限是否满足操作的要求,例如 write 操作一般要求句柄具有 WRITE 权限,如果权限不满足就会继续报错。 关闭:当用户程序不再使用对象时,会调用 zx_handle_close 关闭句柄。当用户进程退出时,仍处于打开状态的句柄也都会自动关闭。 我们还发现,有一类 Object 系统调用是对所有内核对象都适用的。 这表明所有内核对象都有一些公共属性,例如 ID、名称等等。每一种内核对象也会有自己特有的属性。 其中一些 Object 系统调用和信号相关。Zircon 每个内核对象都附带有 32 个 信号(Signals) ,它们代表了不同类型的事件。 与传统 Unix 系统的信号不同,它不能异步地打断用户程序运行,而只能由用户程序主动地阻塞等待在某个对象的某些信号上面。 信号是 Zircon 内核中很重要的机制,不过这部分在前期不会涉及,我们留到第五章再具体实现。 以上我们了解了 Zircon 内核对象的相关概念和使用方式。接下来在这一节中,我们将用 Rust 实现内核对象的基本框架,以方便后续快速实现各种具体类型的内核对象。 从传统面向对象语言的视角看,我们只是在实现一个基类。但由于 Rust 语言模型的限制,这件事情需要用到一些特殊的技巧。","breadcrumbs":"内核对象 » 内核对象简介","id":"6","title":"内核对象简介"},"7":{"body":"首先我们需要安装 Rust 工具链。在 Linux 或 macOS 系统下,只需要用一个命令下载安装 rustup 即可: $ curl https://sh.rustup.rs -sSf | sh 具体安装方法可以参考 官方文档 。 接下来我们用 cargo 创建一个 Rust 库项目: $ cargo new --lib zcore\n$ cd zcore 我们将在这个 crate 中实现所有的内核对象,以库(lib)而不是可执行文件(bin)的形式组织代码,后面我们会依赖单元测试保证代码的正确性。 由于我们会用到一些不稳定(unstable)的语言特性,需要使用 nightly 版本的工具链。在项目根目录下创建一个 rust-toolchain 文件,指明使用的工具链版本: nightly-2020-06-04 这个程序库目前是在你的 Linux 或 macOS 上运行,但有朝一日它会成为一个真正的 OS 在裸机上运行。 为此我们需要移除对标准库的依赖,使其成为一个不依赖当前 OS 功能的库。在 lib.rs 的第一行添加声明: // src/lib.rs\n#![no_std]\nextern crate alloc; 现在我们可以尝试运行一下自带的单元测试,编译器可能会自动下载并安装工具链: $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.52s Running target/debug/deps/zcore-dc6d43637bc5df7a running 1 test\ntest tests::it_works ... ok test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out","breadcrumbs":"内核对象 » 建立项目","id":"7","title":"建立项目"},"8":{"body":"所有的内核对象有一系列共同的属性和方法,我们称这些方法为对象的公共 接口(Interface) 。 同一种方法在不同类型的对象中可能会有不同的行为,在面向对象语言中我们称其为 多态(Polymorphism) 。 Rust 是一门部分面向对象的语言,我们通常用它的 trait 实现接口和多态。 首先创建一个 KernelObject trait 作为内核对象的公共接口: // src/object/mod.rs\n/// 内核对象公共接口\npub trait KernelObject: Send + Sync { /// 获取对象 ID fn id(&self) -> KoID; /// 获取对象类型名 fn type_name(&self) -> &str; /// 获取对象名称 fn name(&self) -> String; /// 设置对象名称 fn set_name(&self, name: &str);\n} /// 对象 ID 类型\npub type KoID = u64; 这里的 Send + Sync 是一个约束所有 KernelObject 都要满足的前提条件,即它必须是一个 并发对象 。 所谓并发对象指的是 可以安全地被多线程共享访问 。事实上我们的内核本身就是一个共享地址空间的多线程程序,在裸机上每个 CPU 核都可以被视为一个并发执行的线程。 由于内核对象可能被多个线程同时访问,因此它必须是并发对象。","breadcrumbs":"内核对象 » 实现 KernelObject 接口","id":"8","title":"实现 KernelObject 接口"},"9":{"body":"接下来我们实现一个最简单的空对象 DummyObject,并为它实现 KernelObject 接口: // src/object/object.rs\nuse spin::Mutex; /// 空对象\n#[derive(Debug)]\npub struct DummyObject { id: KoID, inner: Mutex,\n} /// `DummyObject` 的内部可变部分\n#[derive(Default, Debug)]\nstruct DummyObjectInner { name: String,\n} 这里我们采用一种 内部可变性 的设计模式:将对象的所有可变的部分封装到一个内部对象 DummyObjectInner 中,并在原对象中用自旋锁 Mutex 把它包起来,剩下的其它字段都是不可变的。 Mutex 会用最简单的方式帮我们处理好并发访问问题:如果有其他人正在访问,我就在这里死等。 数据被 Mutex 包起来之后需要首先使用 lock() 拿到锁之后才能访问。此时并发访问已经安全,因此被包起来的结构自动具有了 Send + Sync 特性。 使用自旋锁引入了新的依赖库 spin ,需要在 Cargo.toml 中加入以下声明: [dependencies]\nspin = \"0.5\" 然后我们为新对象实现构造函数: // src/object/object.rs\nuse alloc::sync::Arc;\nuse core::sync::atomic::*; impl DummyObject { /// 创建一个新 `DummyObject` pub fn new() -> Arc { Arc::new(DummyObject { id: Self::new_koid(), inner: Default::default(), }) } /// 生成一个唯一的 ID fn new_koid() -> KoID { static NEXT_KOID: AtomicU64 = AtomicU64::new(1024); NEXT_KOID.fetch_add(1, Ordering::SeqCst) }\n} 根据文档描述,每个内核对象都有唯一的 ID。为此我们需要实现一个全局的 ID 分配方法。这里采用的方法是用一个静态变量存放下一个待分配 ID 值,每次分配就原子地 +1。 ID 类型使用 u64,保证了数值空间足够大,在有生之年都不用担心溢出问题。在 Zircon 中 ID 从 1024 开始分配,1024 以下保留作内核内部使用。 另外注意这里 new 函数返回类型不是 Self 而是 Arc,这是为了以后方便而做的统一约定。 最后我们为它实现 KernelObject 接口: // src/object/object.rs\nimpl KernelObject for DummyObject { fn id(&self) -> KoID { self.id } fn type_name(&self) -> &str { \"DummyObject\" } fn name(&self) -> String { self.inner.lock().name.clone() } fn set_name(&self, name: &str) { self.inner.lock().name = String::from(name); }\n} 到此为止,我们已经迈出了万里长征第一步,实现了一个最简单的功能。有实现,就要有测试!即使最简单的代码也要保证它的行为符合我们预期。 只有对现有代码进行充分测试,在未来做添加和修改的时候,我们才有信心不会把事情搞砸。俗话讲\"万丈高楼平地起\",把地基打好才能盖摩天大楼。 为了证明上面代码的正确性,我们写一个简单的单元测试,替换掉自带的 it_works 函数: // src/object/object.rs\n#[cfg(test)]\nmod tests { use super::*; #[test] fn dummy_object() { let o1 = DummyObject::new(); let o2 = DummyObject::new(); assert_ne!(o1.id(), o2.id()); assert_eq!(o1.type_name(), \"DummyObject\"); assert_eq!(o1.name(), \"\"); o1.set_name(\"object1\"); assert_eq!(o1.name(), \"object1\"); }\n} $ cargo test Finished test [unoptimized + debuginfo] target(s) in 0.53s Running target/debug/deps/zcore-ae1be84852989b13 running 1 test\ntest tests::dummy_object ... ok 大功告成!让我们用 cargo fmt 命令格式化一下代码,然后记得 git commit 及时保存进展。","breadcrumbs":"内核对象 » 实现一个空对象","id":"9","title":"实现一个空对象"}},"length":35,"save":true},"fields":["title","body","breadcrumbs"],"index":{"body":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"3":{"2":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"6":{"tf":1.0}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.0},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.0},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":4,"docs":{"11":{"tf":2.23606797749979},"6":{"tf":1.0},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.0},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"6":{"tf":1.4142135623730951}},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"句":{"df":0,"docs":{},"柄":{"df":0,"docs":{},"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"权":{"df":0,"docs":{},"限":{"df":0,"docs":{},"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.0},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.0},"25":{"tf":1.0},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"d":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"6":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.4142135623730951}}}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.0},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0},"4":{"tf":1.0},"6":{"tf":2.23606797749979},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"x":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"c":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"breadcrumbs":{"root":{"0":{".":{"4":{"7":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"5":{"2":{"df":1,"docs":{"7":{"tf":1.0}}},"3":{"df":1,"docs":{"9":{"tf":1.0}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"4":{"df":1,"docs":{"7":{"tf":1.0}}},"6":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"7":{"tf":2.0}}},"1":{".":{"2":{".":{"0":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"2":{"0":{"2":{"0":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}},"3":{"2":{"df":1,"docs":{"6":{"tf":1.0}}},"df":0,"docs":{}},"_":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}}}}}},"a":{"df":0,"docs":{},"e":{"1":{"b":{"df":0,"docs":{},"e":{"8":{"4":{"8":{"5":{"2":{"9":{"8":{"9":{"b":{"1":{"3":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"l":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}}},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":1,"docs":{"6":{"tf":1.0}}}},"r":{"c":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"df":2,"docs":{"10":{"tf":2.23606797749979},"11":{"tf":1.0}}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"t":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}}},"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}},"t":{"df":0,"docs":{},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"n":{"df":0,"docs":{},"e":{"!":{"(":{"df":0,"docs":{},"o":{"1":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"df":0,"docs":{},"u":{"6":{"4":{":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"(":{"1":{"0":{"2":{"4":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}},"df":1,"docs":{"11":{"tf":1.0}}},"c":{"/":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"o":{".":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"l":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.7320508075688772},"9":{"tf":1.4142135623730951}}}}}},"d":{"df":1,"docs":{"7":{"tf":1.0}}},"df":1,"docs":{"10":{"tf":1.4142135623730951}},"f":{"df":0,"docs":{},"g":{"(":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":2,"docs":{"18":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}}},"df":0,"docs":{}},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{":":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"o":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"r":{"df":0,"docs":{},"e":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"m":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"f":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"<":{"'":{"_":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"u":{"df":1,"docs":{"8":{"tf":1.0}}}},"r":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":2,"docs":{"11":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"r":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"d":{"c":{"6":{"d":{"4":{"3":{"6":{"3":{"7":{"b":{"c":{"5":{"d":{"df":0,"docs":{},"f":{"7":{"a":{"df":1,"docs":{"7":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.0}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"f":{"df":0,"docs":{},"o":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.7320508075688772}}}}}},"df":0,"docs":{}},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"n":{"d":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"r":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"df":1,"docs":{"11":{"tf":1.0}}}},"i":{"df":0,"docs":{},"v":{"df":0,"docs":{},"e":{"(":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"_":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{":":{":":{"df":0,"docs":{},"{":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"v":{"1":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"2":{"<":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":1.0}},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":2,"docs":{"10":{"tf":2.0},"11":{"tf":2.0}}},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{")":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":2.6457513110645907},"9":{"tf":2.8284271247461903}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}},"y":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"c":{"_":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"*":{">":{"(":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.4142135623730951}}}},"x":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"f":{".":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"_":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"l":{"df":0,"docs":{},"s":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":1,"docs":{"11":{"tf":1.0}},"e":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"10":{"tf":1.0}}}}}},"df":0,"docs":{}},"i":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"l":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"m":{"df":0,"docs":{},"t":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}}},"n":{":":{"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":3.4641016151377544},"8":{"tf":2.0},"9":{"tf":2.6457513110645907}}},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"t":{"!":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":3,"docs":{"1":{"tf":1.0},"3":{"tf":1.4142135623730951},"6":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"g":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"o":{"df":1,"docs":{"11":{"tf":1.0}},"o":{"df":0,"docs":{},"g":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"t":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{":":{"/":{"/":{"df":0,"docs":{},"s":{"df":0,"docs":{},"h":{".":{"df":0,"docs":{},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"u":{"df":0,"docs":{},"p":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"i":{"d":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":4,"docs":{"11":{"tf":2.23606797749979},"6":{"tf":1.0},"8":{"tf":1.4142135623730951},"9":{"tf":2.8284271247461903}}},"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"m":{"df":0,"docs":{},"p":{"df":0,"docs":{},"l":{"_":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"!":{"(":{"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"!":{"(":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":1,"docs":{"11":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":2,"docs":{"11":{"tf":2.23606797749979},"9":{"tf":1.4142135623730951}}}}},"n":{"df":0,"docs":{},"h":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}}}},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"f":{"a":{"c":{"df":1,"docs":{"8":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"p":{"c":{"df":1,"docs":{"4":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":4,"docs":{"10":{"tf":3.3166247903554},"11":{"tf":2.449489742783178},"8":{"tf":2.23606797749979},"9":{"tf":1.7320508075688772}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":3.0}},"e":{":":{":":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"f":{"a":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"d":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.7320508075688772}}},"df":0,"docs":{}}}},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":1,"docs":{"7":{"tf":1.0}},"o":{"df":1,"docs":{"1":{"tf":1.0}}},")":{"df":0,"docs":{},"而":{"df":0,"docs":{},"不":{"df":0,"docs":{},"是":{"df":0,"docs":{},"可":{"df":0,"docs":{},"执":{"df":0,"docs":{},"行":{"df":0,"docs":{},"文":{"df":0,"docs":{},"件":{"df":0,"docs":{},"(":{"b":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}}}}}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"u":{"df":0,"docs":{},"x":{"df":2,"docs":{"1":{"tf":1.0},"7":{"tf":1.4142135623730951}}}}}},"o":{"c":{"df":0,"docs":{},"k":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"m":{"a":{"c":{"df":0,"docs":{},"o":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}},"r":{"df":0,"docs":{},"o":{"_":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":0,"docs":{},"p":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"r":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":1,"docs":{"11":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{},"e":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}}}},"df":0,"docs":{}},"o":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"11":{"tf":1.0}},"e":{"df":0,"docs":{},"x":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":1,"docs":{"11":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}},"df":1,"docs":{"9":{"tf":1.7320508075688772}}}}}}},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":3,"docs":{"11":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.4142135623730951}}},"x":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{".":{"df":0,"docs":{},"f":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"c":{"df":0,"docs":{},"h":{"_":{"a":{"d":{"d":{"(":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"df":1,"docs":{"7":{"tf":1.4142135623730951}}}}}}}},"o":{"_":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"d":{"df":2,"docs":{"10":{"tf":1.0},"7":{"tf":1.0}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"o":{"1":{".":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"1":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":1,"docs":{"9":{"tf":1.0}}},"2":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{}}},"df":1,"docs":{"9":{"tf":1.0}}},"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{":":{":":{"<":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":1,"docs":{"10":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"_":{"a":{"df":0,"docs":{},"r":{"c":{":":{":":{"<":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{">":{"(":{")":{".":{"df":0,"docs":{},"u":{"df":0,"docs":{},"n":{"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"a":{"df":0,"docs":{},"p":{"df":2,"docs":{"10":{"tf":1.0},"11":{"tf":1.0}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"\"":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"1":{"df":1,"docs":{"9":{"tf":1.0}}},":":{":":{"d":{"df":0,"docs":{},"o":{"df":0,"docs":{},"w":{"df":0,"docs":{},"n":{"c":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":0,"docs":{},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"10":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"df":3,"docs":{"10":{"tf":1.7320508075688772},"11":{"tf":1.4142135623730951},"6":{"tf":1.4142135623730951}},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"句":{"df":0,"docs":{},"柄":{"df":0,"docs":{},"(":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"df":0,"docs":{},")":{"df":0,"docs":{},",":{"df":0,"docs":{},"权":{"df":0,"docs":{},"限":{"df":0,"docs":{},"(":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"h":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}}}}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{},"k":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"o":{"df":0,"docs":{},"p":{"df":1,"docs":{"11":{"tf":1.0}}}},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"r":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"q":{"c":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"df":0,"docs":{}},"s":{"df":3,"docs":{"1":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}},"u":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}},"p":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"df":0,"docs":{},"y":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"p":{"df":0,"docs":{},"h":{"df":1,"docs":{"8":{"tf":1.0}}}}}}}}}},"r":{"df":0,"docs":{},"o":{"c":{"_":{"df":0,"docs":{},"m":{"a":{"c":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":3,"docs":{"13":{"tf":1.4142135623730951},"25":{"tf":1.4142135623730951},"4":{"tf":1.0}}}}}},"df":0,"docs":{}}},"u":{"b":{"df":4,"docs":{"10":{"tf":1.0},"11":{"tf":3.1622776601683795},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"df":0,"docs":{}}},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"u":{"df":0,"docs":{},"l":{"df":0,"docs":{},"t":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"s":{"df":2,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":1.0}}},"u":{"df":0,"docs":{},"n":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}}},"s":{"df":0,"docs":{},"t":{"df":7,"docs":{"1":{"tf":2.23606797749979},"10":{"tf":1.4142135623730951},"11":{"tf":1.7320508075688772},"12":{"tf":1.7320508075688772},"6":{"tf":1.4142135623730951},"7":{"tf":1.7320508075688772},"8":{"tf":1.0}},"u":{"df":0,"docs":{},"p":{"df":1,"docs":{"7":{"tf":1.0}}}}}}}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{".":{"b":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{".":{"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"11":{"tf":1.0}}},"df":0,"docs":{}},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"11":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{},"i":{"d":{"df":1,"docs":{"9":{"tf":1.0}}},"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{".":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"k":{"(":{")":{".":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}},"e":{".":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}},":":{":":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"w":{"_":{"df":0,"docs":{},"k":{"df":0,"docs":{},"o":{"df":0,"docs":{},"i":{"d":{"df":2,"docs":{"11":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":2,"docs":{"11":{"tf":1.4142135623730951},"9":{"tf":1.0}}}},"n":{"d":{"df":3,"docs":{"10":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}}},"df":0,"docs":{}},"t":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"h":{"df":1,"docs":{"7":{"tf":1.0}},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"l":{"df":1,"docs":{"1":{"tf":1.0}}}}}},"i":{"df":0,"docs":{},"g":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"l":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{}}}},"p":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{":":{":":{"df":0,"docs":{},"m":{"df":0,"docs":{},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":0,"docs":{},"x":{"df":1,"docs":{"9":{"tf":1.0}}}}}}}},"df":0,"docs":{}},"df":1,"docs":{"9":{"tf":1.4142135623730951}}}}},"r":{"c":{"/":{"df":0,"docs":{},"l":{"df":0,"docs":{},"i":{"b":{".":{"df":0,"docs":{},"r":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"/":{"df":0,"docs":{},"m":{"df":0,"docs":{},"o":{"d":{".":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"11":{"tf":2.23606797749979},"8":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{".":{"df":0,"docs":{},"r":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":2.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"s":{"df":0,"docs":{},"f":{"df":1,"docs":{"7":{"tf":1.0}}}},"t":{"a":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"c":{"df":2,"docs":{"10":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}}}},"d":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"y":{":":{":":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{},"s":{"df":0,"docs":{},"y":{"df":0,"docs":{},"n":{"c":{":":{":":{"a":{"df":0,"docs":{},"r":{"c":{"df":1,"docs":{"10":{"tf":1.0}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{},"r":{"df":3,"docs":{"11":{"tf":1.7320508075688772},"8":{"tf":1.4142135623730951},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"n":{"df":0,"docs":{},"g":{":":{":":{"df":0,"docs":{},"f":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"df":0,"docs":{},"m":{"(":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}},"df":3,"docs":{"11":{"tf":1.4142135623730951},"8":{"tf":1.0},"9":{"tf":1.4142135623730951}},"i":{"df":0,"docs":{},"f":{"df":0,"docs":{},"i":{"df":1,"docs":{"11":{"tf":1.0}}},"y":{"!":{"(":{"$":{"c":{"df":0,"docs":{},"l":{"a":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":1,"docs":{"11":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}},"df":0,"docs":{}}}}}}},"u":{"c":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":1.4142135623730951},"11":{"tf":3.0},"12":{"tf":1.0},"9":{"tf":1.4142135623730951}}}},"df":0,"docs":{}}}},"u":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":1,"docs":{"9":{"tf":1.0}}}}}},"y":{"df":0,"docs":{},"n":{"c":{"df":3,"docs":{"10":{"tf":1.4142135623730951},"8":{"tf":1.4142135623730951},"9":{"tf":1.0}},",":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"df":1,"docs":{"10":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"t":{"a":{"df":0,"docs":{},"r":{"df":0,"docs":{},"g":{"df":0,"docs":{},"e":{"df":0,"docs":{},"t":{"(":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}},"/":{"d":{"df":0,"docs":{},"e":{"b":{"df":0,"docs":{},"u":{"df":0,"docs":{},"g":{"/":{"d":{"df":0,"docs":{},"e":{"df":0,"docs":{},"p":{"df":0,"docs":{},"s":{"/":{"df":0,"docs":{},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}},"df":0,"docs":{}}}}}},"df":1,"docs":{"10":{"tf":1.0}},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.449489742783178},"11":{"tf":1.0},"7":{"tf":2.23606797749979},"9":{"tf":2.449489742783178}},"s":{":":{":":{"d":{"df":0,"docs":{},"u":{"df":0,"docs":{},"m":{"df":0,"docs":{},"m":{"df":0,"docs":{},"y":{"_":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"9":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"_":{"df":0,"docs":{},"w":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"k":{"df":1,"docs":{"7":{"tf":1.0}}}}}}},"df":0,"docs":{}}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.4142135623730951}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"o":{"df":0,"docs":{},"o":{"df":0,"docs":{},"l":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"n":{"df":1,"docs":{"7":{"tf":1.0}}}}},"df":0,"docs":{}}},"df":0,"docs":{}}}},"r":{"a":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":4,"docs":{"10":{"tf":2.0},"11":{"tf":2.8284271247461903},"12":{"tf":1.4142135623730951},"8":{"tf":1.7320508075688772}}}}},"df":0,"docs":{}},"u":{"df":0,"docs":{},"t":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":1,"docs":{"1":{"tf":1.0}}}}}}},"y":{"df":0,"docs":{},"p":{"df":0,"docs":{},"e":{"_":{"df":0,"docs":{},"n":{"a":{"df":0,"docs":{},"m":{"df":0,"docs":{},"e":{"(":{"&":{"df":0,"docs":{},"s":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":3,"docs":{"11":{"tf":1.0},"8":{"tf":1.0},"9":{"tf":1.0}}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":1,"docs":{"8":{"tf":1.0}}}}}},"u":{"6":{"4":{"df":2,"docs":{"8":{"tf":1.0},"9":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{},"n":{"df":0,"docs":{},"i":{"df":0,"docs":{},"x":{"df":1,"docs":{"6":{"tf":1.0}}}},"o":{"df":0,"docs":{},"p":{"df":0,"docs":{},"t":{"df":0,"docs":{},"i":{"df":0,"docs":{},"m":{"df":3,"docs":{"10":{"tf":1.0},"7":{"tf":1.0},"9":{"tf":1.0}}}}}}},"s":{"df":0,"docs":{},"t":{"a":{"b":{"df":0,"docs":{},"l":{"df":1,"docs":{"7":{"tf":1.0}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"s":{"df":3,"docs":{"10":{"tf":2.0},"11":{"tf":1.0},"9":{"tf":2.0}}}},"v":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":1,"docs":{"10":{"tf":1.0}}}}}}}},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.4142135623730951}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.4142135623730951}}}}},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":0,"docs":{},"e":{"df":1,"docs":{"6":{"tf":1.4142135623730951}}}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":5,"docs":{"0":{"tf":1.4142135623730951},"1":{"tf":1.7320508075688772},"10":{"tf":1.0},"2":{"tf":1.4142135623730951},"7":{"tf":1.4142135623730951}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":9,"docs":{"1":{"tf":1.7320508075688772},"12":{"tf":1.0},"22":{"tf":1.4142135623730951},"27":{"tf":1.4142135623730951},"3":{"tf":1.4142135623730951},"31":{"tf":1.4142135623730951},"4":{"tf":1.0},"6":{"tf":2.23606797749979},"9":{"tf":1.0}}}}},"df":0,"docs":{}}},"x":{"_":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"_":{"c":{"df":0,"docs":{},"r":{"df":1,"docs":{"6":{"tf":1.0}}}},"df":0,"docs":{},"w":{"df":0,"docs":{},"r":{"df":0,"docs":{},"i":{"df":0,"docs":{},"t":{"df":1,"docs":{"6":{"tf":1.0}}}}}}},"df":0,"docs":{}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"d":{"df":0,"docs":{},"l":{"df":0,"docs":{},"e":{"_":{"c":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"6":{"tf":1.0}}}}}},"df":0,"docs":{}},"df":0,"docs":{}}}},"df":0,"docs":{}}},"df":0,"docs":{}}},"df":0,"docs":{}}}}},"title":{"root":{"c":{"df":0,"docs":{},"h":{"a":{"df":0,"docs":{},"n":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":1,"docs":{"18":{"tf":1.0}}}}}}},"df":0,"docs":{}}},"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"f":{"df":1,"docs":{"32":{"tf":1.0}}}}},"f":{"df":0,"docs":{},"u":{"c":{"df":0,"docs":{},"h":{"df":0,"docs":{},"s":{"df":0,"docs":{},"i":{"a":{"df":1,"docs":{"3":{"tf":1.0}}},"df":0,"docs":{}}}}},"df":0,"docs":{}}},"j":{"df":0,"docs":{},"o":{"b":{"df":1,"docs":{"25":{"tf":1.0}}},"df":0,"docs":{}}},"k":{"df":0,"docs":{},"e":{"df":0,"docs":{},"r":{"df":0,"docs":{},"n":{"df":0,"docs":{},"e":{"df":0,"docs":{},"l":{"df":0,"docs":{},"o":{"b":{"df":0,"docs":{},"j":{"df":0,"docs":{},"e":{"c":{"df":0,"docs":{},"t":{"df":1,"docs":{"8":{"tf":1.0}}}},"df":0,"docs":{}}}},"df":0,"docs":{}}}}}}}},"o":{"df":0,"docs":{},"s":{"df":1,"docs":{"3":{"tf":1.0}}}},"p":{"df":0,"docs":{},"r":{"df":0,"docs":{},"o":{"c":{"df":0,"docs":{},"e":{"df":0,"docs":{},"s":{"df":0,"docs":{},"s":{"df":2,"docs":{"13":{"tf":1.0},"25":{"tf":1.0}}}}}},"df":0,"docs":{}}}},"t":{"df":0,"docs":{},"h":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"a":{"d":{"df":1,"docs":{"24":{"tf":1.0}}},"df":0,"docs":{}},"df":0,"docs":{}}}}},"v":{"df":0,"docs":{},"m":{"a":{"df":0,"docs":{},"r":{"df":1,"docs":{"29":{"tf":1.0}}}},"df":0,"docs":{},"o":{"df":1,"docs":{"28":{"tf":1.0}}}}},"z":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"r":{"df":0,"docs":{},"e":{"df":2,"docs":{"0":{"tf":1.0},"2":{"tf":1.0}}}}}},"df":0,"docs":{},"i":{"df":0,"docs":{},"r":{"c":{"df":0,"docs":{},"o":{"df":0,"docs":{},"n":{"df":4,"docs":{"22":{"tf":1.0},"27":{"tf":1.0},"3":{"tf":1.0},"31":{"tf":1.0}}}}},"df":0,"docs":{}}}}}}},"lang":"English","pipeline":["trimmer","stopWordFilter","stemmer"],"ref":"id","version":"0.9.5"},"results_options":{"limit_results":30,"teaser_word_count":30},"search_options":{"bool":"OR","expand":true,"fields":{"body":{"boost":1},"breadcrumbs":{"boost":1},"title":{"boost":2}}}}
\ No newline at end of file