FS21)*ϱ(p)*ϱ({(cAccessControl.User UserFolder qNtq.}qUdataq(U q(UBoboPOS.PersistentMappingqUPersistentMappingqtqtqQs.)*o;p amos/manage_importHack)*o;|(cOFS.Document Document qNtq.}q(U__name__qUstandard_html_footerqUglobalsq}qUrawqUqU_varsq }q u.!)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

An exiting new development being worked on for Zope is The Lever. The Lever will give Zope web application developers the ability to crank out and reuse their applications. Zope applications run the gamut of being just folder and document objects to complex data driven applications with pluggable brains and external methods. The lever will enable you to create such an application as a drop-in object. If you use a Tabula or Aqueduct and had a few reports and submission forms to create a shopping cart application for example, it could then be levered and dropped in anywhere as a Shopping Cart object.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.")*o;-(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope enables "stupid" data to become smart. Aqueduct gives smarts to relational data, Tabula gives it to desktop-based data (such as DBF files). While Aqueduct's data is external to Zope, Tabula brings its data inside. Besides speedy searches and flexible reports, Tabula adds intelligence to its data through computed fields, hierarchies and acquisition, plus all the features of DTML Scripting, especially direct querying.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.#)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT.

Sometimes DTML Scripting is not enough to get the job done. Getting into a full featured unrestricted language to extend the application at hand is what is needed. Enter External Methods. External Methods are written in Python and, like Pluggable Brains, have full access to all of the modules available for it. External Methods are natural extensions for Zope objects and are an easy way to interact with other system resources, like already existing Python modules, shell scripts, COM objects, and more. The possibilities are endless!

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.$)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT|

With Zope and Aqueduct, you can make stupid data "smart". Pluggable Brains turn flat records returned from Aqueduct Database Methods (SQL Queries) into intelligent objects. These objects benifit from all the Python and Zope object technologies, including inheritence and acquisition, and have full access to the large suite of modules available in Python and Zope.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.%)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope's DTML is more than just a variable insertion and batch processing language. It also exposes a powerful expression language. While this expression language can be used to compute variables and text complex conditions on the fly, it can also be used to directly call methods on Zope objects. This powerful feature, referred to as DTML Scripting is the first level of advanced web application development in Zope. It is editable through the web, secure, and flexible enough for many applications.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.)*o; (cOFS.Document Document qNtq.}q(UrawqU
qUglobalsq}qU__name__qU dtcTemplateqU_varsq }q u.-)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqTA

Sessions are a form of a long running transaction in Zope. Sessions allow the site to be worked on live without affecting its normal use. Only users who have joined a session to work on the site can see the changes being made. Everyone else won't see the changes until the session is saved. Sessions can span minutes or weeks, depending on the job.

There are numerous advantages to Sessions over some other means of site editing. The main advantage is the fact that you are modifying a live site, instead of working on a mirror copy of the site only to discover minor conflicts when you move it onto the live site. Sessions let you catch and fix errors that often happen when doing both major and minor overhauls such as broken links before your users do.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u..)*o;z(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

One of the main features of Zope's object database is its ability to Undo actions. This is not your typical undo found in text editors, spreadsheets, and other desktop applications. Made a change in some DTML that you didn't like? Wish you hadn't deleted those three images? Realize you uploaded the wrong file object? Clicking on the Undo tag (found on most Zope folderish objects, along with a few others) can help you. Since Zope is based on an object oriented database that stamps times on transactions (changes) to the system, Undo is a robust and solid benefit of this technology.

It also works with sessions. While you can discard changes made in a session instead of saving them, you might do some work in a session and make it public only to find out it's not as good as you thought. Since the session is saved as a single transaction, you can undo a massive amount of changes in one click. Be careful though - there is no redo!

qUglobalsq}qU__name__q U dtContentq U_varsq }q u./)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Another significant feature of Zope that comes from its web-to-objects philosophy is its entirely through the web management. A Zope is like its own little file system (but smarter, see Integrated object database above), and a web browser is its navigation and management interface. Combined with Zope's security options, this makes maintainence an anywhere-in-the-world task. Want to hand management of an area of the site off to someone else? Add a user folder to the folder you want to give them access to, make a user object with a name and a password, and tell them the URL to go to. If they have a browser that supports frames, they now have access. No setting up FTP and Telnet acounts. No requiring them to download and learn another client program. No having to deny users access because there's no client support for their particular operating system.

Zope's management interface is intuitive and simple. The left frame contains a tree of folderish objects (objects that can contain other Zope objects) for navigating to different points. The right frame is the workspace for the objects which uses a tabbed-style interface (a row of links across the top) for switching between different views and management options for an object. And it's fast loading due to its use of simple non-flashy images (which are less bulky and distracting) and light frame and table use. It uses standard HTML as much as possible to ensure the widest browser support without sacrificing usability. If you haven't done so already, check it out!

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.0)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT7

At the heart of Zope is an integrated object database. This database mirrors the URL used to access objects, and behaves like a file system. The neat trick, however, is that these are intelligent objects, not dumb files. Information can be shared easily and dynamically across folders and documents and other Zope objects without the need to batch process every file in the system to accomodate a small change, say in a header or footer.

These objects can be "dropped in" at any time and anywhere. Out of the box Zope comes with support for some already common objects such as folders, images, arbitrary files, and documents. These objects, through use of folder properties, acquisition, and DTML (Zope's Document Template Markup Language) already give you enough to make a dynamic smart site using objects similar to what is used with static, "dumb" means of publishing.

But there's more. Out of the box Zope also comes with support for User Folders for managing access at any level of the site (and all Zope objects have configurable security attributes). There are also Session objects which allow the entire site or portions of the site to be modified live without affecting normal use of the site. Only users that have joined the session can see the changes until they're commited to the main database. Lastly, there are MailHost objects for configuring access to SMTP servers for use with the DTML sendmail tag. These objects, along with others available seperately, may be combined together in any fashion to achieve the results you want. Database integration, discussion groups, desktop database publishing mechanisms are all examples of some of the other objects available for use on the Zope platform.

Furthermore, this object database is transactional, meaning that only succesful changes will be commited to the database. It supports multi-level Undo, allowing the state of objects to be rolled back to previous versions.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.1)*o;`(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

An added benefit of Zope's web-to-object mapping is that URL's address objects directly and most importantly make sense. Instead of addressing an object with a URL like:

/blu/347FGNNFUY2387H49YH796YY@874374NN.U897632S1?form_id=309823&action=nameForm&pid=438095739

You can use a URL like

/blu/forms/nameForm?form_id=309823

This calls the method (or Document) nameForm on the object forms contained by the object blu, and passes the parameter form_id to the method. This is more in step with traditional file-based publishing which is a hierarchy of folders/directories containing HTML documents. But now, the folders and documents have brains. And those brains don't tax yours by forcing you to manage long and ugly object access keys. So using a regular URL you can communicate with any object in the system directly. All through a regular web browser.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.2)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT-

Part of Zope's security model is based on the User Folder At any step in a URL, you can add a UserFolder for that customer. This is their part of the URL and the UserFolder holds their admin folks. They, in turn, can create sub-URLs and add UserFolders beneath. Have you lost control? No, because anyone allowed above can get in below. Moreover, if the customer goes away, you delete their URL and all of their users, their customer's users, etc. go as well.

To the browser, Zope uses standard HTTP Authentication. Not only does this eliminate the hassle of making and maintaining an HTML form based login screen, but it also avoids the hassle of tracking an authenticated user through cookies. Furthermore, the information exposed to DTML allows you to write documents that can show or not show certain portions based on the authentication roles of a user. Lastly, Zope's security model takes extra care to ensure that users deep down in the hierarchy cannot affect or steal from above without the authorization to do so.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.4)*o;(cOFS.Image Image qNtq.}q(UsizeqM U content_typeqU image/gifqUdataq(U5q(U OFS.ImageqUPdataq tq tq QU__name__q Udatasharing1.gifq UtitleqUdatasharing figurequ.5)*o; $(cOFS.Image Pdata qNtq.}qUdataqT GIF89af3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3wUD"wUD"wUD"ݻwwwUUUDDD""",H*\ȰÇ#JHŋ3N 1Ə C|hEGǒʗȜ93aɓ8;)O`mHxd 'O 8则{ճ'HiY/Wؠ# w p# 2nY+]W.sU]uڹOnGrMk#uq&8{5߀FxZK%s f*G|"h(,0xN2HRV)ٸb}2٤NXbj!J[aǚ}HdYIuQJ L:Q\-Y%y$fDԬCoF9@]nf%mNYjh r۝X9P if9)n(YFכ}ti::>j"*jy穰ƚd L8=} LS@ PJԥX$R'0Rb!|j0'Up"u!iI2wFj9ۢU$q )kl 0tWbT/•}g`wVb S!y*pk 48PIֺmE ʶI$ʫNT\=@$fܼfQR2hlJ'+*ѫΊݿRV?6UZ38Mlw^1fu,)_96 BiQJյ^ kZƱ9M݄o{Rm+[Q:ΩD[|Kܪ7#PW|1eIcbP1Jk])qYяWd2~dSowhF[yȀlLj0|S>ܵoL:+9H&qlM0 Ua\lp3S/rjfG:f.܍tkCM4'2אN>F9.֟K&f>l±X쵰Mb;xagt[h"wYE#wmg6d 2ۉ?{Wo(`!n/х2}]Yrf7c[2p;qs.3)*o;(cOFS.Document Document qNtq.}q(U__name__qU dtContentqUglobalsq}qUrawqT

Problem: You have a common footer that you want on every page in your site. Well, not every page. There's one folder that needs a slightly different footer, but only that folder and its subfolders need it. Another problem: in that footer you want to have a feedback button to send email to someone about the site, but that someone can change and may need to be different in certain folders, and go unaffected in others. Solution: Acquisition!

Think of Acquisition as a sort of run-time inheritence (for the object savvy). Another way of looking at it is Environmental inheritence. When you're at work, your phone number is different than your phone number at home. You're the same person in both places, but your phone number changes depending on where you are. You acquire it from your environment. Acquisition is the same thing. Let's show how this is being used in the Objects section of this QuickStart.

Data Sharing Tree

You'll notice that every item in this tree that expands into content is indented in the tree properly and closes with a horizontal rule. While every document could have had a closing <HR> added at the end of it by hand, what if suddenly we decided to change the width of the rule or set it to noshade? Or even wanted to change with a different element such as an image? We'd have to go into and change each document by hand. Unacceptable. Instead, we use Acquisition. In the Outline (1) folder there is a document dtcTemplate. dtcTemplate is used to render the content sections (also known as leaves) of the tree you're viewing. The actual contents of the leaves are defined much further below. This section is defined in DataSharing (2), and is being rendered using dtcTemplate. But how is this possible if dtcTemplate is not in the DataSharing folder? Because of Acquisition, DataSharing acquires dtcTemplate from its parent (Objects) who acquires it from its parent (Outline). But because of Acquisition, dtcTemplate appears to be (and acts) like a regular member object of DataSharing.

So if that's the case, why do all of the leaves in object have a similar style but different content? The DTML source code for the dtcTemplate document is as follows:

<!--#var standard_html_header-->
<!--#var dtContent-->
<HR>
<!--#var standard_html_footer-->

The dtContent is a DTML document inside of each subfolder that gets inserted into the dtcTemplate document. Again, each leaf appears different because the dtContent is specified at the leaf level here, while keeping a similar identity because the dtcTemplate document that is being called to render each leaf is shared across all of the leaf subfolders. When we started working on this QuickStart project, a dtContent document was defined in the top folder that is being used for the entire QuickStart tree that you are now reading so that all of the leaves would render a simple document until a real dtcTemplate was defined for their level. Meaning: all of the empty folders acquired the default document from higher up until it got overridden.

qU_varsq }q u.=)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope and Aqueduct take great pains to maintain high transaction rates and performance. Chief among these is the persistent database logins established and maintained by Aqueduct. Multiple, persistent logins (each with their own database privileges) can be created and maintained.

Another signficant performance boost also comes from the fact that Zope (and hence Aqueduct) are long-running processes. This completely avoids the performance-bashing startup latency associated with complex CGI applications.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.?)*o;(cOFS.Image Image qNtq.}q(UsizeqM U content_typeqU image/gifqUdataq(U@q(U OFS.ImageqUPdataq tq tq QU__name__q UMultiSourceAqueductDiagram.gifq UtitleqUqu.@)*o;(cOFS.Image Pdata qNtq.}qUdataqT GIF89a !, @I8ͻ`(dihlpmO-:=nal k_nVجv2 ;zFw|.sB:c9TIMt_G`~cX77w{w^rHq1Ea65->,Y3gyRf#)%ψt&ن0$"!]@ma H h7/x_K7(jd:)h'pp:hy+`HT'"36b1qS:TzLOZ;-k%x7Qk^Mv%FԐ Kڒ&6\ng>i™%Ø+!G \g0&x|U#Zm5UbW9`TMdu׀U ΖNguw;tbt1}gn'7;cRj_UӑRQڣd37N!M8 +a"ie !C9%]%܆NN„W0dx-D~0KeKZ^rRi0F2ϗ$/kg~"6(< >f0$V6Re6хBy3Om=Wɀ"N7bd( 6-yИ ZVЈlkD-s3 #GMx$'r?G*]ms^$6BvQLZǦ7]fozJږBڇ dL5Dvԩׇ9 (XRRsnj%#ZP*I~`T֧Jm`R URYOXkE+=:*Ge;Cˤ͏cҚe7^jOKޥT-kE:Q'\.n\pA[TގIխKY1].mv5>e>]uFxKy#C5t[{[ ͯ~pG)`r9VS|RT#<hp9Rr Y\_ʀ& E})vq+W>)NzEWN1Ij>f3‹F>:]R9 b"+ V,1*W+cx+|l4zoɾB;F>2${{-u  |2)ers%d3dWWHgʕM-xEHHYvW|dC=(d_tI]C F!ôdeZ03:}n$]Zꎱֳ5<2[˓sMPr'ŊJ}ԘsYq*!:Vi{)U^.gUEMJ`lbwl@`S7U qOֳ/owmJN'<78ڱ/xxٽK;ʚЙysx98X-3͎Ejį*q*sat,LG;9vsq]o$jJwgx&Q7>j +886E#9clYU7y0] /B=f~҆4]!_ 9;a[܉x"ȕ'+#7?ëvpN4Wqr4kنfiǻVU#;o?[:0PTvbw+|g{Ser XvutDWs(%S~9NU]tvY*pt|$g TueRAwVF-m@06e;4X1pN#rW'{N7?ăy{sҁp\h؆RĄGJ8ddvZ7WJ1uvbOiu3#__D҂1Gyf!V@7S00w!4[kh"3']ciJ1`BTw\keՕV%GHW]<~jIQ-Vɘ79)Eŗ.3((8Mhm7{x9+E՚(yɇ]ǒ16DE)}gv8^əCGK0izGy/ɍ t/wfx+f3뙚كIr(w)`yw/)ڥx1ii~YSwnAh ":$Z&JxXHdwfN) 'Rtd/~1*e+7x%D׶I4?JLڤN2;qs.>)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqTB

Aqueduct can also be implemented in a multi-database architecture. What if your sales data was kept in Oracle® on sales.plutonia.com and your human resources data was kept in a Sybase® database on hr.plutonia.com. All this and your web server of choice is Apache on Linux! Sound like an impossible situation!? Not with Zope and Aqueduct. Consider the following diagram which implements this very architecture.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.A)*o;`(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope (and therefore Aqueduct) runs on many platforms. This list is always growing! The lastest list of supported platforms and databases can be found on our website.

As of April 1998, Digital Creations supported:

  • Linux v2
  • BSDI v3
  • OSF1v3
  • Solaris 2.5
  • Solaris 2.6
  • HP/UX 10.x
  • Irix 6.46
  • Windows NT Server v4
  • Windows NT Workstation v4
qUglobalsq}qU__name__q U dtContentq U_varsq }q u.C)*o;(cOFS.Image Image qNtq.}q(UsizeqMFU content_typeqU image/gifqUdataq(UDq(U OFS.ImageqUPdataq tq tq QU__name__q UNTierAqueductDiagram.gifq UtitleqUqu.D)*o;s(cOFS.Image Pdata qNtq.}qUdataqTFGIF89a@!,@@I8ͻ`(dihlp,t]O_GV GRL.ШtJ5F1j{Wr9ΪI_7y ֭^ ;}E]c{7~h'bo>r^B3G.p[nP@+VrDžZsv#׋eѕd㟠k(݂|ߺs*ӗl ft"$F"1Dɓ(S\Y9%͉oNu)Ҳ?{BLjh Յ+-O7$s  ULK:%Eo"W+ ̭Yd*^sfkBkˎ kܫ.g|ud+{Nk{,֓kзEo` Nwȓ+y|gFNֳks&J*=OkϿ߀\g&`<n]Vxaf!n4zUx#NA&u,r&-(# މmbw&h3؋6@)^5u_aEǖ= $difK`lPKXnֹ_zi)|aߡ&|XcMXe4唌fڑAi逤m] 9@#k(<:Rqj~XYwlIXJ*NA"&yl,:JݖD"ʒ"kymkb}/+RoX !龽*ĩIQ%Ý)$B( 镚N9 56"΅0D cHC cwf~5D,*(AZ,(ZXVE R,Ib%F XE5񍅒YE'8 .g_Ȣ(nGEBj B>INrw؛⸿ŅT^?iT@yxl)cnle1mD1DIƂ(Ddβ 2]NF?$R VLT3beT`/ujm@)qjmSӖUv2 $dn#טB^}Mz_vY+^*ivH|Bڑ>˚.I߅ZU,z7Wlc3z7ad%m@9sMϩ&awVm`Em7s 7>Hh/^n9V'Khf_[v񘳤qk`꣞ Y]q fRϛ̴YhSge^/N~[6ڠn0*aMg=j$YZ}E&[a<Watw^'?}Bh«:6'z<1= Dbg1N+iCy7ӷm|A5%2ק%X]']BOg kFi~buwSfhl˖p~u8mfb7Zy29KO.gM9.IWiS\ٕ^`bgegT#>wY7gd?#xkQwt%t;u8sJvmk^spF>ɅijISC5\bNKWcY֧}c)=py0̸y\w؎fmSuVLck'gxvIR跁ITbNrECH*9n'ԕ\Dphutq'voV$|B穆Iö%IxXSmv})$ꉚX6%h | f~DW:YGgڟBeDJ喢DnAF`!ʋ'z}B5Y m%ƜNjNG' C'bVHT٣֢aTYEhLzkPnXÅ.f"q-ƥ#vnjh2}zW3R*~(2'LXJzb87Y<)*[*?4H.o  ,cڴ*&`TY:ڱO[o- Uj\El7Z:7Rylli~&|I'm`aopCl@3{h~䴨jL}Bf?ޣ~_sWW }\v+l*_j+&@*㺴$GZ:I{\Z HĄk4*+S۽ZGT)+A߫w?4X=4D=ӿ,Iz@ YY~V{]]͒+|Q{Ln1}ýf>9}T]nK)nr2)iտ "~\੦Ȁ:@Iέqu|EG4-\~WUCdl]ObʄV>d]p(Eeؐ nyݑX撌Thu=E_<$Q#"&(OĜ6M.`AN =khϨBM~/ni}h,{^؊40-!fL!NtFY͌鼚..Mv]>ixcQXk'EW ~k^UymW"ܕrN.aNՄHJnq?~G2~K/Ǝ,.(۵n ?r7 {>xf^aq>A/F8XY̅|׌X.]M-d_fm!jȾgyGه8X, ?v_F'm2l 3%B:$OrOt$/-+s?]+ECpg?¬빯R['nɗOaE?Oĝ5'ZNҎwg/O?|t?O%1NEs3PZ9ONZYoCq$KDS5y%`~㩦u罸n/C&KfFELV¬[iwR8.Ekv}rz~ $,4;RZ~65. '+_=톏 P@!";qs.B)*o; (cOFS.Document Document qNtq.}q(UtitleqUqUrawqTw

Arguably the most powerful and complex implementation of Zope is one which involves a multi-tier architecture and multiple datasources.

Consider the following common scenario:

For various and sundry reasons Plutonia Computer's (our example company) webmaster has chosen to run the main Plutonia website on the Linux operating system and use Apache as the web server. Unfortunately for our webmaster, Plutonia's corporate database standards are Oracle® and Sybase®. Last we checked, neither Sybase or Oracle had (or were planning on having) client-side drivers for Linux. If they did a clever and efficient webmaster could develop interesting CGI applications against the client-side drivers. Alas, no drivers, no integration...

Until Zope and Aqueduct that is! Using Zope's unique Network Client capabilities, Zope developers can publish searchable objects from one Zope to another. In the scenario above a developer can use Zope on a platform for which there are Oracle/Sybase client drivers. From this platform they would publish one or more query objects. For example, Oracle client drivers are available for the Solaris operating system. We can use Zope on Solaris to publish (over the network) queries against an Oracle database. This Oracle database is either a) on the same Solaris machine, or b) available to the Solaris machine over the network. In any case, the following queries can be published by the Solaris server.

Searchable Object Query String
qryListAllCustomers SELECT * FROM customers
qryListAllBackOrders SELECT order_id, quantity, part_number FROM orders
WHERE shipped < quantity

We can now return to our Linux web server where we use a Network Client to access the remote searchable objects published from the Solaris server. Once we correctly configure a Network Client we have access to all of the data on Linux!!! This architecture works perfectly whether you are SELECTing, UPDATEing or INSERTing data. As a matter of fact it even works for CREATEing and DROPping your tables!

Security and Performance is critical! The network connection between the Linux web server and the Solaris machine that is publishing searchable objects is both encrypted (for strong security) and compressed (for strong network performance).

The scenario described above is illustrated in the following software component diagram. Note that while not depicted on the diagram it is certainly possible (and, in fact, common) for the Linux webserver the be publishing databases (e.g., SOLID, mySQL, mSQL, etc.) directly in conjunction with the Oracle and Sybase databases.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.F)*o; (cOFS.Document Document qNtq.}q(UtitleqUqUrawqTv

Here's a common problem... The people that are experienced and talented in the development of efficient SQL queries are often not the people that have the best eye for aesthetics and presentation. Similarly, an organization's best graphics specialists and HTML authors might not be qualified to write efficient SQL. What to do?!

The combination of Zope and Aqueduct allows website managers to segregate the responsibility for the SQL queries from the responsibility for developing a visually attractive and appealing interface. Consider the following SQL query (note the template variable substitution is highlighted in red:

SELECT
parts.part_id, description, price,
order_number, quantity, shipped,
customers.name, customers.address
FROM parts, orders, customers
WHERE
parts.part_id = orders.part_id
AND
orders.customer_id = customers.customer_id
AND orders.order_number = <!--#VAR order_number-->
ORDER BY order_number

This query is certainly not the most complex or complicated query that's ever been devised. However, it does involve joining two relational tables and sorting/ordering the output. So, while not terribly complex, it might very well be beyond the expertise of an HTML developer or graphics artist. No problem! Just get your local SQL guru to create a Zope SQL Method that implements this SQL query. Let's call it qryListOrderInformation.

With the qryListOrderInformation object created our HTML developers and graphics artists can do what they do best... make the site look visually appealing. Our graphic designer can now access the data returned from the query using the Document Template Markup Language (DTML) as follows:



When the query was run, it would return data which would, in turn, be merged with the template to produce the folllwing HTML:

<table>
  <tr>
    <th>Order<br>Number</th>
    <th>Quantity</th>
    <th>Shipped</th>
  </tr>

    <tr>
      <td>2</td>
      <td>4</td>
      <td>3</td>
    </tr>

    <tr>
      <td>3</td>
      <td>6</td>
      <td>0</td>
    </tr>

</table>

Which when rendered in a browser would appear as follows:

Order
Number
Quantity Shipped
2 4 3
3 6 0
qUglobalsq}qU__name__q U dtContentq U_varsq }q u.E)*o;(cOFS.Image File qNtq.}q(UsizeqMU content_typeqUapplication/octet-streamqUdataq(UGq(U OFS.ImageqUPdataq tq tq QU__name__q Usample_aqueduct_dtml_snippetq UtitleqUqu.G)*o;K(cOFS.Image Pdata qNtq.}qUdataqT
Order
Number
Quantity Shipped
qs.I)*o;(cOFS.Image Image qNtq.}q(UsizeqM U content_typeqU image/gifqUdataq(UJq(U OFS.ImageqUPdataq tq tq QU__name__q USingleTierDiagram.gifq UtitleqUqu.J)*o; (cOFS.Image Pdata qNtq.}qUdataqT GIF89a !, @I8ͻ`(dihlp,TvO?N+| GaΞJZج3t0+.h8J%ӫ;ک^jsB2JS~(0eZn4m<<`7rE.-dmpHRCkpl"Xīf`aPTѫ'|:qtoٿ)%#Qgu站0Rw >LA%a Nc.aL8nLƓtfXhRʊj2ys|QAtGɁ%tF1o%A9f*F\ojɃ=zj#&]er +Xix漣۟bʝKnPJ m^F H7 ˷q`OLS_q̹[zMAܐ/fӰcGThP^hۮ_.MP&i/ ^NgkGG7ӫ7.}K2?ϟ*' =5&< Q6fYa\\QUqTA!l݈xkmu]㎸eO(X~B5V}M}$4\J b(3-erfRU"J(F!H fV^'ZߚXgOB3ߠX%~.$ЈZ&mTXԗQa wFWhkif^*WDS)se8} +1z k]窝=[byMŒڸkdAbܹ;iyݙbբoqJl0z*t.l>^ql\QcxLj8 c1[3<І0.H+$IMGm|RW} Vg(Zw / h594! mL9g 6MQ,tC-K^'ҍ^JW7n%Fj]J#.t]\SRj+؏26S;RF`^>&:ȧ{n^&w2_rO!E40Ӿ`b=G{Cb/"?0 RˬgzXTF(HIp ˨Fǫ:mo'zt;(L 5:EʁƊa/ !x M1oFzC;d5|R(<Au,щMt%_Ec\6B B† uҪ'" /; %2>D$#0E]aZ_Ikv$g@uKKFH:E!$2i'LVdLXӸXڒ] a.|ӵr5+JK;e"KN4W@!K v4Y4Dx,gܬ~ RIb9K+va8(vV;ZA' f.kC?T&h>*bB(HT(,OҖB.]pioQIc?ɓ˟dӢz4*O£T۔Ԡ@uH"x՘v8EYfUfuq6`YoҭzkE/WQ.ϩq(;zbj^fקg}W0A b/6UFeьf h5-gZ jcBdqvE oKwaaqM α\tKZ]. kZBpSϡ^S-R`1ֹvcܐ(MX6O Tbf10bawøV5["ʆJ"̂H|:_ՊިiX 466Fȉ7㴱v"[*Cdi.̞/޶U<]L:mAM8w<o;Yq*d̴ rIN1H>/Ѡ&3LtvNjf EH Z4-6ш3UƜ$bt(HnRXϡdg4B'=@5ci-KGF5ݻۜu۬l!L/8)KmRK *-}HPkۉ4HCB[Cs$siH2WkD!H78!^&^I x?䖷ı3Y.qo1 akfGHw (7ZÓcʇ^;zyxO{a'.3S:ߜusnBҕLϤ\_'NŸ(٣DG˝7}('뜳סy^#@clMP::qq)\ v e54$&C٧ouvDXln/ZZvqruӾr0ۨ _#{6l/MgK>9D T4&}vzQb_ W8aB% |%ThevjgthEY6Z#Xg{What's the secret?

It's no longer a secret... The fastest way to show significant demonstrable returns from your internet/intranet/extranet website is to web-enable existing operational databases. A close second is the design and development of new web-centric databases designed to deliver enhanced sales, marketing and customer service capabilities to your organization. Like we said, what needs to be done is no longer a secret.

How to do it...

Today's most precious commodity? Your time. In Zope (our web application development and delivery platform) and Aqueduct (our relational database publishing solution) Digital Creations has developed a suite of software that lets you work smarter, not harder.

Take for example, Aqueduct. Aqueduct packages your database queries (i.e., the SQL queries) into reusable objects that are made available throughout your website in accordance with the security parameters you establish. Aqueduct supports two-tier and n-tier implementations. Consider the following diagram which depicts a single-tier Aqueduct implementation. This diagram might depict a centralized web server serving data from a centralized database server.

Key Description
1
"Standard" web-browser (whatever that means!)
2
A "Standard" web server: (e.g., Apache, Netscape's Enterprise Server, Open Market's web server and others). Zope's long running process is messaged by very small CGI programs launched by the web server. This elegant architecture allows Zope to easily scale into higher transaction rates.
3
Zope Server Process: Zope is based on a strong web-to-objects model that marries an object-oriented database and scripting envrironment with user sessions, an Undo capability and more. It is the well-matched interface between this object-orientation and underlying relational databases that is Aqueduct's most distringuishing feature.
4
Aqueduct SQL Method(s): SQL Methods expose templated SQL statements to the Zope object system. This exposure allows you to take advantage of Zope capabilities like Acquisition, hierarchical security and authentication, Folder Properties and Document Template Markup Language.
5
Aqueduct Database Adapter: On Unix-variant operating systems Aqueduct uses native database libraries and persistent database connections for high-performance database operations. On Linux Database Adpaters are available for mySQL, miniSQL, and SOLID. However, the list of supported databases is growing all the time. Please check our website for the most current list.
6
A "Standard" Database Server: Examples include SOLID, mySQL, mSQL and others.
qUglobalsq}qU__name__q U dtContentq U_varsq }q u.K)*o;(cOFS.Document Document qNtq.}q(U__name__qU dtContentqUglobalsq}qUrawqTZConsider the following basic personnel report. This report highlights (in red) anyone whose last raise was more than 25%.

Personnel Report

Plutonia Company - Marketing Department peronnel listing as of 1/1/98:

Employee Number Name Department Email Current Salary Last Raise (%)
SJ34 Jones, Steve Marketing stevej@plutonia.com [SEND]
$50,995
27%
JD334 Doe, James Marketing doej@plutonia.com [SEND]
$43,995
24%

Example Code - The SQLMethod

This is implemented with two basic objects. The first object is the SQL Method (which we've named qryAllMarketingEmployees as follows:

SELECT * from PlutoniaEmployees WHERE
department = '<!--#var department-->'

You should note that this SQL statement is actually an SQL statement template. The variable department will be inserted into the SQL statement when the query is run. In the example above the variable department is equal to MARKETING. Thus, when this SQL template is rendered the following SQL statement is sent to the database for evaluation/execution:

SELECT * from PlutoniaEmployees WHERE
department = 'MARKETING'

An SQL Method returns a sequence of items which can be interated over inside other queries or in HTML document templates. In this particular example, this query returns the following results:

employee_id last_name first_name department emailaddress salary precent_raise
SJ34 Jones Steve Marketing stevej@plutonia.com 50995 27
JD334 Doe James Marketing doej@plutonia.com 43995 24

Example Code - The Document Template

The second object is the Document Template required to render the HTML page. The table above was created with the following DTML:

<!--#var standard_html_header-->
<h3>Personnel Report</h3>
<p>
Plutonia Company - Marketing Department peronnel listing as of 1/1/98:
</p>

<table border="1">
  <tr>
    <th>Employee Number</th>
    <th>Name</th>
    <th>Department</th>
    <th colspan="2">Email</th>
    <th>Current Salary</th>
    <th>Last Raise (%)</th>
  </tr>

<--#in qryAllMarketingEmployees-->

  <tr>
    <td><!--#var employee_id--></td>
    <td><!--#var last_name--></td>
    <td><!--#var department--></td>
    <td><!--#var emailaddress--></td>
    <td><a href="mailto:<!--#var emailaddress-->">[SEND]</a></td>
    <td><center>$<!--#var salary-->;</center></td>
    <td>
      <!--#if expr="percent_raise > 25"-->
        <font color="FF0000">
        <!--#var percent_raise-->%
      </font>
      <!--#else-->
        <!--#var percent_raise-->%
      <!--#/if-->
    </td>
  </tr>

<--#/in-->
</table>

Take note of the <!--#in QUERY_NAME--> tag which allows you to loop through a section of document template once for each "record" or item in the sequence. Also note that the percent_raise value was highlighted in red (using the HTML <FONT> tag). This was done using the Document Template expr tag which allows us to evaluate arbitrary expressions. In this case, if percent_raise is less than 25 no highlighting is done. If, however, the percent_raise is greater than 25 the value highlighted.

These are only a few of the powerful capabilities in Aqueduct! If this looks interesting, read on!

qU_varsq }q u.)*o;(cOFS.Document Document qNtq.}q(UrawqU2

This is a document about

qUglobalsq}qU__name__qU dtContentqU_varsq }q u.O)*o;F(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope automatically provides useful objects for web site builders. These include Documents, Images, Folders, UserFolders, and MailHost objects. A content manager can use these objects to create a highly interactive, yet maintainable web site. Content managers can take advantage of Zope's powerful object model and data sharing abilities to reduce redundant work and delegate responsibility for content.

Most web sites try to maintain a consistent style, such as common HTML menus or feedback links. Using Zope, a content manager can define a Document that renders the HTML menu in one Folder - and simply refer to that from other Documents in the system. When the menu needs to be changed, it can be changed once and the changes will instantly be visible throughout the site.

Documents also give content managers access to HTTP request variables, cookies, programmatic control of the object system and more. A content manager could create a Document that renders itself completely differently based on the browser, identity or even the remote network address of the viewer. Using the built-in Zope MailHost object, one could even arrange for a Document to send out an email anytime it is viewed!

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.P)*o;4(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Drop-in products for Zope provide allow content managers to add new functionality like discussion groups and database access to their site as easily as they new add Documents or Folders. Products designed for Zope register new types of objects which can be dropped into any Folder - even into objects defined by other products!

The Confera product adds the ability to create full-featured web discussion groups to a site. A content manager can simply add a new Confera Topic in any Folder. The newly added Confera Topic is fully functional, complete with generic Documents that can be customized to brand the topic and full-text searching.

The Aqueduct line of products allow content managers to easily integrate back-end data with their site by dropping in Database Connections and Database Methods which perform database queries. The resulting data can then be used in site Documents, taking full advantage of DTML.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.Q)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT

Zope Documents provide a powerful system for dynamic content delivery. Documents add rich programming to HTML, including iterations, conditional testing, variable insertion, access to HTTP headers, cookies, and more. Since these rich HTML templates are objects, your users can undo mistakes, work on Documents in private Sessions, and take advantage of Zope's built-in security. These rich programming additions are known as the Document Template Markup Language (DTML), a server-side-include style syntax.

qUglobalsq}qU__name__q U dtContentq U_varsq }q u.)*o;(cOFS.Image Image qNtq.}q(UsizeqKU content_typeqU image/gifqUdataq(URq(U OFS.ImageqUPdataq tq tq QU__name__q UClosedBook.gifq UtitleqUqu.R)*o;(cOFS.Image Pdata qNtq.}qUdataqUGIF89a!,@D0~Q}6^F'zm+&LB9"&& qtAhjG%e;qs.)*o;(cOFS.Image Image qNtq.}q(UsizeqKU content_typeqU image/gifqUdataq(USq(U OFS.ImageqUPdataq tq tq QU__name__q U OpenBook.gifq UtitleqUqu.S)*o;(cOFS.Image Pdata qNtq.}qUdataqUGIF89a!,@RY¤aT )`r<gDTPBW'+9#h%`[60R dJVAt:xߋ;qs.)*o;(cOFS.Document Document qNtq.}q(UtitleqUqUrawqT Zope QuickStart

Welcome to Zope - a new generation of software that we call a web application platform. Like web application servers, Zope provides very high performance and a strong framework for dynamic applications.

This QuickStart is built with Zope objects -- take a look!

Zope, though, is distinguished by its integrated object database which, when combined with a revolutionary object model, provides a completely unique facility for servicing content managers and web application developers. This outline, implemented in Zope, talks about the various strengths of the Zope platform and some of the other products available for it.

Start working in the management screens

qUglobalsq}qU__name__q U index_htmlq U_varsq }q u.)*o; (cOFS.Document Document qNtq.}q(UrawqT<!--#var title_or_id--> qUglobalsq}qU__name__qUstandard_html_headerqU_varsq }q u.9s<+p9s<((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(UtitleqUStandard Html HeaderqUrawqUP<dtml-var title_or_id>qUglobalsq }q U__name__q Ustandard_html_headerq U_varsq }qu.9s<((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(UtitleqUStandard Html FooterqUrawqU5

qUglobalsq }q U__name__q Ustandard_html_footerq U_varsq }qu.T9s<((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(UtitleqUUrawqU\ qUglobalsq}q U__name__q U index_htmlq U_varsq }q u.9s<((UOFS.DTMLMethodqU DTMLMethodqtqNt.}q(UtitleqUStandard Error MessageqUrawqTU
Zope

Zope Error

Zope has encountered an error while publishing this resource.

Error Type:
Error Value:


Troubleshooting Suggestions

  • This resource may be trying to reference a nonexistent object or variable .
  • The URL may be incorrect.
  • The parameters passed to this resource may be incorrect.
  • A resource that this resource relies on may be encountering an error.

For more detailed information about the error, please refer to the HTML source for this page.

If the error persists please contact the site maintainer. Thank you for your patience.

Here, events like logging and other actions may also be performed, such as sending mail automatically to the administrator.
qUglobalsq }q U__name__q Ustandard_error_messageq U_varsq }qu.9s<((U OFS.FolderqUFolderqtqNt.}q(Ustandard_html_headerq(Uq(UOFS.DTMLMethodqU DTMLMethodqttQU index_htmlq (Uq (hU DTMLMethodq ttQUidq U QuickStartq U_objectsq(}q(U meta_typeqU DTML MethodqUidqh u}q(hUFolderqhUOutlinequ}q(U meta_typeqhUidqhu}q(hhhUstandard_html_footerqutUtitleqUZope QuickStart Outlineqh(Uq(hUFolderqttQh(Uq(hU DTMLMethodq ttQu.9s<s((U OFS.FolderqUFolderqtqNt.}q(UidqUOutlineqU_objectsq(}q(U meta_typeq UImageq Uidq UClosedBook.gifq u}q (h h h U OpenBook.gifqu}q(h UFolderqh UDatabasequ}q(h hh UContentqu}q(h U DTML Methodqh U dtcTemplatequ}q(h hh U dtContentqu}q(U meta_typeqUFolderqUidqU Applicationsqu}q(hhhUObjectsquth(Uq (UOFS.DTMLMethodq!U DTMLMethodq"ttQh(Uq#(U OFS.Imageq$UImageq%ttQh(Uq&(hUFolderq'ttQh(Uq((hUFolderq)ttQh(Uq*(hUFolderq+ttQh (Uq,(h$UImageq-ttQh(Uq.(hUFolderq/ttQh(Uq0(h!U DTMLMethodq1ttQUtitleq2Uu.9s<((U OFS.FolderqUFolderqtqNt.}q(UPublishq(U7q(hUFolderqttQUidqUDatabaseq U MultiPlatformq (U:q (hUFolderq ttQU MultiRoleq (U8q(hUFolderqttQU_objectsq(}q(U meta_typeqUFolderqUidqU BasicExamplequ}q(hhhUHighPerformancequ}q(hhhh u}q(hhhh u}q(hhhU MultiTieredqu}q(hhhU MultiSourcequ}q(hhhhutUtitleqUDatabase Integrationq h(Uq(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U MultiSourceq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhu}q(hUImageqhUMultiSourceAqueductDiagram.gifquth(U?q(U OFS.ImageqUImageqttQu.79s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUPublish DatabasesqU dtContentq(UHq(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UPublishq USingleTierDiagram.gifq (UIq(U OFS.ImageqUImageqttQU_objectsq(}q(U meta_typeqU DTML MethodqUidqhu}q(hUImageqhh utu.9s<((U OFS.FolderqUFolderqtqNt.}q(UidqUContentqU_objectsq(}q(U meta_typeq UFolderq Uidq UBuiltinq u}q (h h h U Documentsqu}q(h h h UDropinqutUtitleqUContent Managementqh(UMq(hUFolderqttQh(ULq(hUFolderqttQh (UNq(hUFolderqttQu.N9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUBuiltin ObjectsqU dtContentq(UOq(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UBuiltinq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.L9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUDocument TemplatesqU dtContentq(UQq(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U Documentsq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.M9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUDropin ObjectsqU dtContentq(UPq(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UDropinq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.9s<((U OFS.FolderqUFolderqtqNt.}q(U Scriptingq(Uq(hUFolderqttQUidqU Applicationsq U_objectsq (}q (U meta_typeq UFolderq Uidqhu}q(h h hUExternalqu}q(h h hUTabulaqu}q(h h hU Smartdataqu}q(h h hULeverquth(U q(hUFolderqttQUtitleqUApplication Developmentqh(Uq(hUFolderqttQh(Uq(hUFolderqttQh(Uq(hUFolderq ttQu.9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUDTML ScriptingqU dtContentq(U%q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U Scriptingq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUExternal MethodsqU dtContentq(U#q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UExternalq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUProgramming Data with TabulaqU dtContentq(U"q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UTabulaq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqU)Adding Object Behavior to Relational DataqU dtContentq(U$q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U Smartdataq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu. 9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUThe Almighty LeverqU dtContentq(U!q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq ULeverq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.9s<((U OFS.FolderqUFolderqtqNt.}q(U Integratedq(U)q(hUFolderqttQUUndoq(U+q (hUFolderq ttQUidq UObjectsq U_objectsq (}q(U meta_typeqUFolderqUidqhu}q(hhhU DataSharingqu}q(hhhU Managementqu}q(hhhUNiceURLsqu}q(hhhUSecurityqu}q(hhhUSessionsqu}q(hhhhuth(U'q(hUFolderqttQh(U(q(hUFolderq ttQh(U&q!(hUFolderq"ttQUtitleq#UWeb to Objectsq$h(U*q%(hUFolderq&ttQh(U,q'(hUFolderq(ttQu.)9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUIntegrated Object DatabaseqU dtContentq(U0q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U Integratedq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.&9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqU Data SharingqU dtContentq(U3q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U DataSharingq Udatasharing1.gifq (U4q(U OFS.ImageqUImageqttQU_objectsq(}q(U meta_typeqU DTML MethodqUidqhu}q(hUImageqhh utu.*9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUManaged Through the WebqU dtContentq(U/q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq U Managementq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.(9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUDirect URL Access to ObjectsqU dtContentq(U1q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UNiceURLsq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.'9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUSecurityqU dtContentq(U2q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq USecurityq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.,9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUSessionsqU dtContentq(U-q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq USessionsq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.+9s<((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUndoqU dtContentq(U.q(UOFS.DTMLMethodq U DTMLMethodq ttQUidq UUndoq U_objectsq (}q(U meta_typeqU DTML MethodqUidqhutu.+G"epAdded temp_folderWG"((U(Products.TemporaryFolder.TemporaryFolderqUMountedTemporaryFolderqtqNt.}q(U_pathqU/U_paramsqU'142322640_1032207120.204841'qUidqU temp_folderq U_MountPoint__mountpoint_idq U142322640_1032207120.204841q Utitleq UTemporary Folderq U_classDefsFromRootqKu.eGupAdded browser_id_managerXGuY((U"Products.Sessions.BrowserIdManagerqUBrowserIdManagerqtqNt.}q(U cookie_pathqU/UidqUbrowser_id_managerqU__ac_local_roles__q}q USystem Processesq ]q UOwnerq asUbrowserid_namespacesq ]q(UcookiesqUformqeU cookie_domainqUUtitleqUBrowser Id ManagerqUcookie_life_daysqKU cookie_secureqKUbrowserid_nameqU_ZopeIdqu.GDZpAdded session_data_managerZGD/((U$Products.Sessions.SessionDataManagerqUSessionDataManagerqtqNt.}q(UidqUsession_data_managerqUobpathq]q(UU temp_folderq U session_dataq eU__ac_local_roles__q }q USystem Processesq ]qUOwnerqasUtitleqUSession Data ManagerqU_requestSessionNameqUSESSIONqU_hasTraversalHookqKu.YGD((U$Products.Sessions.SessionDataManagerqUSessionDataManagerTraverserqtqNt.}q(U_sessionDataManagerqUsession_data_managerqU_requestSessionNameqUSESSIONqu.ZG3pAdded Examples folderwG3;=((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U _getattr_q U_getattrq U containerq Ufilesq UsequenceqtqU co_argcountqKubU_paramsqUUidqU getEntriesqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerq U name_subpathq!Utraverse_subpathq"U name_m_selfq#Uscriptq$U name_contextq%Ucontextq&usbU func_defaultsq'NU_codeq(TcsdZdS(sJ Returns a list of entries (file objects) in order from newest to oldest. csZt}d||tddd}|td|dddffSdS( sJ Returns a list of entries (file objects) in order from newest to oldest. sEntriess objectValuessFilessortsbobobase_modification_timescmpsdescN(s _getattr_s_getattrs containersfilesssequence(s _getattr_s_getattrs containersfilesssequence((sScript (Python)s getEntriess !N(s getEntries(s getEntries((sScript (Python)ssq)U_bodyq*T""" Returns a list of entries (file objects) in order from newest to oldest. """ files=container.Entries.objectValues('File') # sort the files based on modification time, with the most recent files first return sequence.sort(files, (('bobobase_modification_time', 'cmp', 'desc'),)) q+U Script_magicq,KUwarningsq-)Uerrorsq.)U Python_magicq/U* q0u.uG3;((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqU addEntry.htmlqU__ac_local_roles__q}q Uamosq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqTU The document title or folder title or the example title

The document title

You can sign the guest book by filling out this form. You cannot include HTML in your comments, however, Zope will preserve your linebreaks.

Your Name
Comments
qU content_typeqU text/htmlqUtitleqUSign the Guest Bookqu.tG3; ((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqU index_htmlqU__ac_local_roles__q}q Uamosq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqTo The document title or folder title or the example title

The title

This example shows how to create a simple guest book.

The guest book stores its entries as file objects in the Entries folder. This page displays the entries by looping over a sorted list of entries and displaying each one. The list of entries is created by the getEntries script. The formatEntry script formats each guest book entry. To remove an entry, remove its file from the Entries folder. An alternate version of this application could use ZSQL Methods to store guest book entries in a relational database.

The addEntry.html template provides a form that allows you to sign the guest book. The form is processed by the addEntry script. The addEntry script stores the entry as a file. The script has the "manager" proxy role, which allows the script to create a file regardless of the user's permissions.

Sign the guest book

Entries

By Guest Name
2001/12/12
Entry contents

There are no guest book entries yet.

qU content_typeqU text/htmlqUtitleqUu.sG3;;((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U _getitem_q U_getitemq U _getattr_q U_getattrq U containerqUitemsqUtotalqUitemqtqU co_argcountqKubU_paramsqUUidqUgetTotalqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq }q!(Uname_containerq"U containerq#U name_subpathq$Utraverse_subpathq%U name_m_selfq&Uscriptq'U name_contextq(Ucontextq)usbU func_defaultsq*NU_codeq+T:csdZdS(Ncsqt}t}|td}d}x6|dr)}|||d||d7}q6W|SdS(Ns currentItemsf0.0ispricesquantity(s _getitem_s_getitems _getattr_s_getattrs containersitemsstotalsitem(s _getitem_s_getitems _getattr_s_getattrs containersitemsstotalsitem((sScript (Python)sgetTotals! '(sgetTotal(sgetTotal((sScript (Python)ssq,U_bodyq-Uuitems=container.currentItems() total=0.0 for item in items: total+=item['price'] * item['quantity'] return total q.U Script_magicq/KUwarningsq0)Uerrorsq1)U Python_magicq2U* q3u.rG3;((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uidsq UREQUESTq U_write_q U_writeq U _getattr_qU_getattrqUcontextqUsessionqUitemsqUidqUNoneqU containerqtqU co_argcountqKubU_paramsqUids, REQUEST=NoneqUidqU deleteItemsqU__ac_local_roles__q}qUamosq]qUOwnerq asU _bind_namesq!(cShared.DC.Scripts.Bindings NameAssignments q"oq#}q$U_asgnsq%}q&(Uname_containerq'U containerq(U name_subpathq)Utraverse_subpathq*U name_contextq+Ucontextq,U name_m_selfq-Uscriptq.usbU func_defaultsq/(Ntq0U_codeq1TicstdZdS(s2 Remove one or more items from the shopping cart. c st}t}d||tdd}||ddh} x#|d r} | || =qXW|||d<|t j o|t d|SndS(s2 Remove one or more items from the shopping cart. sREQUESTsSESSIONsgetsitemsis index_htmlN( s_write_s_writes _getattr_s_getattrscontextssessionsitemssidssidsREQUESTsNones container( sidssREQUESTs_write_s_writes _getattr_s_getattrscontextssessionsitemssidsNones container((sScript (Python)s deleteItemssN(sNones deleteItems(sNones deleteItems((sScript (Python)ssq2U_bodyq3Ty""" Remove one or more items from the shopping cart. """ session=context.REQUEST.SESSION # get the items items=session.get('items',{}) # remove the items for id in ids: del items[id] # save changes back to the session session['items']=items # if this script is called from the web return a response page if REQUEST is not None: return container.index_html(REQUEST) q4U Script_magicq5KUwarningsq6)Uerrorsq7)U Python_magicq8U* q9u.qG3;s((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U_write_q U_writeq U _getattr_q U_getattrq UcontextqUsessionqU quantitiesqUitemsqUidqUquantityqU containerqUitemqtqU co_argcountqKubU_paramsqUUidqU currentItemsqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments q!oq"}q#U_asgnsq$}q%(Uname_containerq&U containerq'U name_subpathq(Utraverse_subpathq)U name_m_selfq*Uscriptq+U name_contextq,Ucontextq-usbU func_defaultsq.NU_codeq/TLcsdZdS(s Returns a list of items that are in the shopping cart. Each item has a 'quantity' field as well as the normal 'id' and 'description' fields. c st}t}d||tdd}||ddh}g}xf||ddrM\}}  |t d|}  | || d<| |d| qmW |Sd S( s Returns a list of items that are in the shopping cart. Each item has a 'quantity' field as well as the normal 'id' and 'description' fields. sREQUESTsSESSIONsgetsitemsisgetItemsquantitysappendN( s_write_s_writes _getattr_s_getattrscontextssessions quantitiessitemssidsquantitys containersitem( s_write_s_writes _getattr_s_getattrscontextssessions quantitiessitemssidsquantitys containersitem((sScript (Python)s currentItemss 'N(s currentItems(s currentItems((sScript (Python)ssq0U_bodyq1Tk""" Returns a list of items that are in the shopping cart. Each item has a 'quantity' field as well as the normal 'id' and 'description' fields. """ session=context.REQUEST.SESSION quantities=session.get('items', {}) items=[] for id, quantity in quantities.items(): item=container.getItem(id) item['quantity']=quantity items.append(item) return items q2U Script_magicq3KUwarningsq4)Uerrorsq5)U Python_magicq6U* q7u.pG3;r((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uidq U_write_q U_writeq U _getattr_q U_getattrqUitemsqUNoneqUitemqUresultsqtqU co_argcountqKubU_paramsqUid=NoneqUidqUgetItemqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq }q!U_asgnsq"}q#(Uname_containerq$U containerq%U name_subpathq&Utraverse_subpathq'U name_contextq(Ucontextq)U name_m_selfq*Uscriptq+usbU func_defaultsq,(Ntq-U_codeq.T~cstdZdS(s Returns an item given its id. If no id is provided, returns all available items. In a real shopping cart application, this script would probably consult a database of some sort. Each item is a dictionary with an id, title, description, and price. c sTt}t}dhhdd<dd<dd<d<hdd<d d<d d<d <hd d<d d<dd<d<}|tj oQ||d|}|tjo tSn|||d<|Sng}xN||ddr5\}} |||d<|!|d|q W"|SdS(s Returns an item given its id. If no id is provided, returns all available items. In a real shopping cart application, this script would probably consult a database of some sort. Each item is a dictionary with an id, title, description, and price. s Econo FeederstitlesThese feeders are made in Taiwan from a light-weight metal with plastic ends, and have an anti-spill edge to prevent the birds from kicking the feed out of the tray. They have a wooden rollbar to prevent the birds from sitting on them.s descriptionf7.95sprices510-115s Hopper Feeders7Need to go out of town for a few days, and no one can feed your pigeons? Don't worry, we now have the virtually spillproof hopper feeder. Made from birch plywood it holds from 30 to 35 pounds of grain. Pigeons can get at the feed through holes in the plexiglass cover, but will not be able to kick out any feed.f55.0s510-122sDust Free Bullet WaterersA favorite with many fanciers, this drinker has a dust cover over each individual drinking hole, to keep out the dirt and dust.f16.0s510-007sgetsidsitemsisappendN( s_write_s_writes _getattr_s_getattrsitemssidsNonesitemsresults( sids_write_s_writes _getattr_s_getattrsitemssNonesitemsresults((sScript (Python)sgetItemsu    'N(sNonesgetItem(sNonesgetItem((sScript (Python)ssq/U_bodyq0TZ""" Returns an item given its id. If no id is provided, returns all available items. In a real shopping cart application, this script would probably consult a database of some sort. Each item is a dictionary with an id, title, description, and price. """ items={ '510-115' : {'title' : 'Econo Feeder', 'description' : 'These feeders are made in Taiwan from a light-weight metal with plastic ends, and have an anti-spill edge to prevent the birds from kicking the feed out of the tray. They have a wooden rollbar to prevent the birds from sitting on them.', 'price' : 7.95}, '510-122' : {'title' : 'Hopper Feeder', 'description' : 'Need to go out of town for a few days, and no one can feed your pigeons? Don\'t worry, we now have the virtually spillproof hopper feeder. Made from birch plywood it holds from 30 to 35 pounds of grain. Pigeons can get at the feed through holes in the plexiglass cover, but will not be able to kick out any feed.', 'price' : 55.0}, '510-007' : {'title' : 'Dust Free Bullet Waterer', 'description' : 'A favorite with many fanciers, this drinker has a dust cover over each individual drinking hole, to keep out the dirt and dust.', 'price' : 16.0}, } # return requested item if id is not None: item=items.get(id) if item is None: # no item by that id return None # add an id field to the record item['id']=id return item # return all items results=[] for id, item in items.items(): item['id']=id results.append(item) return results q1U Script_magicq2KUwarningsq3)Uerrorsq4)U Python_magicq5U* q6u.G3;p((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUWhalesqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.~G3;((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUPrimatesqU__ac_local_roles__q}q Uamosq ]q UOwnerq asUMonkeysq (Uq(hUFolderqtqtqQU_objectsq(}q(U meta_typeqUFolderqUidqh utu.}G3;o((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUCrowsqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.|G3;q((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUPigeonsqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.{G3;((U OFS.ImageqUFileqtqNt.}q(UsizeqKUdataqUThis is an example text file.qU_EtagSupport__etagqU ts05822808.75q U__name__q U example.txtq Utitleq UC:\Temp\example.txtq U content_typeqU text/plainqU preconditionqUU__ac_local_roles__q}qUamosq]qUOwnerqasu.zG3;((U OFS.ImageqUFileqtqNt.}q(UsizeqKUdataqU Example

Example

This is an example HTML file.

qU_EtagSupport__etagqU ts05822816.58q U__name__q U example.htmlq Utitleq UC:\Temp\example.htmlq U content_typeqU text/htmlqU preconditionqUU__ac_local_roles__q}qUamosq]qUOwnerqasu.yG3;((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uentryq UProducts.PythonScripts.standardq U html_quoteq U newline_to_brq tqU co_argcountqKubU_paramsqUentryqUidqU formatEntryqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerq U name_contextq!Ucontextq"U name_subpathq#Utraverse_subpathq$Uname_nsq%U_U name_m_selfq&Uscriptq'usbU func_defaultsq(NU_codeq)TcsdZdS(Ncs-dkl}l}|||SdS(N(s html_quotes newline_to_br(sProducts.PythonScripts.standards html_quotes newline_to_brsentry(sentrysProducts.PythonScripts.standards html_quotes newline_to_br((sScript (Python)s formatEntrys(s formatEntry(s formatEntry((sScript (Python)ssq*U_bodyq+Unfrom Products.PythonScripts.standard import html_quote, newline_to_br return newline_to_br(html_quote(entry)) q,U Script_magicq-KUwarningsq.)Uerrorsq/)U Python_magicq0U* q1u.xG3; t((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Ucommentsq U guest_nameq UREQUESTq U _getitem_q U_getitemqU _getattr_qU_getattrqU containerqUentries_folderqUlenqUidqUgetattrqUentryqUNoneqtqU co_argcountqKubU_paramsqU.comments, guest_name='Anonymous', REQUEST=NoneqUidqUaddEntryqU__ac_local_roles__q}qUamosq ]q!UOwnerq"asU _bind_namesq#(cShared.DC.Scripts.Bindings NameAssignments q$oq%}q&U_asgnsq'}q((Uname_containerq)U containerq*U name_subpathq+Utraverse_subpathq,U name_contextq-Ucontextq.U name_m_selfq/Uscriptq0usbU func_defaultsq1(U Anonymousq2Ntq3U_codeq4TMcsdtdZdS(s Create a guest book entry. s Anonymousc st}t}d|td}dt||d} ||| |ddd| ddd d d | t || } || d d |d|t j o|td|SndS(s Create a guest book entry. sEntriessentry_%ds objectIdssmanage_addProductsOFSPsmanage_addFilestitless content_types text/plainsfilesmanage_addPropertys guest_namesstrings index_htmlN(s _getitem_s_getitems _getattr_s_getattrs containersentries_folderslensidscommentssgetattrsentrys guest_namesREQUESTsNone(scommentss guest_namesREQUESTs _getitem_s_getitems _getattr_s_getattrs containersentries_folderslensidsgetattrsentrysNone((sScript (Python)saddEntrys(1N(sNonesaddEntry(sNonesaddEntry((sScript (Python)ssq5Uerrorsq6)U_bodyq7T""" Create a guest book entry. """ entries_folder=container.Entries # create a unique entry id id='entry_%d' % len(entries_folder.objectIds()) # create the entry entries_folder.manage_addProduct['OFSP'].manage_addFile(id, title="", content_type="text/plain", file=comments) # add a guest_name string property entry=getattr(entries_folder, id) entry.manage_addProperty('guest_name', guest_name, 'string') # return a response page if REQUEST is not None: return container.index_html(REQUEST) q8U Script_magicq9KUwarningsq:)U _proxy_rolesq;(UManagerqU* q?u.gG3;((U OFS.FolderqUFolderqtqNt.}q(UidqUFilesqU__ac_local_roles__q}qUamosq ]q UOwnerq asU example.htmlq (Uzq (U OFS.ImageqUFileqtqtqQU_objectsq(}q(U meta_typeqUFileqUidqU example.txtqu}q(hhhh utUtitleqUh(U{q(hUFileqtqtqQu.fG3; .((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Usortq Ureverseq U _getattr_q U_getattrq U containerqUfilesqUargsqUsequenceqtqU co_argcountqKubU_paramsqUsort='id', reverse=0qUidqUgetFilesqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}q U_asgnsq!}q"(Uname_containerq#U containerq$U name_subpathq%Utraverse_subpathq&U name_contextq'Ucontextq(U name_m_selfq)Uscriptq*usbU func_defaultsq+(Uidq,Ktq-U_codeq.TwcsdddZdS(s; Returns a list of files sorted by id, date, type or size. sidic st}d||tddd}|djo7| o dff}n dddff}n |djoC | od fdff}nd ddfdff}n|d joC| od fdff}nd ddfdff}nT|d joC| od ddfdff}nd fdff}n|td||SdS(s; Returns a list of files sorted by id, date, type or size. sFiless objectValuessFilesidsgetIdscmpsdescsdatesbobobase_modification_timestypesgetContentTypessizesgetSizessortN(s _getattr_s_getattrs containersfilesssortsreversesargsssequence(ssortsreverses _getattr_s_getattrs containersfilessargsssequence((sScript (Python)sgetFiless& !    N(sgetFiles(sgetFiles((sScript (Python)ssq/U_bodyq0T """ Returns a list of files sorted by id, date, type or size. """ files=container.Files.objectValues('File') # build arguments for sequence.sort if sort=='id': if not reverse: args=(('getId',),) else: args=(('getId', 'cmp', 'desc'),) elif sort=='date': if not reverse: args=(('bobobase_modification_time',), ('getId',)) else: args=(('bobobase_modification_time', 'cmp', 'desc'), ('getId',)) elif sort=='type': if not reverse: args=(('getContentType',), ('getId',)) else: args=(('getContentType', 'cmp', 'desc'), ('getId',)) elif sort=='size': if not reverse: args=(('getSize', 'cmp', 'desc'), ('getId',)) else: args=(('getSize',), ('getId',)) return sequence.sort(files, args) q1U Script_magicq2KUwarningsq3)Uerrorsq4)U Python_magicq5U* q6u.eG3;V((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Unew_sortq Usortq Ureverseq U _getattr_q U_getattrqUcontextqUurlqU new_reverseqtqU co_argcountqKubU_paramsqUnew_sort, sort, reverseqUidqUgetLinkqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}q U_asgnsq!}q"(Uname_containerq#U containerq$U name_subpathq%Utraverse_subpathq&U name_m_selfq'Uscriptq(U name_contextq)Ucontextq*usbU func_defaultsq+NU_codeq,TcsdZdS(sA Returns a URL which gives sorting commands in the query string. c sjt}d||tdd}||jo d}n | } d|||fSdS(sA Returns a URL which gives sorting commands in the query string. sREQUESTsURL0is%s?sort=%s&reverse:int=%sN(s _getattr_s_getattrscontextsurlsnew_sortssorts new_reversesreverse(snew_sortssortsreverses _getattr_s_getattrscontextsurls new_reverse((sScript (Python)sgetLinks   N(sgetLink(sgetLink((sScript (Python)ssq-U_bodyq.U""" Returns a URL which gives sorting commands in the query string. """ url=context.REQUEST.URL0 if new_sort != sort: new_reverse=0 else: new_reverse=not reverse return "%s?sort=%s&reverse:int=%s" % (url, new_sort, new_reverse) q/U Script_magicq0KUwarningsq1)Uerrorsq2)U Python_magicq3U* q4u.dG3;((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Ufileq U _getitem_q U_getitemq U _getattr_q U_getattrqUProducts.PythonScripts.standardqU url_quoteqU containerqUmessageqUcontextqtqU co_argcountqKubU_paramsqUfileqUidqUaddFileqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments q oq!}q"U_asgnsq#}q$(Uname_containerq%U containerq&U name_subpathq'Utraverse_subpathq(U name_m_selfq)Uscriptq*U name_contextq+Ucontextq,usbU func_defaultsq-NU_codeq.TcsdZdS(s Adds a file to the library. c st}t}ddkl}||||tddddddddd | d ||d }|||t d d dd|td||fSdS(s Adds a file to the library. (s url_quotesFilessmanage_addProductsOFSPsmanage_addFilesidsstitlesfiles File '%s' uploaded successfully.sfilenamesREQUESTsRESPONSEsredirects %s?message=%ss absolute_urlN( s _getitem_s_getitems _getattr_s_getattrsProducts.PythonScripts.standards url_quotes containersfilesmessagescontext( sfiles _getitem_s_getitems _getattr_s_getattrsProducts.PythonScripts.standards url_quotes containersmessagescontext((sScript (Python)saddFiles 4N(saddFile(saddFile((sScript (Python)ssq/U _proxy_rolesq0(UManagerq1tq2U_bodyq3T""" Adds a file to the library. """ from Products.PythonScripts.standard import url_quote # create the file container.Files.manage_addProduct['OFSP'].manage_addFile(id='', title='', file=file) # create a success message message="File '%s' uploaded successfully." % file.filename # redirect to main page - this is necessary to make all the URLs # on the main page work correctly. return context.REQUEST.RESPONSE.redirect("%s?message=%s" % (container.absolute_url(), url_quote(message))) q4U Script_magicq5KUwarningsq6)Uerrorsq7)U Python_magicq8U* q9u.cG3;*((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Ubytesq Umegsq Uktq U co_argcountq KubU_paramsqUbytesqUidqUgetSizeqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_subpathqUtraverse_subpathq U name_m_selfq!Uscriptq"U name_contextq#Ucontextq$usbU func_defaultsq%NU_codeq&TcsdZdS(s. Format a number of bytes as bytes, K, or MB. csqd|d}|djod|Sn|d}|djo d|Sn d|SdS(s. Format a number of bytes as bytes, K, or MB. f 1048576.0is%.2f MBf1024.0s%d Ks%d bytesN(sbytessmegssk(sbytessmegssk((sScript (Python)sgetSizes  N(sgetSize(sgetSize((sScript (Python)ssq'U_bodyq(U""" Format a number of bytes as bytes, K, or MB. """ megs=bytes / 1048576.0 if megs > 1: return "%.2f MB" % megs k=bytes / 1024.0 if k > 1: return "%d K" % k return "%d bytes" % bytes q)U Script_magicq*KUwarningsq+)Uerrorsq,)U Python_magicq-U* q.u.bG3;((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqU index_htmlqU__ac_local_roles__q}q Uamosq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqTm The document title or folder title or the example title

The title

This example shows how to create a simple file library. It demonstrates batching and sorting. You can click on the column names to sort the files. If you click twice on a column then the files are sorted in reverse order. If you upload more than eight files, then the results will be split up over more than one page. This is called batching.

The files are located in the Files folder. The getFiles script returns a sorted list of files. The getLink and getSize scripts do small formatting tasks to build hyperlinks and format file sizes. The batching is done in the index_html template. The template also makes use of the test function to assign different CSS classes to elements depending on conditions. This is how the sorted column name is bolded and alternate table rows are made gray.

Files

message goes here

Files 1 to 10 of 17.
< previous 10 next 10 >

ID Type Size Last Modified
example.zip application/x-zip-compressed 12 K Nov 14, 2001 9:31 am

There are no files currently available.

Upload a File

You can add a file to the library by uploading it from your local computer. The addFile script accepts the file upload and creates a new file object in the Files folder. It then returns this page with a confirmation message. The addFile script has the "manager" proxy role, which allows it to add a file regardless of the user's permissions.


qU content_typeqU text/htmlqUtitleqUu.aG3;((U OFS.FolderqUFolderqtqNt.}q(U index_htmlq(Utq(U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtq tq QUidq U GuestBookq U__ac_local_roles__q }qUamosq]qUOwnerqasU_objectsq(}q(U meta_typeqU Page Templateqh U index_htmlqu}q(hUFolderqh UEntriesqu}q(hhh U addEntry.htmlqu}q(U meta_typeqUScript (Python)qUidqUaddEntryq u}q!(hhhU formatEntryq"u}q#(hhhU getEntriesq$uth(Uuq%(hUZopePageTemplateq&tq'tq(Qh(Uvq)(hUFolderq*tq+tq,Qh$(Uwq-(U#Products.PythonScripts.PythonScriptq.U PythonScriptq/tq0tq1QUtitleq2U Guest Bookq3h (Uxq4(h.U PythonScriptq5tq6tq7Qh"(Uyq8(h.U PythonScriptq9tq:tq;Qu.`G3;((U OFS.FolderqUFolderqtqNt.}q(UaddItemsq(Unq(U#Products.PythonScripts.PythonScriptqU PythonScriptqtq tq QU index_htmlq (Uoq (U'Products.PageTemplates.ZopePageTemplateq UZopePageTemplateqtqtqQUidqU ShoppingCartqU__ac_local_roles__q}qUamosq]qUOwnerqasU_objectsq(}q(U meta_typeqUScript (Python)qhU currentItemsqu}q(hhhUgetItemqu}q(hhhUgetTotalq u}q!(hU Page Templateq"hU index_htmlq#u}q$(U meta_typeq%UScript (Python)q&Uidq'U deleteItemsq(u}q)(h%h&h'hutUtitleq*U Shopping Cartq+h(Upq,(hU PythonScriptq-tq.tq/Qh(Uqq0(hU PythonScriptq1tq2tq3Qh((Urq4(hU PythonScriptq5tq6tq7Qh (Usq8(hU PythonScriptq9tq:tq;Qu.oG3;((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqU index_htmlqU__ac_local_roles__q}q Uamosq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqT The document title or folder title or the example title

The title

This example shows how to use sessions. Notice that Zope remembers the contents of your shopping cart until you close your browser.

The contents of the cart are stored in a session. The session variable items keeps track of the item ids and quantities of items in your shopping cart. The currentItems script uses this information to retrieve records describing the items in the shopping card. The deleteItems script removes items from the shopping cart.

Your Shopping Cart

Item Price Quantity
Item $10.00 2
Total
$25.00

There are currently no items in your shopping cart.

Add Items

Item Description Price Quantity
Item Description $10.00

The addItems script adds items to your shopping cart. The above form uses records to build an order list of to pass to the script. Each item in the order list has a id and a quantity field.

qU content_typeqU text/htmlqUtitleqUu.nG3; ((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (Uordersq UREQUESTq U_write_q U_writeq U _getattr_qU_getattrqUcontextqUsessionqUitemsqUorderqUintqUquantityqUNoneqU containerqtqU co_argcountqKubU_paramsqUorders, REQUEST=NoneqUidqUaddItemsqU__ac_local_roles__q}qUamosq ]q!UOwnerq"asU _bind_namesq#(cShared.DC.Scripts.Bindings NameAssignments q$oq%}q&U_asgnsq'}q((Uname_containerq)U containerq*U name_subpathq+Utraverse_subpathq,U name_contextq-Ucontextq.U name_m_selfq/Uscriptq0usbU func_defaultsq1(Ntq2U_codeq3TmcstdZdS(sf Adds one or more items to the shopping cart. Each order is a record with an id and a quantity field. c s t}t}d||tdd}||ddh} xz|d rm}  t || d}  | djo? ||d|| dd| |||| dsq4U_bodyq5Tg""" Adds one or more items to the shopping cart. Each order is a record with an id and a quantity field. """ session=context.REQUEST.SESSION # get the items, items is a dictionary that maps item ids to quantities items=session.get('items',{}) for order in orders: quantity=int(order.quantity) if quantity != 0: items[order.id]=items.get(order.id, 0) + quantity # save items back to session (this is necessary # since items is a mutable non-persistent object) session['items']=items # if called from the web return a response page if REQUEST is not None: return container.index_html(REQUEST) q6U Script_magicq7KUwarningsq8)Uerrorsq9)U Python_magicq:U* q;u.mG3;:((U OFS.FolderqUFolderqtqNt.}q(UidqUMammalsqU__ac_local_roles__q}qUamosq ]q UOwnerq asUPrimatesq (U~q (hUFolderqtqtqQU_objectsq(}q(U meta_typeqUFolderqhh u}q(hhhUBatsqu}q(hhhUWhalesquth(Uq(hUFolderqtqtqQUtitleqUh(Uq(hUFolderqtq tq!Qu.lG3;r((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUReptilesqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.kG3;g((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U _getattr_q U_getattrq Ucontextq Ufoldersq tqU co_argcountqKubU_paramsqUUidqU siblings.pyqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q(Uname_containerqU containerqU name_subpathq Utraverse_subpathq!U name_contextq"Ucontextq#U name_m_selfq$Uscriptq%usbU func_defaultsq&NU_codeq'T3csdZdS(s/ This script returns a list of sibling folders csRt}d||tddd}||dt|SdS(s/ This script returns a list of sibling folders s aq_parents objectValuessFoldersremoveN(s _getattr_s_getattrscontextsfolders(s _getattr_s_getattrscontextsfolders((sScript (Python)s siblings.pys $N(s siblings.py(s siblings.py((sScript (Python)ssq(U_bodyq)U""" This script returns a list of sibling folders """ # get my parent's children folders=context.aq_parent.objectValues('Folder') # remove me from the list of children folders.remove(context) return folders q*U Script_magicq+KUwarningsq,)Uerrorsq-)U Python_magicq.U* q/u.jG3;((U OFS.FolderqUFolderqtqNt.}q(UidqUBirdsqU__ac_local_roles__q}qUamosq ]q UOwnerq asUPigeonsq (U|q (hUFolderqtqtqQU_objectsq(}q(U meta_typeqUFolderqhUCrowsqu}q(hhhh utUtitleqUh(U}q(hUFolderqtqtqQu.iG3; q((U'Products.PageTemplates.ZopePageTemplateqUZopePageTemplateqtqNt.}q(UexpandqKUidqU index_htmlqU__ac_local_roles__q}q Uamosq ]q UOwnerq asU _bind_namesq (cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}qU name_subpathqUtraverse_subpathqssbU_textqT% The document title or container title

breadcrumbs navigation

The title

This example shows how to create simple automatic navigation devices. Take a look at the Navigation folder to see how it was built. The automatically created links on this page allow you to traverse a collection of folders and sub-folders.

Current Folder: Folder ID

Parent Links

The links you see across the top of the page are called breadcrumbs. They show you where you are in the site and let you navigate up the site tree. They are created with a Python-based script, breadcrumbs.py.

Child Links

These automatic links allow you to navigate deeper into the site. These links are created with a Python expression in a Page Template. You could also use a Python-based Script to create the links.

You could customize these links to only show certain sub-folders, rather than listing all sub-folders.

There are no sub-folders here.

Sibling Links

This navigation device allows you to go to sibling folders. A sibling folder is one that is in the same parent as the current folder. The list of siblings is generated by the siblings.py script.

There are no sibling folders here.

qU content_typeqU text/htmlqUtitleqUu.hG3;m((U#Products.PythonScripts.PythonScriptqU PythonScriptqtqNt.}q(U func_codeq(cShared.DC.Scripts.Signature FuncCode qoq}q(U co_varnamesq (U _getitem_q U_getitemq U _getattr_q U_getattrq UlinksqUcontextqUparentqtqU co_argcountqKubU_paramsqUUidqUbreadcrumbs.pyqU__ac_local_roles__q}qUamosq]qUOwnerqasU _bind_namesq(cShared.DC.Scripts.Bindings NameAssignments qoq}qU_asgnsq}q (Uname_containerq!U containerq"U name_subpathq#Utraverse_subpathq$U name_m_selfq%Uscriptq&U name_contextq'Ucontextq(usbU func_defaultsq)NU_codeq*TScsdZdS(s This script creates breadcrumb style navigation links. It walks the REQUEST.PARENTS list of parents and creates a hyperlink for each parent. It stops at the Examples folder. c st}t}dg}x|||tdddddre}| |ddd||d||d f ||d d jo PnqLW |d d |SdS( s This script creates breadcrumb style navigation links. It walks the REQUEST.PARENTS list of parents and creates a hyperlink for each parent. It stops at the Examples folder. sREQUESTsPARENTSiNisinserts%ss absolute_urlsgetIdsExampless/sjoin(s _getitem_s_getitems _getattr_s_getattrslinksscontextsparent(s _getitem_s_getitems _getattr_s_getattrslinksscontextsparent((sScript (Python)sbreadcrumbs.pys 98 N(sbreadcrumbs.py(sbreadcrumbs.py((sScript (Python)ssq+U_bodyq,T""" This script creates breadcrumb style navigation links. It walks the REQUEST.PARENTS list of parents and creates a hyperlink for each parent. It stops at the Examples folder. """ links=[] for parent in context.REQUEST.PARENTS[1:]: links.insert(0, """%s""" % (parent.absolute_url(), parent.getId())) if parent.getId() == "Examples": break return "/".join(links) q-U Script_magicq.KUwarningsq/)Uerrorsq0)U Python_magicq1U* q2u._G3;((U OFS.FolderqUFolderqtqNt.}q(Ubreadcrumbs.pyq(Uhq(U#Products.PythonScripts.PythonScriptqU PythonScriptqtq tq QU index_htmlq (Uiq (U'Products.PageTemplates.ZopePageTemplateq UZopePageTemplateqtqtqQUidqU NavigationqU__ac_local_roles__q}qUamosq]qUOwnerqasUBirdsq(Ujq(hUFolderqtqtqQU_objectsq(}q(U meta_typeqUScript (Python)q hhu}q!(hUFolderq"hUMammalsq#u}q$(hh"hhu}q%(hh"hUReptilesq&u}q'(U meta_typeq(UScript (Python)q)Uidq*U siblings.pyq+u}q,(h(U Page Templateq-h*U index_htmlq.utU siblings.pyq/(Ukq0(hU PythonScriptq1tq2tq3Qh&(Ulq4(hUFolderq5tq6tq7Qh#(Umq8(hUFolderq9tq:tq;QUtitleq The document title or folder title or the example title

The title

Welcome to Zope. We've collected some example applications that demonstrate simple Zope features. You can examine how these applications work by looking at them in the management interface. If you'd like to contribute an example application to add to this collection, write to us. Enjoy!

You can delete the Examples folder if you wish. You can also reload the examples by importing the import/Examples.zexp file.

qU content_typeqU text/htmlqUtitleqUu.\G3;;((U OFS.ImageqUFileqtqNt.}q(UsizeqMSUdataqTSH1, H2, H3, H4, H5, H6 { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; color: #6699CC; } body, .normal { background: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } .small{ background: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt; } .grey{ background: #DDDDDD; } .white{ background: #FFFFFF; } .bold{ font-weight:bold; } .normal{ font-weight:normal; } .message{ background: #FFFFAA; border-width: thin; border-style: solid; padding: 10pt; font-weight:bold; } qU_EtagSupport__etagqU ts05767609.14q U__name__q U examples.cssq Utitleq UU content_typeq Utext/cssqU preconditionqUU__ac_local_roles__q}qUamosq]qUOwnerqasu.G3;q((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUMonkeysqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.G3;((U OFS.ImageqUFileqtqNt.}q(UsizeqMMUdataqTMThis is an example comment. It can contain multiple lines of text. Note that you cannot include HTML in your comments, since the HTML is quoted. This guest book entry is stored in a file named entry_0 in the Entries folder. To edit the entry, simple edit that file. You can also delete an entry by deleting its file.qU_EtagSupport__etagqU ts05745452.64q U__name__q Uentry_0q U guest_nameq UAmosq U _propertiesq(}q(UidqUtitleqUtypeqUstringqu}q(hU content_typeqhhu}q(hh hhuthU text/plainqhUU preconditionqUU__ac_local_roles__q}qUamosq]qUOwnerqasu.G3;n((U OFS.FolderqUFolderqtqNt.}q(UtitleqUUidqUBatsqU__ac_local_roles__q}q Uamosq ]q UOwnerq asu.G%x]`p Added GlobalsG%x] ((U PersistenceqUPersistentMappingqtqNt.}qU _containerq}q(U _pack_timeqGA˗bVœUZGlobalsq(Uq (UBTreeq UBTreeq ttQU Applicationq (Uq (UOFS.ApplicationqU ApplicationqttQus.G%x] ((UBTreeqUBTreeqtqNt.).`Gj#p Installed product ExternalMethodGj#u((U App.ProductqUProductqtqNt.}q(UiconqUp_/InstalledProduct_iconqUidqUExternalMethodqU__ac_local_roles__q }q USystem Processesq ]q UOwnerq asU_objectsq(}q(U meta_typeqU Product HelpqhUHelpqutUversionqUExternal Method-1-0-0qUhomeqU0/usr/lib/zope/lib/python/Products/ExternalMethodqUthisIsAnInstalledProductqKUmanage_distributionqNUmanage_optionsq(}q(UlabelqUContentsqUhelpq(UOFSPqUObjectManager_Contents.stxqtUactionq U manage_mainq!u}q"(hU Propertiesq#h(hUProperties.stxq$th Umanage_propertiesFormq%u}q&(hUSecurityq'h(hU Security.stxq(tUfilterq)cAccessControl.Role _isNotBeingUsedAsAMethod q*h U manage_accessq+u}q,(hUDefine Permissionsq-h(hUSecurity_Define-Permissions.stxq.th)cAccessControl.Role _isBeingUsedAsAMethod q/h h+u}q0(hUUndoq1h(hUUndo.stxq2th Umanage_UndoFormq3u}q4(hU Ownershipq5h(hU Ownership.stxq6th)cAccessControl.Owned ownableFilter q7h U manage_ownerq8u}q9(hUFindq:Utargetq;h!h(hUFind.stxq(hUREADMEq?h U manage_readmeq@u}qA(hURefreshqBh(hUProduct_Refresh.stxqCth Umanage_refreshqDutUtitleqEU8Installed product ExternalMethod (External Method-1-0-0)qFh(UqG(UHelpSys.HelpSysqHU ProductHelpqIttQU _distributionqJNu.Gj#u((UHelpSys.HelpSysqU ProductHelpqtqNt.}q(UlastRegisteredq(cDateTime.DateTime DateTime qNoq}q(U_hourq K U_dq G@# U_fmonq U Septemberq U_yearq MU_pmonqUSep.qUtimeqG? U_dayqKU_millisqL1032207121235L U_adayqUMonqU_tqGA{U _dayoffsetqKU_minuteqK U_monthqK U_pmqUpmqU_secondqG?\(U_amonqUSepqU_fdayqUMondayqU_pdayq UMon.q!U_pmhourq"KU_tzq#UGMT-7q$U_nearsecq%G?ubUidq&UHelpq'UExternal-Method_Try-It.stxq((Uq)(UHelpSys.HelpTopicq*USTXTopicq+ttQU_objectsq,(}q-(U meta_typeq.U Help Topicq/h&UExternal-Method_Add.stxq0u}q1(h.h/h&UExternal-Method.stxq2u}q3(h.h/h&UExternal-Method_Properties.stxq4u}q5(h.h/h&h(u}q6(h.h/h&UExternalMethod.pyq7uth2(Uq8(h*USTXTopicq9ttQUtitleq:U Zope Helpq;h4(Uq<(h*USTXTopicq=ttQh0(Uq>(h*USTXTopicq?ttQUcatalogq@(UqA(UProducts.ZCatalog.ZCatalogqBUZCatalogqCttQh7(UqD(UHelpSys.APIHelpTopicqEU APIHelpTopicqFttQu.Gj#u((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUExternalMethodqUidqUExternalMethod.pyqUfuncsq ]q (Uq (hU MethodDocq ttQaUdocq UUapisq]q(Uq(hUAPIDocqttQau.Gj#u((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(U constructorq(Uq(hU MethodDocqttQUnameqUExternalMethodq U attributesq ]q Udocq TWeb-callable functions that encapsulate external Python functions. The function is defined in an external file. This file is treated like a module, but is not a module. It is not imported directly, but is rather read and evaluated. The file must reside in the 'Extensions' subdirectory of the Zope installation, or in an 'Extensions' subdirectory of a product directory. Due to the way ExternalMethods are loaded, it is not *currently* possible to import Python modules that reside in the 'Extensions' directory. It is possible to import modules found in the 'lib/python' directory of the Zope installation, or in packages that are in the 'lib/python' directory.q Umethodsq]q((Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.Gj#u((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(Uoptionalq)Urequiredq)UdocqT3Call the External Method. Calling an External Method is roughly equivalent to calling the original actual function from Python. Positional and keyword parameters can be passed as usual. Note however that unlike the case of a normal Python method, the "self" argument must be passed explicitly. An exception to this rule is made if: - The supplied number of arguments is one less than the required number of arguments, and - The name of the function's first argument is 'self'. In this case, the URL parent of the object is supplied as the first argument.qUvarargsq Uargsq Ukwargsq Ukwq Unameq U__call__qu.Gj#u((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU manage_editqUoptionalq((UREQUESTqNttUrequiredq (Utitleq Umoduleq Ufunctionq tUdocq T[Change the External Method. See the description of manage_addExternalMethod for a description of the arguments 'module' and 'function'. Note that calling 'manage_edit' causes the "module" to be effectively reloaded. This is useful during debugging to see the effects of changes, but can lead to problems of functions rely on shared global data.qu.Gj#u((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addExternalMethodqUoptionalq)Urequiredq(Uidq Utitleq Umoduleq Ufunctionq tq UdocqT Add an external method to an 'ObjectManager'. In addition to the standard object-creation arguments, 'id' and title, the following arguments are defined: function -- The name of the python function. This can be a an ordinary Python function, or a bound method. module -- The name of the file containing the function definition. The module normally resides in the 'Extensions' directory, however, the file name may have a prefix of 'product.', indicating that it should be found in a product directory. For example, if the module is: 'ACMEWidgets.foo', then an attempt will first be made to use the file 'lib/python/Products/ACMEWidgets/Extensions/foo.py'. If this failes, then the file 'Extensions/ACMEWidgets.foo.py' will be used.qu.Gj#u((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addExternalMethodqUoptionalq)Urequiredq(Uidq Utitleq Umoduleq Ufunctionq tq UdocqT Add an external method to an 'ObjectManager'. In addition to the standard object-creation arguments, 'id' and title, the following arguments are defined: function -- The name of the python function. This can be a an ordinary Python function, or a bound method. module -- The name of the file containing the function definition. The module normally resides in the 'Extensions' directory, however, the file name may have a prefix of 'product.', indicating that it should be found in a product directory. For example, if the module is: 'ACMEWidgets.foo', then an attempt will first be made to use the file 'lib/python/Products/ACMEWidgets/Extensions/foo.py'. If this failes, then the file 'Extensions/ACMEWidgets.foo.py' will be used.qu.Gj#u`((UProducts.ZCatalog.ZCatalogqUZCatalogqtqNt.}q(UidqUcatalogqU_objectsq(}q(U meta_typeq U Vocabularyq hh utq U thresholdq M'Uvocab_idq h U vocabularyq(Uq(U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqttQU_catalogq(Uq(UProducts.ZCatalog.CatalogqUCatalogqttQUtitleqUh (h(hU VocabularyqttQu.Gj#ul((UProducts.ZCatalog.CatalogqUCatalogqtqNt.}q(Uschemaq}q(U permissionsqKU categoriesqKU title_or_idq KUidq KUurlq KuU__len__q (Uq (U BTrees.LengthqULengthqttQUdataq(Uq(UBTrees.IOBTreeqUIOBTreeqttQUindexesq}q(USearchableTextq(Uq(U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqttQh(Uq(U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqttQh(Uq(hU KeywordIndexqttQuUnamesq(hhh h h tq Uuidsq!(Uq"(UBTrees.OIBTreeq#UOIBTreeq$ttQUlexiconq%U Vocabularyq&Upathsq'(Uq((hUIOBTreeq)ttQu.Gj#u((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JEUC/Control_Panel/Products/ExternalMethod/Help/External-Method_Add.stxqJEU?/Control_Panel/Products/ExternalMethod/Help/External-Method.stxqJEUJ/Control_Panel/Products/ExternalMethod/Help/External-Method_Properties.stxqJEUF/Control_Panel/Products/ExternalMethod/Help/External-Method_Try-It.stxqJEU=/Control_Panel/Products/ExternalMethod/Help/ExternalMethod.pyqttttq .Gj#u((UBTrees.OIBTreeqUOIBTreeqtqNt.((((U?/Control_Panel/Products/ExternalMethod/Help/External-Method.stxqJEUC/Control_Panel/Products/ExternalMethod/Help/External-Method_Add.stxqJEUJ/Control_Panel/Products/ExternalMethod/Help/External-Method_Properties.stxqJEUF/Control_Panel/Products/ExternalMethod/Help/External-Method_Try-It.stxqJEU=/Control_Panel/Products/ExternalMethod/Help/ExternalMethod.pyqJEttttq .Gj#u((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U permissionsq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.Gj#um((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JE]qUViewqaJE]qhaJE]qhaJE]qhaJE]q hattttq .Gj#uh((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UViewq(Uq(UBTrees.IIBTreeqU IITreeSetqttQttttq.Gj#uK((UBTrees.IIBTreeqU IITreeSetqtqNt.((((JEJEJEJEJEttttq.Gj#u&((U BTrees.LengthqULengthqtqNt.K.Gj#u((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U categoriesq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.Gj#u((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JE]qUContent Manager InformationqaJE]qhaJE]qhaJE]qhaJE]q hattttq .Gj#u((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UContent Manager Informationq(Uq(UBTrees.IIBTreeqU IITreeSetqttQttttq.Gj#uK((UBTrees.IIBTreeqU IITreeSetqtqNt.((((JEJEJEJEJEttttq.Gj#u&((U BTrees.LengthqULengthqtqNt.K.Gj#u((U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqtqNt.}q(UidqUSearchableTextqU_lexiconq(Uq(U0Products.PluginIndexes.TextIndex.GlobbingLexiconq UGlobbingLexiconq ttQU useOperatorq Uorq U call_methodsq NU ignore_exqNU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQUcatalogq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU vocabulary_idqU VocabularyqU_indexq(Uq(hUIOBTreeqttQu.Gj#u((UBTrees.IOBTreeqUIOBTreeqtqNt.(((Uq(hUIOBucketqttQJ$(Uq(hUIOBucketqttQt(h(hUIOBucketqttQtq .Gj#u((UBTrees.IOBTreeqUIOBucketqtqNt.((J$}q(JEKJEKuJ(JEKtqJ:(JEKtqJz(JEKtqJ{9(JEKtqJn(JEKtq Jc?K(JEKtq J(Uq (UBTrees.IIBTreeq UIIBTreeq ttQJ?k (JEKtqJ;r }q(JEKJEKuJ (JEKtqJj }q(JEKJEKuJ=}q(JEKJEKuJFa(JEKtqJEX6(JEKtqJq}q(JEKJEKuJU(JEKtqJ}q(JEKJEKuJ(JEKtqJ!}q(JEKJEKuJD`$}q(JEKJEKuJ(+(Uq(h UIIBTreeqttQJӻ/(JEKtqJ*3}q(JEKJEKuJ:}q(JEKJEKuJ8u=}q (JEKJEKJEKuJ>}q!(JEKJEKuJDxD(JEKtq"JR(JEKtq#JTV}q$(JEKJEKuJuoW(JEKtq%JƆ*Z}q&(JEKJEKuJ_[(JEKtq'JMn\(JEKtq(J\}q)(JEKJEKuJqv^}q*(JEKJEKuJs`(JEKtq+Ji}q,(JEKJEKuJl}q-(JEKJEKJEKuJl}q.(JEKJEKuJa,n}q/(JEKJEKJEKuJo}q0(JEKJEKuJ ft}q1(JEKJEKuJ#3v(JEKtq2ttq3.Gj#uL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JEKJEKJEKJEKttttq.Gj#uL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JEKJEKJEKJEKttttq.Gj#up((UBTrees.IOBTreeqUIOBucketqtqNt.((JH(JEKtqJ}q(JEKJEKuJ"`/}q(JEKJEKuJ}q(JEKJEKJEKuJ:_(JEKtqJ$x}q (JEKJEKuJ}q (JEKJEKuJ0n}q (JEKJEKuJ"J}q (JEKJEKuJk(Uq (UBTrees.IIBTreeqUIIBTreeqttQJ[~(JEKtqJr>(JEKtqJsv3}q(JEKJEKJEKuJ y}q(JEKJEKuJ/}q(JEKJEKuJC }q(JEKJEKuJh}q(JEKJEKuJa(Uq(hUIIBTreeqttQJ(A(Uq(hUIIBTreeqttQJ9w}q(JEKJEKuJ(JEKtqJfS(JEKtqJ(JEKtqJ(JEKtqJ!p(JEKtq J p (JEKtq!J_S}q"(JEKJEKJEKuJJsv3J yJ/JC JhJaJ(AJfSJ p J_SJJTVJƆ*ZJ\Jqv^JiJlJlJa,nJoJ fteJE]q(JJ0nJkJaJ(AJ9wJJ_SJJ6DJvXJJzJc?KJJ JEX6JUJ(+Jӻ/J8u=JuoWJa,nJ#3veJE]q(JJJ$xJJ"JJkJsv3J yJ/JC JhJaJ(AJ9wJ!pJ_SJJTVJƆ*ZJ\Jqv^Js`JiJlJlJa,nJoJ fteJE]q(J"`/J:_J0nJkJsv3JaJ(AJJJ-J:J{9JnJJFaJqJ(+JDxDJRJ_[JMn\Jlettttq.Gj#ux((U0Products.PluginIndexes.TextIndex.GlobbingLexiconqUGlobbingLexiconqtqNt.}q(U useSplitterqU ZopeSplitterqU SplitterFuncqcProducts.PluginIndexes.TextIndex.Splitter.ZopeSplitter Splitter qU _inverseLexq (Uq (UBTrees.IOBTreeq UIOBTreeq ttQU_digramsq (Uq(UBTrees.OOBTreeqUOOBTreeqttQU_lexiconq(Uq(UBTrees.OIBTreeqUOIBTreeqttQu.Gj#u((UBTrees.OIBTreeqUOIBTreeqtqNt.(((Uq(hUOIBucketqttQUidq(Uq(hUOIBucketqttQt(h(hUOIBucketq ttQtq .Gj#u((UBTrees.OIBTreeqUOIBucketqtqNt.((UidqJ;r UifqJsv3UinqJ6DU indicatedqJ$xUisqJUotherqJUU parametersqJ{9UpassedqJ:_UproductqJlU propertiesqJs`UpythonqJ8u=UrequestqJUresultsq JRUreturnsq!JFaUshouldq"JiU specifiesq#J yUspecifyq$J:Utestq%JDxDUtheq&JkUthisq'JaUtitleq(J/Utoq)JƆ*ZUtryq*JnUuseq+J!Uviewq,JqUwebq-JUwhichq.JoUwithq/J#3vUyouq0JD`$Uzopeq1Ja,nttq2.Gj#u%((UBTrees.OIBTreeqUOIBucketqtqNt.((UaddqJHUaddsqJ p UallowsqJj UanqJ9wUandqJUanyq JMn\Uareq JlU associateq JUbeq J_SUbyq JUcallqJ UcalledqJEX6UcanqJc?KUcontrolsqJ*3UcreateqJ[~UcreatesqJr>UcurrentqJ?k U descriptionqJ-U directoriesqJ=U directoryqJ<"UdotqJmUdtmlqJuoWUexecutesqJ_[U extensionsqJUexternalqJ(AUfileqJ"JU filesystemqJUfolderqJUfollowedq JhUforq!JC Ufromq"J0nUfunctionq#Jt(Uq$(hUOIBucketq%ttQtq&.Gj#u((UBTrees.OOBTreeqUOOBTreeqtqNt.(((Uq(hUOOBucketqttQUayq(Uq(hUOOBucketqttQUe$q (Uq (hUOOBucketq ttQUfuq (Uq (hUOOBucketqttQUioq(Uq(hUOOBucketqttQUmlq(Uq(hUOOBucketqttQUonq(Uq(hUOOBucketqttQUscq(Uq(hUOOBucketqttQUtsq(Uq(hUOOBucketqttQt(h(hUOOBucketqttQtq.Gj#uK((UBTrees.OOBTreeqUOOBucketqtqNt.((Utsq(Uq(UBTrees.IIBTreeqUIISetqttQUtuq(Uq (hUIISetq ttQUu$q (Uq (hUIISetq ttQUucq(Uq(hUIISetqttQUueq(Uq(hUIISetqttQUulq(Uq(hUIISetqttQUunq(Uq(hUIISetqttQUurq(Uq(hUIISetqttQUusq(Uq(hUIISetqttQUutq (Uq!(hUIISetq"ttQUviq#(Uq$(hUIISetq%ttQUw$q&(Uq'(hUIISetq(ttQUweq)(Uq*(hUIISetq+ttQUwhq,(Uq-(hUIISetq.ttQUwiq/(Uq0(hUIISetq1ttQUwsq2(Uq3(hUIISetq4ttQUxeq5(Uq6(hUIISetq7ttQUxtq8(Uq9(hUIISetq:ttQUy$q;(Uq<(hUIISetq=ttQUyoq>(Uq?(hUIISetq@ttQUysqA(UqB(hUIISetqCttQUytqD(UqE(hUIISetqFttQUzoqG(UqH(hUIISetqIttQttqJ.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Ja,nttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J8u=J\ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JD`$ttq.Gj#uM((UBTrees.IIBTreeqUIISetqtqNt.((JJ<"J:JnJJ:JMn\ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJ(Attq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J_[ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jj ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J#3vttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JhJttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JfSJqttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jqttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J_[ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J!ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J?k JFattq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JRJTVJittq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J\Jlttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JD`$ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JFattq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JRJ\ttq.Gj#u((UBTrees.OOBTreeqUOOBucketqtqNt.((Uscq(Uq(UBTrees.IIBTreeqUIISetqttQUseq(Uq (hUIISetq ttQUshq (Uq (hUIISetq ttQUsiq(Uq(hUIISetqttQUsoq(Uq(hUIISetqttQUspq(Uq(hUIISetqttQUssq(Uq(hUIISetqttQUstq(Uq(hUIISetqttQUsuq(Uq(hUIISetqttQUsyq (Uq!(hUIISetq"ttQUt$q#(Uq$(hUIISetq%ttQUteq&(Uq'(hUIISetq(ttQUthq)(Uq*(hUIISetq+ttQUtiq,(Uq-(hUIISetq.ttQUtlq/(Uq0(hUIISetq1ttQUtmq2(Uq3(hUIISetq4ttQUtoq5(Uq6(hUIISetq7ttQUtrq8(Uq9(hUIISetq:ttQt(Uq;(hUOOBucketq((UBTrees.IIBTreeqUIISetqtqNt.((JJ/J-Js`ttq.Gj#uR((UBTrees.IIBTreeqUIISetqtqNt.((JkJaJzJUJ(+J8u=J\J#3vttq.Gj#ua((UBTrees.IIBTreeqUIISetqtqNt.((JJ$xJ[~Jr>J(AJJJ{9JDxDJ_[J ftttq.Gj#uM((UBTrees.IIBTreeqUIISetqtqNt.((J"`/JJmJvXJ?k JDxDJlttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JRttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JJJDxDttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J:_Jttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J yJ:ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jittq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J:_J!ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J-ttq.Gj#uj((UBTrees.OOBTreeqUOOBucketqtqNt.((Uonq(Uq(UBTrees.IIBTreeqUIISetqttQUopq(Uq (hUIISetq ttQUorq (Uq (hUIISetq ttQUotq(Uq(hUIISetqttQUouq(Uq(hUIISetqttQUowq(Uq(hUIISetqttQUpaq(Uq(hUIISetqttQUpeq(Uq(hUIISetqttQUprq(Uq(hUIISetqttQUptq (Uq!(hUIISetq"ttQUpyq#(Uq$(hUIISetq%ttQUquq&(Uq'(hUIISetq(ttQUr$q)(Uq*(hUIISetq+ttQUraq,(Uq-(hUIISetq.ttQUreq/(Uq0(hUIISetq1ttQUriq2(Uq3(hUIISetq4ttQUrnq5(Uq6(hUIISetq7ttQUroq8(Uq9(hUIISetq:ttQUrrq;(Uq<(hUIISetq=ttQUrsq>(Uq?(hUIISetq@ttQUrtqA(UqB(hUIISetqCttQUryqD(UqE(hUIISetqFttQUs$qG(UqH(hUIISetqIttQt(UqJ(hUOOBucketqKttQtqL.Gj#uz((UBTrees.IIBTreeqUIISetqtqNt.((JJr>J yJaJ p JJJ<"J?k J=JFaJRJlttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J{9ttq.Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((JC JUJJ>ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J8u=J\ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J-ttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J\Js`Jlttq.Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((J yJ:Js`Ja,nttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J:_J{9ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JhJj ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JD`$Jittq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JmJUttq.Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((JC J<"J=J>ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((Js`Ja,nttq.Gj#uR((UBTrees.IIBTreeqUIISetqtqNt.((JJJ-J:Jӻ/J*3J8u=J\ttq.Gj#u((UBTrees.OOBTreeqUOOBucketqtqNt.((Umlq(Uq(UBTrees.IIBTreeqUIISetqttQUmoq(Uq (hUIISetq ttQUn$q (Uq (hUIISetq ttQUn/q(Uq(hUIISetqttQUnaq(Uq(hUIISetqttQUncq(Uq(hUIISetqttQUndq(Uq(hUIISetqttQUneq(Uq(hUIISetqttQUnlq(Uq(hUIISetqttQUnsq (Uq!(hUIISetq"ttQUntq#(Uq$(hUIISetq%ttQUnyq&(Uq'(hUIISetq(ttQUo$q)(Uq*(hUIISetq+ttQUobq,(Uq-(hUIISetq.ttQUocq/(U q0(hUIISetq1ttQUodq2(U q3(hUIISetq4ttQUofq5(U q6(hUIISetq7ttQUolq8(U q9(hUIISetq:ttQUomq;(U q<(hUIISetq=ttQt(Uq>(hUOOBucketq?ttQtq@. Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J0nttq. Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JhJJ*3ttq. Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J$ttq. Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((JzJ(+JTVJ\Jlttq. Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJ ftttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JvXttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JƆ*Zttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JMn\ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J?k J*3ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJFattq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J:ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JfSttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J$xJttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J(AJ!pJqv^ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J\ttq.Gj#uM((UBTrees.IIBTreeqUIISetqtqNt.((JJ9wJ6DJ-Jc?KJӻ/J8u=ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JTVttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JuoWttq.Gj#u((UBTrees.OOBTreeqUOOBucketqtqNt.((Uioq(Uq(UBTrees.IIBTreeqUIISetqttQUipq(Uq (hUIISetq ttQUirq (Uq (hUIISetq ttQUisq(Uq(hUIISetqttQUitq(Uq(hUIISetqttQUjeq(Uq(hUIISetqttQUkeq(Uq(hUIISetqttQUl$q(Uq(hUIISetqttQUldq(Uq(hUIISetqttQUleq (Uq!(hUIISetq"ttQUliq#(Uq$(hUIISetq%ttQUllq&(Uq'(hUIISetq(ttQUloq)(Uq*(hUIISetq+ttQUlsq,(Uq-(hUIISetq.ttQUltq/(Uq0(hUIISetq1ttQUlyq2(Uq3(hUIISetq4ttQUm$q5(Uq6(hUIISetq7ttQUmaq8(Uq9(hUIISetq:ttQUmeq;(U q<(hUIISetq=ttQt(Uq>(hUOOBucketq?ttQtq@. Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((JzJ{9J(+Jqv^ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J!pJttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J0nJttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J:ttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JRttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J*3ttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JhJj J ftttq.Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((JhJ Jj JEX6ttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJ\ttq.Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J"JJ/JJEX6JTVttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJittq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J(AJ JuoWttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JvXttq.Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J"`/J/J#3vttq.Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JaJ((UBTrees.IIBTreeqUIISetqtqNt.((J yJ=JqJs`ttq.+Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J;r ttq.*Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J$xJottq.)Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J\ttq.(Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.'Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((JzJ(+J8u=J\Jittq.&Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JaJottq.%Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JkJUttq.$Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JoJ#3vttq.#Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J!pttq."Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J:ttq.!Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u((UBTrees.OOBTreeqUOOBucketqtqNt.((Ue$q(U1q(UBTrees.IIBTreeqUIISetqttQUeaq(U2q (hUIISetq ttQUebq (U3q (hUIISetq ttQUecq(U4q(hUIISetqttQUedq(U5q(hUIISetqttQUemq(U6q(hUIISetqttQUenq(U7q(hUIISetqttQUeqq(U8q(hUIISetqttQUerq(U9q(hUIISetqttQUesq (U:q!(hUIISetq"ttQUetq#(U;q$(hUIISetq%ttQUewq&(Uq-(hUIISetq.ttQUfiq/(U?q0(hUIISetq1ttQUfoq2(U@q3(hUIISetq4ttQUfrq5(UAq6(hUIISetq7ttQt(Uq8(hUOOBucketq9ttQtq:.AGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J0nttq.@Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JC JhJttq.?Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J"JJ yJttq.>Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((Jsv3J$ttq.=Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JJ(AJ_[ttq.<Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JfSJqttq.;Gj#u>((UBTrees.IIBTreeqUIISetqtqNt.((JzJ{9JFaJ(+ttq.:Gj#u\((UBTrees.IIBTreeqUIISetqtqNt.((Jr>J yJJJ-J=JDxDJRJ_[Js`ttq.9Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J(AJ{9JUJJs`ttq.8Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.7Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJ?k ttq.6Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.5Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J:_J$xJhJEX6J ftttq.4Gj#uH((UBTrees.IIBTreeqUIISetqtqNt.((J yJvXJ<"J=J:J_[ttq.3Gj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.2Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J[~Jr>ttq.1Gj#uk((UBTrees.IIBTreeqUIISetqtqNt.((J"JJkJ[~J/JJ!pJ_SJJ!JTVJqv^JlJa,nttq.Gj#u&((UBTrees.OOBTreeqUOOBucketqtqNt.((Uayq(UBq(UBTrees.IIBTreeqUIISetqttQUb$q(UCq (hUIISetq ttQUb/q (UDq (hUIISetq ttQUbeq(UEq(hUIISetqttQUbjq(UFq(hUIISetqttQUbyq(UGq(hUIISetqttQUcaq(UHq(hUIISetqttQUchq(UIq(hUIISetqttQUciq(UJq(hUIISetqttQUcoq (UKq!(hUIISetq"ttQUcrq#(ULq$(hUIISetq%ttQUctq&(UMq'(hUIISetq(ttQUcuq)(UNq*(hUIISetq+ttQUd$q,(UOq-(hUIISetq.ttQUddq/(UPq0(hUIISetq1ttQUdeq2(UQq3(hUIISetq4ttQUdiq5(URq6(hUIISetq7ttQUdoq8(USq9(hUIISetq:ttQUdsq;(UTq<(hUIISetq=ttQUdtq>(UUq?(hUIISetq@ttQUduqA(UVqB(hUIISetqCttQt(UqD(hUOOBucketqEttQtqF.VGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JTVJ\Jlttq.UGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JuoWttq.TGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J p Jzttq.SGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jmttq.RGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J$xJ<"J=ttq.QGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J-Jttq.PGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JHJ p ttq.OGj#u\((UBTrees.IIBTreeqUIISetqtqNt.((JHJ:_J$xJhJJ;r JEX6J(+JiJ ftttq.NGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J?k J_[ttq.MGj#uH((UBTrees.IIBTreeqUIISetqtqNt.((JJvXJ<"J=J\Jlttq.LGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J[~Jr>J-ttq.KGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J*3ttq.JGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J yJJ:ttq.IGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.HGj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J$xJc?KJ JEX6J ftttq.GGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.FGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JvXttq.EGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J_Sttq.DGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J\ttq.CGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.BGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.Gj#u6((UBTrees.OOBTreeqUOOBucketqtqNt.((U$aq(UWq(UBTrees.IIBTreeqUIISetqttQU$bq(UXq (hUIISetq ttQU$cq (UYq (hUIISetq ttQU$dq(UZq(hUIISetqttQU$eq(U[q(hUIISetqttQU$fq(U\q(hUIISetqttQU$iq(U]q(hUIISetqttQU$lq(U^q(hUIISetqttQU$mq(U_q(hUIISetqttQU$nq (U`q!(hUIISetq"ttQU$oq#(Uaq$(hUIISetq%ttQU$pq&(Ubq'(hUIISetq(ttQU$rq)(Ucq*(hUIISetq+ttQU$sq,(Udq-(hUIISetq.ttQU$tq/(Ueq0(hUIISetq1ttQU$uq2(Ufq3(hUIISetq4ttQU$vq5(Ugq6(hUIISetq7ttQU$wq8(Uhq9(hUIISetq:ttQU$yq;(Uiq<(hUIISetq=ttQU$zq>(Ujq?(hUIISetq@ttQU/pqA(UkqB(hUIISetqCttQUadqD(UlqE(hUIISetqFttQUagqG(UmqH(hUIISetqIttQUalqJ(UnqK(hUIISetqLttQUamqM(UoqN(hUIISetqOttQUanqP(UpqQ(hUIISetqRttQUarqS(UqqT(hUIISetqUttQUasqV(UrqW(hUIISetqXttQUatqY(UsqZ(hUIISetq[ttQt(Uq\(hUOOBucketq]ttQtq^.sGj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J$xJ[~Jr>JJ ftttq.rGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J:_Jttq.qGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J{9Jlttq.pGj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J9wJ!pJc?KJJMn\ttq.oGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((J{9Jqv^ttq.nGj#u>((UBTrees.IIBTreeqUIISetqtqNt.((J(AJ Jj JEX6ttq.mGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J!pttq.lGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JHJ p ttq.kGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J\ttq.jGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Ja,nttq.iGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((JD`$ttq.hGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JJoJ#3vttq.gGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((Jqttq.fGj#u/((UBTrees.IIBTreeqUIISetqtqNt.((J!ttq.eGj#uH((UBTrees.IIBTreeqUIISetqtqNt.((JkJ/JaJnJDxDJƆ*Zttq.dGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((J yJ:Jittq.cGj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JJFaJRttq.bGj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J:_J{9J8u=Js`Jlttq.aGj#uH((UBTrees.IIBTreeqUIISetqtqNt.((JvXJ$J:JUJӻ/J>ttq.`Gj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JfSJqv^ttq._Gj#uC((UBTrees.IIBTreeqUIISetqtqNt.((J!pJzJJ(+JTVttq.^Gj#u9((UBTrees.IIBTreeqUIISetqtqNt.((JJ\J ftttq.]Gj#uH((UBTrees.IIBTreeqUIISetqtqNt.((J"`/J$xJsv3JJc?KJ?k J JEX6J*3ttq.XGj#u4((UBTrees.IIBTreeqUIISetqtqNt.((JJ_Sttq.WGj#uR((UBTrees.IIBTreeqUIISetqtqNt.((JHJ9wJ p JJJj JMn\Jlttq.Gj#u((UBTrees.IOBTreeqUIOBTreeqtqNt.(((Utq(hUIOBucketqttQJ$(Uuq(hUIOBucketqttQt(h(hUIOBucketqttQtq .uGj#u((UBTrees.IOBTreeqUIOBucketqtqNt.((J$UofqJU associateqJ:UonlyqJzUmethodsqJ{9U parametersqJnUtryq Jc?KUcanq JUandq J?k Ucurrentq J;r Uidq J UcallqJj UallowsqJ=U directoriesqJFaUreturnsqJEX6UcalledqJqUviewqJUUotherqJUmayqJUfolderqJ!UuseqJD`$UyouqJ(+UmethodqJӻ/UonqJ*3UcontrolsqJ:UspecifyqJ8u=UpythonqJ>UorqJDxDUtestqJRUresultsq JTVUmoduleq!JuoWUdtmlq"JƆ*ZUtoq#J_[Uexecutesq$JMn\Uanyq%J\Ulib/python/productsq&Jqv^Unameq'Js`U propertiesq(JiUshouldq)JlUareq*JlUproductq+Ja,nUzopeq,JoUwhichq-J ftUlocatedq.J#3vUwithq/ttq0.tGj#u/((UBTrees.IOBTreeqUIOBucketqtqNt.((JHUaddqJU extensionsqJ"`/UitqJUfunctionqJ:_UpassedqJ$xU indicatedq JUbyq J0nUfromq J"JUfileq JkUtheq J[~UcreateqJr>UcreatesqJsv3UifqJ yU specifiesqJ/UtitleqJC UforqJhUfollowedqJaUthisqJ(AUexternalqJ9wUanqJUrequestqJfSUnewqJUwebqJUlikeqJ!pUmanageqJ p UaddsqJ_SUbeqJhU manage_readmeq?u}q@(hURefreshqAh(hUProduct_Refresh.stxqBthUmanage_refreshqCutUtitleqDU#Installed product Hotfix_2002-04-15qEh(UwqF(UHelpSys.HelpSysqGU ProductHelpqHttQU _distributionqINu.wG3((UHelpSys.HelpSysqU ProductHelpqtqNt.}q(UtitleqUHotfix_2002-04-15qUidqUHelpqUcatalogq (Uxq (UProducts.ZCatalog.ZCatalogq UZCatalogq ttQu.xG3`((UProducts.ZCatalog.ZCatalogqUZCatalogqtqNt.}q(UidqUcatalogqU_objectsq(}q(U meta_typeq U Vocabularyq hh utq U thresholdq M'Uvocab_idq h U vocabularyq(Uyq(U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqttQU_catalogq(Uzq(UProducts.ZCatalog.CatalogqUCatalogqttQUtitleqUh (h(hU VocabularyqttQu.zG3l((UProducts.ZCatalog.CatalogqUCatalogqtqNt.}q(Uschemaq}q(U permissionsqKU categoriesqKU title_or_idq KUidq KUurlq KuU__len__q (U{q (U BTrees.LengthqULengthqttQUdataq(U|q(UBTrees.IOBTreeqUIOBTreeqttQUnamesq(hhh h h tqUindexesq}q(USearchableTextq(U}q(U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqttQh(U~q(U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqttQh(Uq(hU KeywordIndexq ttQuUuidsq!(Uq"(UBTrees.OIBTreeq#UOIBTreeq$ttQUlexiconq%U Vocabularyq&Upathsq'(Uq((hUIOBTreeq)ttQu.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.G3'((UBTrees.OIBTreeqUOIBTreeqtqNt.N.G3((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U permissionsq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uxq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.G3'((UBTrees.OOBTreeqUOOBTreeqtqNt.N.G3&((U BTrees.LengthqULengthqtqNt.K.~G3((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U categoriesq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uxq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.G3'((UBTrees.OOBTreeqUOOBTreeqtqNt.N.G3&((U BTrees.LengthqULengthqtqNt.K.}G3i((U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqtqNt.}q(UidqUSearchableTextqU_lexiconqNU useOperatorqUorq U call_methodsq NU ignore_exq NU_unindexq (Uq (UBTrees.IOBTreeqUIOBTreeqttQUcatalogq(Uxq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU vocabulary_idqU VocabularyqU_indexq(Uq(hUIOBTreeqttQu.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.|G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.{G3&((U BTrees.LengthqULengthqtqNt.K.yG35((U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqtqNt.}q(U useSplitterqU ZopeSplitterqUidqU VocabularyqU__ac_local_roles__q }q USystem Processesq ]q UOwnerq asUglobbingqKUtitleqhUlexiconq(Uq(U0Products.PluginIndexes.TextIndex.GlobbingLexiconqUGlobbingLexiconqttQu.G3x((U0Products.PluginIndexes.TextIndex.GlobbingLexiconqUGlobbingLexiconqtqNt.}q(U useSplitterqU ZopeSplitterqU SplitterFuncqcProducts.PluginIndexes.TextIndex.Splitter.ZopeSplitter Splitter qU _inverseLexq (Uq (UBTrees.IOBTreeq UIOBTreeq ttQU_digramsq (Uq(UBTrees.OOBTreeqUOOBTreeqttQU_lexiconq(Uq(UBTrees.OIBTreeqUOIBTreeqttQu.G3'((UBTrees.OIBTreeqUOIBTreeqtqNt.N.G3'((UBTrees.OOBTreeqUOOBTreeqtqNt.N.G3'((UBTrees.IOBTreeqUIOBTreeqtqNt.N.GrpInstalled product MailHostG((U App.ProductqUProductqtqNt.}q(UiconqUp_/InstalledProduct_iconqUidqUMailHostqU__ac_local_roles__q }q USystem Processesq ]q UOwnerq asU_objectsq(}q(U meta_typeqU Product HelpqhUHelpqutUversionqUMailHost-1-2-0qUhomeqU*/usr/lib/zope/lib/python/Products/MailHostqUthisIsAnInstalledProductqKUmanage_distributionqNUmanage_optionsq(}q(UlabelqUContentsqUhelpq(UOFSPqUObjectManager_Contents.stxqtUactionq U manage_mainq!u}q"(hU Propertiesq#h(hUProperties.stxq$th Umanage_propertiesFormq%u}q&(hUSecurityq'h(hU Security.stxq(tUfilterq)cAccessControl.Role _isNotBeingUsedAsAMethod q*h U manage_accessq+u}q,(hUDefine Permissionsq-h(hUSecurity_Define-Permissions.stxq.th)cAccessControl.Role _isBeingUsedAsAMethod q/h h+u}q0(hUUndoq1h(hUUndo.stxq2th Umanage_UndoFormq3u}q4(hU Ownershipq5h(hU Ownership.stxq6th)cAccessControl.Owned ownableFilter q7h U manage_ownerq8u}q9(hUFindq:Utargetq;h!h(hUFind.stxq(hUREADMEq?h U manage_readmeq@u}qA(hURefreshqBh(hUProduct_Refresh.stxqCth Umanage_refreshqDutUtitleqEU+Installed product MailHost (MailHost-1-2-0)qFh(UqG(UHelpSys.HelpSysqHU ProductHelpqIttQU _distributionqJNu.Gt((UHelpSys.HelpSysqU ProductHelpqtqNt.}q(UlastRegisteredq(cDateTime.DateTime DateTime qNoq}q(U_hourq K U_dq G@#/U_fmonq U Septemberq U_yearq MU_pmonqUSep.qUtimeqG?/U_dayqKU_millisqL1032207121370L U_adayqUMonqU_tqGA\)U _dayoffsetqKU_minuteqK U_monthqK U_pmqUpmqU_secondqG?QU_amonqUSepqU_fdayqUMondayqU_pdayq UMon.q!U_pmhourq"KU_tzq#UGMT-7q$U_nearsecq%G?ubUidq&UHelpq'UMail-Host_Edit.stxq((Uq)(UHelpSys.HelpTopicq*USTXTopicq+ttQU_objectsq,(}q-(U meta_typeq.U Help Topicq/h&UMail-Host_Add.stxq0u}q1(h.h/h&U Mail-Host.stxq2u}q3(h.h/h&h(u}q4(h.h/h&U MailHost.pyq5utUtitleq6U Zope Helpq7h2(Uq8(h*USTXTopicq9ttQh5(Uq:(UHelpSys.APIHelpTopicq;U APIHelpTopicq(UProducts.ZCatalog.ZCatalogq?UZCatalogq@ttQh0(UqA(h*USTXTopicqBttQu.G0((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUMailHost - AddqUfileqUA/usr/lib/zope/lib/python/Products/MailHost/help/Mail-Host_Add.stxqUidq UMail-Host_Add.stxq Uobjq TpMailHost - Add: Create a new MailHost Description Create a new MailHost object. Controls 'ID' -- The id of the MailHost object. 'Title' -- The title of the MailHost. 'SMTP host' -- The domain name or address of the SMTP mail server to relay mail through. 'SMTP port' -- The port of the SMTP mail server to relay mail through. q u.G`((UProducts.ZCatalog.ZCatalogqUZCatalogqtqNt.}q(UidqUcatalogqU_objectsq(}q(U meta_typeq U Vocabularyq hh utq U thresholdq M'Uvocab_idq h U vocabularyq(Uq(U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqttQU_catalogq(Uq(UProducts.ZCatalog.CatalogqUCatalogqttQUtitleqUh (h(hU VocabularyqttQu.Gl((UProducts.ZCatalog.CatalogqUCatalogqtqNt.}q(Uschemaq}q(U permissionsqKU categoriesqKU title_or_idq KUidq KUurlq KuU__len__q (Uq (U BTrees.LengthqULengthqttQUdataq(Uq(UBTrees.IOBTreeqUIOBTreeqttQUindexesq}q(USearchableTextq(Uq(U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqttQh(Uq(U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqttQh(Uq(hU KeywordIndexqttQuUnamesq(hhh h h tq Uuidsq!(Uq"(UBTrees.OIBTreeq#UOIBTreeq$ttQUlexiconq%U Vocabularyq&Upathsq'(Uq((hUIOBTreeq)ttQu.G'((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JOmU7/Control_Panel/Products/MailHost/Help/Mail-Host_Add.stxqJ OmU3/Control_Panel/Products/MailHost/Help/Mail-Host.stxqJ!OmU8/Control_Panel/Products/MailHost/Help/Mail-Host_Edit.stxqJ"OmU1/Control_Panel/Products/MailHost/Help/MailHost.pyqttttq.G'((UBTrees.OIBTreeqUOIBTreeqtqNt.((((U3/Control_Panel/Products/MailHost/Help/Mail-Host.stxqJ OmU7/Control_Panel/Products/MailHost/Help/Mail-Host_Add.stxqJOmU8/Control_Panel/Products/MailHost/Help/Mail-Host_Edit.stxqJ!OmU1/Control_Panel/Products/MailHost/Help/MailHost.pyqJ"Omttttq.G((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U permissionsq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.Gb((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JOm]qUViewqaJ Om]qhaJ!Om]qhaJ"Om]qhattttq .Gh((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UViewq(Uq(UBTrees.IIBTreeqU IITreeSetqttQttttq.GF((UBTrees.IIBTreeqU IITreeSetqtqNt.((((JOmJ OmJ!OmJ"Omttttq.G&((U BTrees.LengthqULengthqtqNt.K.G((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(Uq(U BTrees.LengthqULengthqttQUidq U categoriesq U_indexq (Uq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQu.Gy((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JOm]qUContent Manager InformationqaJ Om]qhaJ!Om]qhaJ"Om]qhattttq .G((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UContent Manager Informationq(Uq(UBTrees.IIBTreeqU IITreeSetqttQttttq.GF((UBTrees.IIBTreeqU IITreeSetqtqNt.((((JOmJ OmJ!OmJ"Omttttq.G&((U BTrees.LengthqULengthqtqNt.K.G((U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqtqNt.}q(UidqUSearchableTextqU_lexiconq(Uq(U0Products.PluginIndexes.TextIndex.GlobbingLexiconq UGlobbingLexiconq ttQU useOperatorq Uorq U call_methodsq NU ignore_exqNU_unindexq(Uq(UBTrees.IOBTreeqUIOBTreeqttQUcatalogq(Uq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU vocabulary_idqU VocabularyqU_indexq(Uq(hUIOBTreeqttQu.G((UBTrees.IOBTreeqUIOBTreeqtqNt.((((Jwm(J OmKtqJ(J OmKtqJf(J OmKtqJ}q(JOmKJ!OmKJ OmKuJc̙}q(JOmKJ!OmKuJI(J!OmKtq Jԩգ}q (JOmKJ!OmKuJ:pd(J OmKtq J?}q (JOmKJ!OmKuJew(J!OmKtq J-](J!OmKtqJ}q(JOmKJ!OmKJ OmKuJOԽ}q(JOmKJ!OmKJ OmKuJѴ}q(JOmKJ!OmKuJx(J OmKtqJv_}q(JOmKJ!OmKJ OmKuJ (J OmKtqJ#(J OmKtqJ"y(J OmKtqJ>T+}q(JOmKJ!OmKuJ#7{}q(JOmKJ!OmKuJsP}q(JOmKJ!OmK J OmKuJkG}q(JOmKJ!OmKJ OmKuJ1(J OmKtqJ6v(JOmKtqJ(J OmKtqJo}q(JOmKJ!OmKuJۼ(JOmKtqJn\<}q (JOmKJ!OmKuJB}q!(JOmKJ!OmKuJh$(J OmKtq"J,(J!OmKtq#J/-(J OmKtq$J8*0}q%(JOmKJ OmKuJu4}q&(JOmKJ!OmKJ OmKuJ$5(J OmKtq'J(Q}q((JOmKJ!OmKuJZIZ}q)(JOmKJ!OmKJ OmKuJغK^(J OmKtq*J;_(J OmKtq+J<`}q,(J!OmKJ OmKuJ$a(J OmKtq-JBe}q.(J!OmKJ OmKuJ=e}q/(JOmKJ!OmKuJڤ k(JOmKtq0J/o(J OmKtq1ttttq2.G((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JOm]q(JJc̙JԩգJ?JJOԽJѴJv_J>T+J#7{JsPJkGJ6vJoJۼJn\<JBJ8*0Ju4J(QJZIZJ=eJڤ keJ Om]q(JwmJJfJJ:pdJJOԽJxJv_J J#J"yJsPJkGJ1JJh$J/-J8*0Ju4J$5JZIZJغK^J;_J<`J$aJBeJ/oeJ!Om]q(JJc̙JIJԩգJ?JewJ-]JJOԽJѴJv_J>T+J#7{JsPJkGJoJn\<JBJ,Ju4J(QJZIZJ<`JBeJ=eettttq.Gx((U0Products.PluginIndexes.TextIndex.GlobbingLexiconqUGlobbingLexiconqtqNt.}q(U useSplitterqU ZopeSplitterqU SplitterFuncqcProducts.PluginIndexes.TextIndex.Splitter.ZopeSplitter Splitter qU _inverseLexq (Uq (UBTrees.IOBTreeq UIOBTreeq ttQU_digramsq (Uq(UBTrees.OOBTreeqUOOBTreeqttQU_lexiconq(Uq(UBTrees.OIBTreeqUOIBTreeqttQu.G((UBTrees.OIBTreeqUOIBTreeqtqNt.((((UaddqJۼUaddressqJ=eUallowqJ$aUallowsqJewUanqJ:pdUbeq J/-Ubyq JغK^Ucanq J/oUcontrolsq J#7{Ucreateq J6vUdeliveryqJh$U descriptionqJoUdomainqJ>T+U dtmlsendmailqJUeditqJ-]UhandleqJxUhostqJ(QUidqJѴUmailqJZIZUmailhostqJkGU mailhostsqJUnameqJBUnewqJڤ kUobjectqJ8*0UofqJUorqJԩգUportqJn\<U propertiesqJ,Uprotocolq J$5Urelayq!J?Usendq"J1Usendsq#J"yUserverq$Ju4Usimpleq%JfUsmtpq&JOԽUtagq'J;_Utheq(JsPUthisq)J<`Uthroughq*Jv_Utitleq+Jc̙Utoq,JUtransferq-J#Uusedq.JwmUviaq/J Uviewq0JIUyouq1JBettttq2.G>((UBTrees.OOBTreeqUOOBTreeqtqNt.(((Uq(hUOOBucketqttQU$yq(Uq(hUOOBucketqttQUctq (Uq (hUOOBucketq ttQUerq (Uq (hUOOBucketqttQUipq(Uq(hUOOBucketqttQUonq(Uq(hUOOBucketqttQUseq(Uq(hUOOBucketqttQt(h(hUOOBucketqttQtq.G((UBTrees.OOBTreeqUOOBucketqtqNt.((Useq(Uq(UBTrees.IIBTreeqUIISetqttQUsfq(Uq (hUIISetq ttQUsiq (Uq (hUIISetq ttQUsmq(Uq(hUIISetqttQUssq(Uq(hUIISetqttQUstq(Uq(hUIISetqttQUt$q(Uq(hUIISetqttQUtaq(Uq(hUIISetqttQUteq(Uq(hUIISetqttQUthq (Uq!(hUIISetq"ttQUtiq#(Uq$(hUIISetq%ttQUtlq&(Uq'(hUIISetq(ttQUtmq)(Uq*(hUIISetq+ttQUtoq,(Uq-(hUIISetq.ttQUtpq/(Uq0(hUIISetq1ttQUtrq2(Uq3(hUIISetq4ttQUtsq5(Uq6(hUIISetq7ttQUu$q8(Uq9(hUIISetq:ttQUugq;(Uq<(hUIISetq=ttQUusq>(Uq?(hUIISetq@ttQUveqA(UqB(hUIISetqCttQUviqD(UqE(hUIISetqFttQUw$qG(UqH(hUIISetqIttQUwsqJ(UqK(hUIISetqLttQUy$qM(UqN(hUIISetqOttQUyoqP(UqQ(hUIISetqRttQttqS.G/((UBTrees.IIBTreeqUIISetqtqNt.((JBettq.G9((UBTrees.IIBTreeqUIISetqtqNt.((J?Jh$JغK^ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jewttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JIJ$aJڤ kttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JIJ ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((Jh$Ju4ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jwmttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jv_ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JBettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((J#J#7{ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JOԽttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JJ$5ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jc̙ttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((Jc̙JoJ,ttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((Jv_JsPJ<`ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J6vttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J;_ttq.GC((UBTrees.IIBTreeqUIISetqtqNt.((J-]JkGJn\<J8*0J(Qttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JkGJJ(Qttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J=ettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JOԽttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jfttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J#ttq.GC((UBTrees.IIBTreeqUIISetqtqNt.((JwmJJ"yJ1Ju4ttq.Gj((UBTrees.OOBTreeqUOOBucketqtqNt.((Uonq(Uq(UBTrees.IIBTreeqUIISetqttQUopq(Uq (hUIISetq ttQUorq (Uq (hUIISetq ttQUosq(Uq(hUIISetqttQUotq(Uq(hUIISetqttQUouq(Uq(hUIISetqttQUowq(Uq(hUIISetqttQUp$q(Uq(hUIISetqttQUpeq(Uq(hUIISetqttQUplq (Uq!(hUIISetq"ttQUpoq#(Uq$(hUIISetq%ttQUprq&(Uq'(hUIISetq(ttQUptq)(Uq*(hUIISetq+ttQUr$q,(Uq-(hUIISetq.ttQUraq/(Uq0(hUIISetq1ttQUreq2(Uq3(hUIISetq4ttQUriq5(Uq6(hUIISetq7ttQUroq8(Uq9(hUIISetq:ttQUrtq;(Uq<(hUIISetq=ttQUrvq>(Uq?(hUIISetq@ttQUryqA(UqB(hUIISetqCttQUs$qD(UqE(hUIISetqFttQUscqG(UqH(hUIISetqIttQt(UqJ(hUOOBucketqKttQtqL.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.GM((UBTrees.IIBTreeqUIISetqtqNt.((JewJ"yJ#7{JJ,J<`J=ettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jh$ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Ju4ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((Jn\<J,ttq.G>((UBTrees.IIBTreeqUIISetqtqNt.((Jv_J#7{J,J$5ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.G9((UBTrees.IIBTreeqUIISetqtqNt.((J?J6vJ=ettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J#ttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JԩգJ#Ju4ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.G4((UBTrees.IIBTreeqUIISetqtqNt.((J,J$5ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jn\<ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jfttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J,ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JOԽttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JewJ$attq.G4((UBTrees.IIBTreeqUIISetqtqNt.((Jv_JBettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J$5ttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JkGJJ(Qttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JԩգJn\<ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J,ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((J#7{Jottq.GX((UBTrees.OOBTreeqUOOBucketqtqNt.((Uipq(Uq(UBTrees.IIBTreeqUIISetqttQUisq(Uq (hUIISetq ttQUitq (Uq (hUIISetq ttQUivq(Uq(hUIISetqttQUjeq(Uq(hUIISetqttQUl$q(Uq(hUIISetqttQUlaq(Uq(hUIISetqttQUleq(Uq(hUIISetqttQUlhq(Uq(hUIISetqttQUliq (Uq!(hUIISetq"ttQUllq#(Uq$(hUIISetq%ttQUloq&(Uq'(hUIISetq(ttQUlsq)(Uq*(hUIISetq+ttQUmaq,(Uq-(hUIISetq.ttQUmeq/(Uq0(hUIISetq1ttQUmlq2(Uq3(hUIISetq4ttQUmpq5(Uq6(hUIISetq7ttQUmtq8(Uq9(hUIISetq:ttQUn$q;(Uq<(hUIISetq=ttQUnaq>(Uq?(hUIISetq@ttQUndqA(UqB(hUIISetqCttQUneqD(UqE(hUIISetqFttQUnsqG(UqH(hUIISetqIttQUntqJ(UqK(hUIISetqLttQUo$qM(UqN(hUIISetqOttQUobqP(UqQ(hUIISetqRttQUocqS(UqT(hUIISetqUttQUofqV(UqW(hUIISetqXttQUolqY(UqZ(hUIISetq[ttQUomq\(Uq](hUIISetq^ttQt(Uq_(hUOOBucketq`ttQtqa.G/((UBTrees.IIBTreeqUIISetqtqNt.((J>T+ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((J#7{J$5ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J$5ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J8*0ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J#7{ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J#ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jڤ kttq.G>((UBTrees.IIBTreeqUIISetqtqNt.((JJxJ"yJ1ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JBttq.G>((UBTrees.IIBTreeqUIISetqtqNt.((J:pdJ>T+JoJ/ottq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JOԽttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jfttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JBttq.GC((UBTrees.IIBTreeqUIISetqtqNt.((JJ>T+JkGJJZIZttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JJ#7{ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JewJ$attq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JewJ$attq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jh$ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JkGJttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JfJc̙Jxttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J?ttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JJ$5JZIZttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J8*0ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jh$ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((Jc̙J-]ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J<`ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.G((UBTrees.OOBTreeqUOOBucketqtqNt.((Uerq(Uq(UBTrees.IIBTreeqUIISetqttQUesq(Uq (hUIISetq ttQUewq (Uq (hUIISetq ttQUf$q(Uq(hUIISetqttQUfeq(Uq(hUIISetqttQUg$q(Uq(hUIISetqttQUghq(Uq(hUIISetqttQUh$q(U q(hUIISetqttQUhaq(U q(hUIISetqttQUheq (U q!(hUIISetq"ttQUhiq#(U q$(hUIISetq%ttQUhoq&(U q'(hUIISetq(ttQUhrq)(Uq*(hUIISetq+ttQUiaq,(Uq-(hUIISetq.ttQUidq/(Uq0(hUIISetq1ttQUieq2(Uq3(hUIISetq4ttQUilq5(Uq6(hUIISetq7ttQUimq8(Uq9(hUIISetq:ttQUinq;(Uq<(hUIISetq=ttQUioq>(Uq?(hUIISetq@ttQt(UqA(hUOOBucketqBttQtqC.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jottq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J>T+ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jfttq.G>((UBTrees.IIBTreeqUIISetqtqNt.((JJkGJJZIZttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JIJ,ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((JѴttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jv_ttq. G9((UBTrees.IIBTreeqUIISetqtqNt.((JkGJJ(Qttq. G/((UBTrees.IIBTreeqUIISetqtqNt.((J<`ttq. G/((UBTrees.IIBTreeqUIISetqtqNt.((JsPttq. G/((UBTrees.IIBTreeqUIISetqtqNt.((Jxttq. G/((UBTrees.IIBTreeqUIISetqtqNt.((Jv_ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jv_ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J;_ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J#ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JIJڤ kttq.G9((UBTrees.IIBTreeqUIISetqtqNt.((JoJ,J=ettq.G>((UBTrees.IIBTreeqUIISetqtqNt.((J#Jh$J,Ju4ttq.G((UBTrees.OOBTreeqUOOBucketqtqNt.((Uctq(Uq(UBTrees.IIBTreeqUIISetqttQUd$q(Uq (hUIISetq ttQUddq (Uq (hUIISetq ttQUdeq(Uq(hUIISetqttQUdiq(Uq(hUIISetqttQUdlq(Uq(hUIISetqttQUdmq(Uq(hUIISetqttQUdoq(Uq(hUIISetqttQUdrq(Uq(hUIISetqttQUdsq (Uq!(hUIISetq"ttQUdtq#(U q$(hUIISetq%ttQUe$q&(U!q'(hUIISetq(ttQUeaq)(U"q*(hUIISetq+ttQUecq,(U#q-(hUIISetq.ttQUedq/(U$q0(hUIISetq1ttQUelq2(U%q3(hUIISetq4ttQUenq5(U&q6(hUIISetq7ttQt(Uq8(hUOOBucketq9ttQtq:.&G9((UBTrees.IIBTreeqUIISetqtqNt.((JJ"yJ1ttq.%G4((UBTrees.IIBTreeqUIISetqtqNt.((J?Jh$ttq.$G4((UBTrees.IIBTreeqUIISetqtqNt.((JwmJ-]ttq.#G/((UBTrees.IIBTreeqUIISetqtqNt.((J8*0ttq."G/((UBTrees.IIBTreeqUIISetqtqNt.((J6vttq.!GM((UBTrees.IIBTreeqUIISetqtqNt.((JfJc̙JxJsPJ6vJBJ/-ttq. G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J"yttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J=ettq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J>T+ttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((Jxttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J-]ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JoJh$ttq.G4((UBTrees.IIBTreeqUIISetqtqNt.((JۼJ=ettq.G>((UBTrees.IIBTreeqUIISetqtqNt.((JwmJѴJ1Jۼttq.G/((UBTrees.IIBTreeqUIISetqtqNt.((J8*0ttq.G|((UBTrees.OOBTreeqUOOBucketqtqNt.((U$yq(U'q(UBTrees.IIBTreeqUIISetqttQUa$q(U(q (hUIISetq ttQUadq (U)q (hUIISetq ttQUagq(U*q(hUIISetqttQUaiq(U+q(hUIISetqttQUalq(U,q(hUIISetqttQUamq(U-q(hUIISetqttQUanq(U.q(hUIISetqttQUatq(U/q(hUIISetqttQUayq (U0q!(hUIISetq"ttQUbeq#(U1q$(hUIISetq%ttQUbjq&(U2q'(hUIISetq(ttQUbyq)(U3q*(hUIISetq+ttQUcaq,(U4q-(hUIISetq.ttQUcoq/(U5q0(hUIISetq1ttQUcrq2(U6q3(hUIISetq4ttQt(Uq5(hUOOBucketq6ttQtq7.6G4((UBTrees.IIBTreeqUIISetqtqNt.((J6vJottq.5G4((UBTrees.IIBTreeqUIISetqtqNt.((J#7{J$5ttq.4G/((UBTrees.IIBTreeqUIISetqtqNt.((J/ottq.3G/((UBTrees.IIBTreeqUIISetqtqNt.((JغK^ttq.2G/((UBTrees.IIBTreeqUIISetqtqNt.((J8*0ttq.1G/((UBTrees.IIBTreeqUIISetqtqNt.((J/-ttq.0G/((UBTrees.IIBTreeqUIISetqtqNt.((J?ttq./G/((UBTrees.IIBTreeqUIISetqtqNt.((J6vttq..G>((UBTrees.IIBTreeqUIISetqtqNt.((J:pdJxJ#J/ottq.-G/((UBTrees.IIBTreeqUIISetqtqNt.((JBttq.,G4((UBTrees.IIBTreeqUIISetqtqNt.((JewJ$attq.+GC((UBTrees.IIBTreeqUIISetqtqNt.((JJ>T+JkGJJZIZttq.*G/((UBTrees.IIBTreeqUIISetqtqNt.((J;_ttq.)G4((UBTrees.IIBTreeqUIISetqtqNt.((JۼJ=ettq.(G/((UBTrees.IIBTreeqUIISetqtqNt.((J ttq.'G/((UBTrees.IIBTreeqUIISetqtqNt.((JBettq.G|((UBTrees.OOBTreeqUOOBucketqtqNt.((U$aq(U7q(UBTrees.IIBTreeqUIISetqttQU$bq(U8q (hUIISetq ttQU$cq (U9q (hUIISetq ttQU$dq(U:q(hUIISetqttQU$eq(U;q(hUIISetqttQU$hq(Uq(hUIISetqttQU$nq(U?q(hUIISetqttQU$oq (U@q!(hUIISetq"ttQU$pq#(UAq$(hUIISetq%ttQU$rq&(UBq'(hUIISetq(ttQU$sq)(UCq*(hUIISetq+ttQU$tq,(UDq-(hUIISetq.ttQU$uq/(UEq0(hUIISetq1ttQU$vq2(UFq3(hUIISetq4ttQt(Uq5(hUOOBucketq6ttQtq7.FG4((UBTrees.IIBTreeqUIISetqtqNt.((JIJ ttq.EG/((UBTrees.IIBTreeqUIISetqtqNt.((Jwmttq.DGM((UBTrees.IIBTreeqUIISetqtqNt.((Jc̙JJv_J#JsPJ;_J<`ttq.CGC((UBTrees.IIBTreeqUIISetqtqNt.((JfJOԽJ"yJ1Ju4ttq.BG/((UBTrees.IIBTreeqUIISetqtqNt.((J?ttq.AG9((UBTrees.IIBTreeqUIISetqtqNt.((Jn\<J,J$5ttq.@G9((UBTrees.IIBTreeqUIISetqtqNt.((JJԩգJ8*0ttq.?G4((UBTrees.IIBTreeqUIISetqtqNt.((JBJڤ kttq.>G9((UBTrees.IIBTreeqUIISetqtqNt.((JkGJJZIZttq.=G/((UBTrees.IIBTreeqUIISetqtqNt.((JѴttq.<G4((UBTrees.IIBTreeqUIISetqtqNt.((JxJ(Qttq.;G/((UBTrees.IIBTreeqUIISetqtqNt.((J-]ttq.:G>((UBTrees.IIBTreeqUIISetqtqNt.((JJ>T+JoJh$ttq.9G9((UBTrees.IIBTreeqUIISetqtqNt.((J#7{J6vJ/ottq.8G4((UBTrees.IIBTreeqUIISetqtqNt.((J/-JغK^ttq.7GC((UBTrees.IIBTreeqUIISetqtqNt.((J:pdJewJۼJ$aJ=ettq.G((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JwmUusedqJU dtmlsendmailqJfUsimpleqJUofqJc̙UtitleqJIUviewq JԩգUorq J:pdUanq J?Urelayq JewUallowsq J-]UeditqJUtoqJOԽUsmtpqJѴUidqJxUhandleqJv_UthroughqJ UviaqJ#UtransferqJ"yUsendsqJ>T+UdomainqJ#7{UcontrolsqJsPUtheqJkGUmailhostqJ1UsendqJ6vUcreateqJU mailhostsqJoU descriptionqJۼUaddqJn\<Uportq JBUnameq!Jh$Udeliveryq"J,U propertiesq#J/-Ubeq$J8*0Uobjectq%Ju4Userverq&J$5Uprotocolq'J(QUhostq(JZIZUmailq)JغK^Ubyq*J;_Utagq+J<`Uthisq,J$aUallowq-JBeUyouq.J=eUaddressq/Jڤ kUnewq0J/oUcanq1ttttq2.G((UBTrees.IOBTreeqUIOBTreeqtqNt.((((JOm((UContent Manager Informationqtq(UViewqtqUMailHost - AddqU7/Control_Panel/Products/MailHost/Help/Mail-Host_Add.stxq UMail-Host_Add.stxq tq J Om(hhUMailHostq U3/Control_Panel/Products/MailHost/Help/Mail-Host.stxq U Mail-Host.stxqtqJ!Om(hhUMailHost - EditqU8/Control_Panel/Products/MailHost/Help/Mail-Host_Edit.stxqUMail-Host_Edit.stxqtqJ"Om(hhUMailHostqU1/Control_Panel/Products/MailHost/Help/MailHost.pyqU MailHost.pyqtqttttq.G&((U BTrees.LengthqULengthqtqNt.K.G5((U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqtqNt.}q(U useSplitterqU ZopeSplitterqUidqU VocabularyqU__ac_local_roles__q }q USystem Processesq ]q UOwnerq asUglobbingqKUtitleqhUlexiconq(Uq(U0Products.PluginIndexes.TextIndex.GlobbingLexiconqUGlobbingLexiconqttQu.G((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUMailHostqUidqU MailHost.pyqUfuncsq ]q (UGq (hU MethodDocq ttQaUdocq UUapisq]q(UHq(hUAPIDocqttQau.HGh((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(U constructorq(UIq(hU MethodDocqttQUnameqUMailHostq U attributesq ]q Udocq UMailHost objects work as adapters to Simple Mail Transfer Protocol (SMTP) servers. MailHosts are used by DTML 'sendmail' tags to find the proper host to deliver mail to.q Umethodsq]q(UJq(hU MethodDocqttQau.JGI((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUsendqUoptionalq((UmtoqNt(Umfromq Nt(Usubjectq Nt(Uencodeq NttUrequiredq (U messageTextq tUdocqTSends an email message. The arguments are: messageText -- The body of the mail message. mto -- A string or list of recipient(s) of the message. mfrom -- The address of the message sender. subject -- The subject of the message. encode -- The rfc822 defined encoding of the message. The default of 'None' means no encoding is done. Valid values are 'base64', 'quoted-printable' and 'uuencode'.qu.IG((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addMailHostqUoptionalq((UtitleqUt(U smtp_hostq Nt(U localhostq h t(U smtp_portq Kt(Utimeoutq G?ttUrequiredq (UidqtUdocqU*Add a mailhost object to an ObjectManager.qu.GG((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addMailHostqUoptionalq((UtitleqUt(U smtp_hostq Nt(U localhostq h t(U smtp_portq Kt(Utimeoutq G?ttUrequiredq (UidqtUdocqU*Add a mailhost object to an ObjectManager.qu.G((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUMailHostqUfileqU=/usr/lib/zope/lib/python/Products/MailHost/help/Mail-Host.stxqUidq U Mail-Host.stxq Uobjq UMailHost: Sends mail through an SMTP server. MailHosts allow you to send mail via the Simple Mail Transfer Protocol (SMTP). This object can be used by the tag to handle delivery of mail. q u.G>((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUMailHost - EditqUfileqUB/usr/lib/zope/lib/python/Products/MailHost/help/Mail-Host_Edit.stxqUidq UMail-Host_Edit.stxq Uobjq T{MailHost - Edit: Edit mail host properties Description This view allows you edit the MailHost. Controls 'ID' -- The id of the MailHost. 'Title' -- The title of the MailHost. 'SMTP host' -- The domain name or address of the SMTP mail server to relay mail through. 'SMTP port' -- The port of the SMTP mail server to relay mail through. q u.rG  :mpInstalled product OFSPKG Kg((U App.ProductqUProductqtqNt.}q(UiconqUp_/InstalledProduct_iconqUidqUOFSPqU__ac_local_roles__q }q USystem Processesq ]q UOwnerq asU_objectsq(}q(U meta_typeqU Product HelpqhUHelpqutUversionqU OFSP-1-0-0qUhomeqU&/usr/lib/zope/lib/python/Products/OFSPqUthisIsAnInstalledProductqKUmanage_distributionqNUmanage_optionsq(}q(UlabelqUContentsqUhelpq(UOFSPqUObjectManager_Contents.stxqtUactionq U manage_mainq!u}q"(hU Propertiesq#h(hUProperties.stxq$th Umanage_propertiesFormq%u}q&(hUSecurityq'h(hU Security.stxq(tUfilterq)cAccessControl.Role _isNotBeingUsedAsAMethod q*h U manage_accessq+u}q,(hUDefine Permissionsq-h(hUSecurity_Define-Permissions.stxq.th)cAccessControl.Role _isBeingUsedAsAMethod q/h h+u}q0(hUUndoq1h(hUUndo.stxq2th Umanage_UndoFormq3u}q4(hU Ownershipq5h(hU Ownership.stxq6th)cAccessControl.Owned ownableFilter q7h U manage_ownerq8u}q9(hUFindq:Utargetq;h!h(hUFind.stxq(hUREADMEq?h U manage_readmeq@u}qA(hURefreshqBh(hUProduct_Refresh.stxqCth Umanage_refreshqDutUtitleqEU#Installed product OFSP (OFSP-1-0-0)qFh(ULqG(UHelpSys.HelpSysqHU ProductHelpqIttQU _distributionqJNu.LG Kg%Z((UHelpSys.HelpSysqU ProductHelpqtqNt.}q(UDatabase-Management.stxq(UMq(UHelpSys.HelpTopicqUSTXTopicqttQUDebug-Information_Debug.stxq (UNq (hUSTXTopicq ttQUCacheable-properties.stxq (UOq (hUSTXTopicqttQUZSearch-Interface_Add.stxq(UPq(hUSTXTopicqttQU Security.stxq(UQq(hUSTXTopicqttQUVersion_Add.stxq(URq(hUSTXTopicqttQUFind_Advanced.stxq(USq(hUSTXTopicqttQUdtml-sqlvar.stxq(UTq(hUSTXTopicqttQUZClass_Views.stxq(UUq(hUSTXTopicq ttQUPropertySheets.pyq!(UVq"(UHelpSys.APIHelpTopicq#U APIHelpTopicq$ttQU DateTime.pyq%(UWq&(h#U APIHelpTopicq'ttQUdtml-raise.stxq((UXq)(hUSTXTopicq*ttQUProduct_Add.stxq+(UYq,(hUSTXTopicq-ttQUdtml-sqltest.stxq.(UZq/(hUSTXTopicq0ttQUSecurity_Local-Roles.stxq1(U[q2(hUSTXTopicq3ttQU#Database-Management_Flush-Cache.stxq4(U\q5(hUSTXTopicq6ttQUZope-Permission_Add.stxq7(U]q8(hUSTXTopicq9ttQU Product.stxq:(U^q;(hUSTXTopicq(hUSTXTopicq?ttQU dtml-in.stxq@(U`qA(hUSTXTopicqBttQUDTMLDocument.pyqC(UaqD(h#U APIHelpTopicqEttQUSecurity_Manage-Role.stxqF(UbqG(hUSTXTopicqHttQUcatalogqI(UcqJ(UProducts.ZCatalog.ZCatalogqKUZCatalogqLttQUlastRegisteredqM(cDateTime.DateTime DateTime qNNoqO}qP(U_hourqQK U_dqRG@#'#U_fmonqSU SeptemberqTU_yearqUMU_pmonqVUSep.qWUtimeqXG?'#U_dayqYKU_millisqZL1032207121451L U_adayq[UMonq\U_tq]GA^U _dayoffsetq^KU_minuteq_K U_monthq`K U_pmqaUpmqbU_secondqcG?7KƧU_amonqdUSepqeU_fdayqfUMondayqgU_pdayqhUMon.qiU_pmhourqjKU_tzqkUGMT-7qlU_nearsecqmG?ubU dtml-var.stxqn(Udqo(hUSTXTopicqpttQUAccessControl.pyqq(Ueqr(h#U APIHelpTopicqsttQUZClass_Subobjects.stxqt(Ufqu(hUSTXTopicqvttQUSecurity_User-Local-Roles.stxqw(Ugqx(hUSTXTopicqyttQUUser-Folder_Add-User.stxqz(Uhq{(hUSTXTopicq|ttQUDTML-Document.stxq}(Uiq~(hUSTXTopicqttQUCacheManager-associate.stxq(Ujq(hUSTXTopicqttQUDTML-DocumentOrMethod_Add.stxq(Ukq(hUSTXTopicqttQUImage.pyq(Ulq(h#U APIHelpTopicqttQU_objectsq(}q(U meta_typeqU Help TopicqUidqUAuthenticatedUser.pyqu}q(hhhhqu}q(hhhhu}q(hhhU"Common-Instance-Property-Sheet.stxqu}q(hhhh u}q(hhhU Caching.stxqu}q(hhhUDTML-Method.stxqu}q(hhhU&Common-Instance-Property-Sheet_Add.stxqu}q(hhhUControl-Panel.stxqu}q(hhhUControl-Panel_Contents.stxqu}q(hhhh}u}q(hhhhu}q(hhhUDTML-DocumentOrMethod_Edit.stxqu}q(hhhh=u}q(hhhU DTML-DocumentOrMethod_Upload.stxqu}q(hhhUDTML-DocumentOrMethod_View.stxqu}q(hhhhCu}q(hhhhu}q(hhhU DTMLMethod.pyqu}q(hhhh%u}q(hhhU(Database-Management_Cache-Parameters.stxqu}q(hhhU Database-Management_Database.stxqu}q(hhhh4u}q(hhhUDavLocks-ManageLocks.stxqu}q(hhhUDebug-Information_Profile.stxqu}q(hhhh u}q(hhhUFile.pyqu}q(hhhU File_Add.stxqu}q(hhhUFile.stxqu}q(hhhhu}q(hhhU File_Edit.stxqu}q(hhhUFile_Upload.stxqu}q(hhhU File_View.stxqu}q(hhhUFind.stxqu}q(hhhUFolder_Add.stxqu}q(hhhU Folder.pyqu}q(hhhU Folder.stxqu}q(hhhUObjectManager.pyqu}q(hhhUFolder_View.stxqu}q(hhhU History.stxqu}q(hhhhu}q(hhhU Image.stxqu}q(hhhUImage_Edit.stxqu}q(hhhUImage_View.stxqu}q(hhhUObjectManagerItem.pyqu}q(hhhUObjectManager_Contents.stxqu}q(hhhh+u}q(hhhh:u}q(hhhUObjectManager_Import-Export.stxqu}q(hhhUObjectManager_Rename.stxqu}q(hhhU Ownership.stxqu}q(hhhUProduct-Management.stxqu}q(hhhUSecurity_Define-Permissions.stxqu}q(hhhUProduct_Distribution.stxqu}q(hhhUProduct_Refresh.stxqu}q(hhhUProperties.stxqu}q(hhhUPropertyManager.pyqu}q(hhhUPropertySheet.pyqu}q(hhhh!u}q(hhhU Request.pyqu}q(hhhU Response.pyqu}q(hhhhu}q(hhhUSecurity_Manage-Acquisition.stxqu}q(hhhh1u}q(hhhUUser-Folder.stxqu}q(hhhUUndo.stxqu}q(hhhUSecurity_Manage-Permission.stxru}r(hhhhFu}r(hhhhwu}r(hhhUVersion-Management_Version.stxru}r(hhhhzu}r(hhhUUser-Folder_Contents.stxru}r(hhhUUser-Folder_Edit-User.stxr u}r (hhhUUser-Folder_Properties.stxr u}r (hhhU UserFolder.pyr u}r(hhhUVersion-Management.stxru}r(hhhhu}r(hhhU Version.stxru}r(hhhUVersion_Save-Discard.stxru}r(hhhUVersion_Join-Leave.stxru}r(hhhUVersion_Properties.stxru}r(hhhUZClass_Add.stxru}r(hhhU ZClass.stxru}r(hhhUZClass_Permissions.stxru}r(hhhUZClass_Basic.stxr u}r!(hhhUZClass_Methods.stxr"u}r#(hhhUmath.pyr$u}r%(hhhUZClass_Property-Sheets.stxr&u}r'(hhhhtu}r((hhhhu}r)(hhhUZSearch-Interface.stxr*u}r+(hhhhu}r,(hhhUZope-Factory.stxr-u}r.(hhhUZope-Factory_Add.stxr/u}r0(hhhUZope-Factory_Edit.stxr1u}r2(hhhUZope-Permission.stxr3u}r4(hhhh7u}r5(hhhUZope-Permission_Edit.stxr6u}r7(hhhU dtml-call.stxr8u}r9(hhhUdtml-comment.stxr:u}r;(hhhUdtml-funcs.stxr<u}r=(hhhU dtml-if.stxr>u}r?(hhhh@u}r@(hhhU dtml-let.stxrAu}rB(hhhU dtml-mime.stxrCu}rD(hhhh(u}rE(hhhUdtml-return.stxrFu}rG(hhhUdtml-sendmail.stxrHu}rI(hhhUdtml-sqlgroup.stxrJu}rK(hhhh.u}rL(hhhhu}rM(hhhU dtml-tree.stxrNu}rO(hhhU dtml-try.stxrPu}rQ(hhhUdtml-unless.stxrRu}rS(hhhhnu}rT(hhhU dtml-with.stxrUu}rV(hhhU random.pyrWu}rX(hhhU sequence.pyrYu}rZ(hhhU string.pyr[uth(Umr\(h#U APIHelpTopicr]ttQjA(Unr^(hUSTXTopicr_ttQh(Uor`(hUSTXTopicrattQh(Uprb(hUSTXTopicrcttQj$(Uqrd(h#U APIHelpTopicrettQh(Urrf(hUSTXTopicrgttQh(Usrh(h#U APIHelpTopicrittQj(Utrj(hUSTXTopicrkttQh(Uurl(hUSTXTopicrmttQh(Uvrn(hUSTXTopicrottQjH(Uwrp(hUSTXTopicrqttQh(Uxrr(hUSTXTopicrsttQhUHelprth(Uyru(h#U APIHelpTopicrvttQh(Uzrw(hUSTXTopicrxttQj (U{ry(hUSTXTopicrzttQh(U|r{(hUSTXTopicr|ttQj (U}r}(hUSTXTopicr~ttQj6(U~r(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQjP(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQj (Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQjU(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQjJ(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQjW(Ur(h#U APIHelpTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQj"(Ur(hUSTXTopicrttQj>(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj1(Ur(hUSTXTopicrttQj3(Ur(hUSTXTopicrttQjY(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQjF(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQjN(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQjC(Ur(hUSTXTopicrttQj&(Ur(hUSTXTopicrttQj/(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQj8(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQj*(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj-(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQUtitlerU Zope Helprj<(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQj (Ur(h#U APIHelpTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(h#U APIHelpTopicrttQj(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQh(Ur(hUSTXTopicrttQjR(Ur (hUSTXTopicr ttQj:(Ur (hUSTXTopicr ttQj[(Ur (h#U APIHelpTopicrttQu.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUstringqUidqU string.pyqUfuncsq ]q Udocq T string: Python 'string' module The 'string' module provides string manipulation, conversion, and searching functions. It is a standard Python module. Since Zope 2.4 requires Python 2.1, make sure to consult the Python 2.1 documentation. See Also "Python 'string' module":http://www.python.org/doc/current/lib/module-string.html documentation at Python.org q Uapisq ]qu.G Kgq((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUcommentqUfileqU The 'comment' tag is a block tag. The contents of the block are not executed, nor are they inserted into the DTML output. Examples Documenting DTML:: This content is not executed and does not appear in the output. Commenting out DTML:: This DTML is disabled and will not be executed. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUunlessqUfileqU;/usr/lib/zope/lib/python/Products/OFSP/help/dtml-unless.stxqUidq Udtml-unless.stxq Uobjq Tunless: Tests a condition The 'unless' tag provides a shortcut for testing negative conditions. For more complete condition testing use the 'if' tag. Syntax 'unless' tag syntax:: The 'unless' tag is a block tag. If the condition variable or expression evaluates to false, then the contained block is executed. Like the 'if' tag, variables that are not present are considered false. Examples Testing a variable:: The block will be executed if 'testMode' does not exist, or exists but is false. See Also "if tag":dtml-if.stx q u.G Kg|((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU&Database Management - Cache ParametersqUfileqUT/usr/lib/zope/lib/python/Products/OFSP/help/Database-Management_Cache-Parameters.stxqUidq U(Database-Management_Cache-Parameters.stxq Uobjq TzDatabase Management - Cache Parameters: Zope database cache. Description This view allows you to view Zope database cache statistics and set cache parameters. The Zope database cache operates by keeping frequently used objects in memory to improve performance. A large cache improves object access speed, but increases memory usage. A small cache reduces memory usage but may slow down object access speed. Information 'Total number of objects in the database' -- Indicates the number of *persistent* objects in the Zope database. 'Total number of objects in all the caches combined' -- Indicates the number of objects which are currently cached in memory. Controls 'Target size' -- Indicates ideal number of objects to have in memory at any given time. This controls the size of the Zope database cache. 'Target maximum time between accesses' -- Indicates the amount of time after which Zope should remove an object from memory if it hasn't been accessed. This controls how quickly the Zope database cache removes objects that aren't being used. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Undo - Undo management actions. qUfileqU4/usr/lib/zope/lib/python/Products/OFSP/help/Undo.stxqUidq UUndo.stxq Uobjq T Undo - Undo management actions. Description This view allows you to undo changes to Zope's database. Zope allows you to undo changes to its database. Changes are defined in terms of transactions which group together related changes. Each transaction has a URL and a user associated with it. In general the URL of a transaction indicates the URL that was called to initiate the changes. If an object was changed several times and you want to recover a version several changes back, you have to undo all the intermediary transactions as well. Controls '[Checkbox]' -- Selects one or more transactions. Each line shows one transaction. The transactions are sorted by date and time. The checkbox in the front allows you to check the transactions you would like to undo. The next entry on the line is the URL that caused the transaction, followed by the user who committed the transaction and the time transaction was performed. 'Earlier Transactions' -- Allows you to see transactions that were performed earlier then the ones you currently see. 'Later Transactions' -- Allows you to see transactions that were performed later then the ones you currently see. 'Undo' -- Undo the selected transactions. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUObjectManager - FindqUfileqU4/usr/lib/zope/lib/python/Products/OFSP/help/Find.stxqUidq UFind.stxq Uobjq ThObjectManager - Find: Search Zope. Description This view allows you to search for Zope objects. To find objects you specify search criteria in the top frame and then click the 'Find' button. The find results will appear in the button frame. For more search criteria click the 'Advanced...' link. Controls 'Find objects of type' -- The types of objects to find. 'with ids' -- The ids of objects to find. You may specify one or more ids separated by spaces. 'containing' -- The text that must be contained in the *body* of found items. Text in the title or other attribute fields will not be searched. 'modified' -- Allows you to restrict your search to a specific time period. You can choose whether objects 'before' or 'after' a specified date/time. **Note: The date should be a DateTime string such as 'YYYY/MM/DD hh:mm:ss', 'YYYY-MM-DD', or 'hh:mm'.** 'Search only in this folder' -- Find objects in this folder. 'Search all subfolders' -- Find objects in all subfolders. 'Find' -- Find objects matching the find criteria.q u.G Kg^((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU,Version Management - Control Zope versions. qUfileqUB/usr/lib/zope/lib/python/Products/OFSP/help/Version-Management.stxqUidq UVersion-Management.stxq Uobjq U}Version Management - Control Zope versions. Description Version Management allows you to control all Zope Versions.q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUPropertyManagerqUidqUPropertyManager.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G KgC((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqUA Property Manager object has a collection of typed attributes called properties. Properties can be managed through the web or via DTML. In addition to having a type, properties can be writable or read-only and can have default values.qUnameqUPropertyManagerqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU hasPropertyqUoptionalq)Urequiredq(Uidq tUdocq UReturns a true value if the Property Manager has the property 'id'. Otherwise returns a false value. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU getPropertyqUoptionalq((UdNttUrequiredq(Uidq tUdocq UReturn the value of the property 'id'. If the property is not found the optional second argument or None is returned. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetPropertyTypeqUoptionalq)Urequiredq(Uidq tUdocq UtGet the type of property 'id'. Returns None if no such property exists. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyIdsqUoptionalq)Urequiredq)Udocq ULReturns a list of property ids. Permission -- 'Access contents information'q u.G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyMapqUoptionalq)Urequiredq)Udocq UReturns a tuple of mappings, giving meta-data for properties. The meta-data includes 'id', 'type', and 'mode'. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUpropertyValuesqUoptionalq)Urequiredq)Udocq UOReturns a list of property values. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyItemsqUoptionalq)Urequiredq)Udocq UTReturn a list of (id, property) tuples. Permission -- 'Access contents information'q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUObjectManager - RenameqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/ObjectManager_Rename.stxqUidq UObjectManager_Rename.stxq Uobjq T2ObjectManager - Rename: Change object ids. Description This view allows you to change the id of one or more objects. Controls 'to' -- The new id of each object. The default value is the old id. 'OK' -- Changes the ids of the objects. 'Cancel' -- Cancels renaming operation. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU File - ViewqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/File_View.stxqUidq U File_View.stxq Uobjq UdFile - View: File Preview. Description This view downloads a File to your local computer. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqU UserFolderqUidqU UserFolder.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqUUser Folder objects are containers for user objects. Programmers can work with collections of user objects using the API shared by User Folder implementations.qUnameqU UserFolderqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetUserqUoptionalq)Urequiredq(htUdocq UReturns the user object specified by name. If there is no user named 'name' in the user folder, return None. Permission -- Manage usersq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU getUserNamesqUoptionalq)Urequiredq)Udocq UeReturns a sequence of names of the users which reside in the user folder. Permission -- Manage usersq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetUsersqUoptionalq)Urequiredq)Udocq UcReturns a sequence of all user objects which reside in the user folder. Permission -- Manage usersq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqUuserFolderAddUserqUoptionalq )Urequiredq (hUpasswordq Urolesq Udomainsq tUdocqTAPI method for creating a new user object. Note that not all user folder implementations support dynamic creation of user objects. Implementations that do not support dynamic creation of user objects will raise an error for this method. Permission -- Manage usersqu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUuserFolderDelUsersqUoptionalq)Urequiredq(Unamesq tUdocq UAPI method for deleting one or more user objects. Note that not all user folder implementations support deletion of user objects. Implementations that do not support deletion of user objects will raise an error for this method. Permission -- Manage usersq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqUuserFolderEditUserqUoptionalq )Urequiredq (hUpasswordq Urolesq Udomainsq tUdocqTAPI method for changing user object attributes. Note that not all user folder implementations support changing of user object attributes. Implementations that do not support changing of user object attributes will raise an error for this method. Permission -- Manage usersqu.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFolder - Container object. qUfileqU6/usr/lib/zope/lib/python/Products/OFSP/help/Folder.stxqUidq U Folder.stxq Uobjq TFolder - Container object. Description Folders allow you to organize Zope objects by grouping them together inside Folders. Folder contain other Zope objects including other Folders. Folders behave like directories in a filesystem. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFileqUfileqU4/usr/lib/zope/lib/python/Products/OFSP/help/File.stxqUidq UFile.stxq Uobjq T)File: Generic File. Description File objects can hold any binary or textual data such as zip files, Java applets, video, text, etcetera. Files provide a very limited through the web interface and are appropriate for data that will not be manipulated very much by Zope. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUVersion - Join/LeaveqUfileqUB/usr/lib/zope/lib/python/Products/OFSP/help/Version_Join-Leave.stxqUidq UVersion_Join-Leave.stxq Uobjq TVersion - Join/Leave: Start/Stop working in a Version. Description This view allows you to start and stop working in a private Version. When you are working in a version all changes you make will be hidden from other users. You may join and leave a Version as many times as necessary until you are ready to commit the Version or discard it. Controls 'Start Working in' -- Join the Version. 'Quit Working in' -- Leave the Version. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUProduct ManagementqUfileqUB/usr/lib/zope/lib/python/Products/OFSP/help/Product-Management.stxqUidq UProduct-Management.stxq Uobjq TProduct Management: Contains Zope Products. Description The Product Management Folder contains installed Zope Products. There are two types of Zope products, Python Products which are installed in the filesystem and Products created through the web. q u.G Kg)((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU functionsqUfileqU:/usr/lib/zope/lib/python/Products/OFSP/help/dtml-funcs.stxqUidq Udtml-funcs.stxq Uobjq T(functions: DTML Functions DTML utility functions provide some Python built-in functions and some DTML-specific functions. Functions abs(number) -- Return the absolute value of a number. The argument may be a plain or long integer or a floating point number. If the argument is a complex number, its magnitude is returned. chr(integer) -- Return a string of one character whose ASCII code is the integer, e.g., 'chr(97)' returns the string 'a'. This is the inverse of ord(). The argument must be in the range 0 to 255, inclusive; 'ValueError' will be raised if the integer is outside that range. DateTime() -- Returns a Zope 'DateTime' object given constructor arguments. See the "DateTime":DateTime.py API reference for more information on constructor arguments. divmod(number, number) -- Take two numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using long division. With mixed operand types, the rules for binary arithmetic operators apply. For plain and long integers, the result is the same as '(a / b, a % b)'. For floating point numbers the result is '(q, a % b)', where *q* is usually 'math.floor(a / b)' but may be 1 less than that. In any case 'q * b + a % b' is very close to *a*, if 'a % b' is non-zero it has the same sign as *b*, and '0 <= abs(a % b) < abs(b)'. float(number) -- Convert a string or a number to floating point. If the argument is a string, it must contain a possibly signed decimal or floating point number, possibly embedded in whitespace; this behaves identical to 'string.atof(number)'. Otherwise, the argument may be a plain or long integer or a floating point number, and a floating point number with the same value (within Python's floating point precision) is returned. getattr(object, string) -- Return the value of the named attributed of object. name must be a string. If the string is the name of one of the object's attributes, the result is the value of that attribute. For example, 'getattr(x, "foobar")' is equivalent to 'x.foobar'. If the named attribute does not exist, default is returned if provided, otherwise 'AttributeError' is raised. getitem(variable, render=0) -- Returns the value of a DTML variable. If 'render' is true, the variable is rendered. See the 'render' function. hasattr(object, string) -- The arguments are an object and a string. The result is 1 if the string is the name of one of the object's attributes, 0 if not. (This is implemented by calling getattr(object, name) and seeing whether it raises an exception or not.) hash(object) -- Return the hash value of the object (if it has one). Hash values are integers. They are used to quickly compare dictionary keys during a dictionary lookup. Numeric values that compare equal have the same hash value (even if they are of different types, e.g. 1 and 1.0). has_key(variable) -- Returns true if the DTML namespace contains the named variable. hex(integer) -- Convert an integer number (of any size) to a hexadecimal string. The result is a valid Python expression. Note: this always yields an unsigned literal, e.g. on a 32-bit machine, 'hex(-1)' yields '0xffffffff'. When evaluated on a machine with the same word size, this literal is evaluated as -1; at a different word size, it may turn up as a large positive number or raise an 'OverflowError' exception. int(number) -- Convert a string or number to a plain integer. If the argument is a string, it must contain a possibly signed decimal number representable as a Python integer, possibly embedded in whitespace; this behaves identical to 'string.atoi(number[, radix]'). The 'radix' parameter gives the base for the conversion and may be any integer in the range 2 to 36. If 'radix' is specified and the number is not a string, 'TypeError' is raised. Otherwise, the argument may be a plain or long integer or a floating point number. Conversion of floating point numbers to integers is defined by the C semantics; normally the conversion truncates towards zero. len(sequence) -- Return the length (the number of items) of an object. The argument may be a sequence (string, tuple or list) or a mapping (dictionary). max(s) -- With a single argument s, return the largest item of a non-empty sequence (e.g., a string, tuple or list). With more than one argument, return the largest of the arguments. min(s) -- With a single argument s, return the smallest item of a non-empty sequence (e.g., a string, tuple or list). With more than one argument, return the smallest of the arguments. namespace([name=value]...) -- Returns a new DTML namespace object. Keyword argument 'name=value' pairs are pushed into the new namespace. oct(integer) -- Convert an integer number (of any size) to an octal string. The result is a valid Python expression. Note: this always yields an unsigned literal, e.g. on a 32-bit machine, 'oct(-1)' yields '037777777777'. When evaluated on a machine with the same word size, this literal is evaluated as -1; at a different word size, it may turn up as a large positive number or raise an OverflowError exception. ord(character) -- Return the ASCII value of a string of one character. E.g., 'ord("a")' returns the integer 97. This is the inverse of 'chr()'. pow(x, y [,z]) -- Return *x* to the power *y*; if *z* is present, return *x* to the power *y*, modulo *z* (computed more efficiently than 'pow(x, y) % z'). The arguments must have numeric types. With mixed operand types, the rules for binary arithmetic operators apply. The effective operand type is also the type of the result; if the result is not expressible in this type, the function raises an exception; e.g., 'pow(2, -1)' or 'pow(2, 35000)' is not allowed. range([start,] stop [,step]) -- This is a versatile function to create lists containing arithmetic progressions. The arguments must be plain integers. If the step argument is omitted, it defaults to 1. If the start argument is omitted, it defaults to 0. The full form returns a list of plain integers '[start, start + step, start + 2 * step, ...]'. If step is positive, the last element is the largest 'start + i * step' less than *stop*; if *step* is negative, the last element is the largest 'start + i * step' greater than *stop*. *step* must not be zero (or else 'ValueError' is raised). round(x [,n]) -- Return the floating point value *x* rounded to *n* digits after the decimal point. If n is omitted, it defaults to zero. The result is a floating point number. Values are rounded to the closest multiple of 10 to the power minus n; if two multiples are equally close, rounding is done away from 0 (so e.g. round(0.5) is 1.0 and round(-0.5) is -1.0). render(object) -- Render 'object'. For DTML objects this evaluates the DTML code with the current namespace. For other objects, this is equivalent to 'str(object)'. reorder(s [,with] [,without]) -- Reorder the items in s according to the order given in 'with' and without the items mentioned in 'without'. Items from s not mentioned in with are removed. s, with, and without are all either sequences of strings or sequences of key-value tuples, with ordering done on the keys. This function is useful for constructing ordered select lists. SecurityCalledByExecutable() -- Return a true if the current object (e.g. DTML document or method) is being called by an executable (e.g. another DTML document or method, a script or a SQL method). SecurityCheckPermission(permission, object) -- Check whether the security context allows the given permission on the given object. For example, 'SecurityCheckPermission("Add Documents, Images, and Files", this())' would return true if the current user was authorized to create documents, images, and files in the current location. SecurityGetUser() -- Return the current user object. This is normally the same as the 'REQUEST.AUTHENTICATED_USER' object. However, the 'AUTHENTICATED_USER' object is insecure since it can be replaced. SecurityValidate([object] [,parent] [,name] [,value]) -- Return true if the value is accessible to the current user. 'object' is the object the value was accessed in, 'parent' is the container of the value, and 'name' is the named used to access the value (for example, if it was obtained via 'getattr'). You may omit some of the arguments, however it is best to provide all available arguments. SecurityValidateValue(object) -- Return true if the object is accessible to the current user. This function is the same as calling 'SecurityValidate(None, None, None, object)'. str(object) -- Return a string containing a nicely printable representation of an object. For strings, this returns the string itself. test(condition, result [,condition, result]... [,default]) -- Takes one or more condition, result pairs and returns the result of the first true condition. Only one result is returned, even if more than one condition is true. If no condition is true and a default is given, the default is returned. If no condition is true and there is no default, None is returned. unichr(number) -- Return a unicode string representing the value of number as a unicode character. This is the inverse of ord() for unicode characters. unicode(string[, encoding[, errors ] ]) -- Decodes string using the codec for encoding. Error handling is done according to errors. The default behavior is to decode UTF-8 in strict mode, meaning that encoding errors raise ValueError. Attributes None -- The 'None' object is equivalent to the Python built-in object 'None'. This is usually used to represent a Null or false value. See Also "'string' module":string.py "'random' module":random.py "'math' module":math.py "'sequence' module":sequence.py "Built-in Python Functions":http://www.python.org/doc/current/lib/built-in-funcs.html q u.G Kg f((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUProduct - RefreshqUfileqU?/usr/lib/zope/lib/python/Products/OFSP/help/Product_Refresh.stxqUidq UProduct_Refresh.stxq Uobjq T Product - Refresh: Reload a filesystem-based Python product. Description This view allows you to reload filesystem-based product code without restarting Zope. This function is useful during development of products. To enable your product to be refreshed, it is required that you put a file called 'refresh.txt' in your product directory. It can optionally contain a warning for others who might use the refresh function. (Producting refreshing is not perfect. Some products, especially "hotfix" style products which patch Zope, should not be refreshed. That's why 'refresh.txt' is required. Most products are safe to refresh, however.) There are two modes of operation. You can visit your product's 'Refresh' tab and manually push the refresh button. Or you can turn on "auto-refresh" mode, which causes Zope to periodically scan the modification time of the Python files that make up your product and execute a refresh operation in the background. **NOTE**: Don't enable auto-refresh for too many products at once. Scanning file modification times can take a lot of time per request. You can also select dependent refreshable products. If you have a product that subclasses from a product you're working on, you'll want to enable refresh for both products and add the product that subclasses as a dependent of the product you're modifying. This enables subclasses to be updated. Controls 'Refresh this product' -- The manual refresh button. 'Auto refresh mode' -- Check the checkbox to enable auto-refresh. 'Dependent auto-refreshable products' -- A list of other products which are auto-refreshable. How it works To execute a refresh, Zope looks in the sys.modules dictionary for modules with names that start with the prefix for your product. It tries to scan for dependencies between the modules that make up your product then uses Python's reload() function for each module in order. Then it sets a flag that will cause ZODB to dump its cache on the next connection so that changes to persistent classes will take effect. To implement auto-refresh, Zope stores a PersistentMapping called RefreshData on the database root object (below the Application object). The contents of the PersistentMapping are examined at the moment a database connection is opened by ZApplication. The PersistentMapping contains a list of which products have auto-refresh enabled. For each product with auto-refresh enabled, Zope compares the file mod times with the last recorded times and executes a refresh if there are any changes. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Zope FactoryqUfileqU A more complex example is presenting the File object for download by the user. The next example displays a link to every File object in a folder for the user to download::
In this example, the 'absolute_url' method and 'id' are used to create a list of HTML hyperlinks to all of the File objects in the current Object Manager. Also see ObjectManager for details on the 'objectValues' method.qUmethodsq]q((Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetSizeqUoptionalq)Urequiredq)Udocq U If the call tag uses a variable, the methods arguments are passed automatically by DTML just as with the 'var' tag. If the method is specified in a expression, then you must pass the arguments yourself. Examples Calling by variable name:: This calls the 'UpdateInfo' object automatically passing arguments. Calling by expression:: See Also "var tag":dtml-var.stx q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Image - ViewqUfileqU:/usr/lib/zope/lib/python/Products/OFSP/help/Image_View.stxqUidq UImage_View.stxq Uobjq UQImage - View: Preview Image. Description This view displays the Image. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUObjectManagerItemqUidqUObjectManagerItem.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kgj((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqTA Zope object that can be contained within an Object Manager. Almost all Zope objects that can be managed through the web are Object Manager Items. ObjectMangerItems have these instance attributes: 'title' -- The title of the object. This is an optional one-line string description of the object. 'meta_type' -- A short name for the type of the object. This is the name that shows up in product add list for the object and is used when filtering objects by type. This attribute is provided by the object's class and should not be changed directly. 'REQUEST' -- The current web request. This object is acquired and should not be set.qUnameqUObjectManagerItemqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocq ttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU title_and_idqUoptionalq)Urequiredq)Udocq UIf the title is not blank, the return the title followed by the id in parentheses. Otherwise return the id. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUrestrictedTraverseqUoptionalq((UdefaultqNttUrequiredq (Upathq tUdocq UReturn the object obtained by traversing the given path from the object on which the method was called, performing security checks along the way. If an object is not found then the 'default' argument will be returned. Permission -- Always availableq u.G KgF((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUthisqUoptionalq)Urequiredq)Udocq TReturn the object. This turns out to be handy in two situations. First, it provides a way to refer to an object in DTML expressions. The second use for this is rather deep. It provides a way to acquire an object without getting the full context that it was acquired from. This is useful, for example, in cases where you are in a method of a non-item subobject of an item and you need to get the item outside of the context of the subobject. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU absolute_urlqUoptionalq((UrelativeqNttUrequiredq )Udocq TReturn the absolute url to the object. If the relative argument is provided with a true value, then the URL returned is relative to the site object. Note, if virtual hosts are being used, then the path returned is a logical, rather than a physical path. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetIdqUoptionalq)Urequiredq)Udocq T#Returns the object's id. The 'id' is the unique name of the object within its parent object manager. This should be a string, and can contain letters, digits, underscores, dashes, commas, and spaces. This method replaces direct access to the 'id' attribute. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUunrestrictedTraverseqUoptionalq((UdefaultqNttUrequiredq (Upathq tUdocq T%Return the object obtained by traversing the given path from the object on which the method was called. This method begins with "unrestricted" because (almost) no security checks are performed. If an object is not found then the 'default' argument will be returned. Permission -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetPhysicalPathqUoptionalq)Urequiredq)Udocq U`Get the path of an object from the root, ignoring virtual hosts. Permission -- Always availableq u.G Kg+((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_workspaceqUoptionalq)Urequiredq)Udocq UThis is the web method that is called when a user selects an item in a object manager contents view or in the Zope Management navigation view. Permission -- 'View management screens'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetPhysicalRootqUoptionalq)Urequiredq)Udocq UIReturns the top-level Zope Application object. Permission -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU title_or_idqUoptionalq)Urequiredq)Udocq U^If the title is not blank, return it, otherwise return the id. Permission -- Always availableq u.G Kg'((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZope Factory - AddqUfileqU@/usr/lib/zope/lib/python/Products/OFSP/help/Zope-Factory_Add.stxqUidq UZope-Factory_Add.stxq Uobjq TaZope Factory - Add: Create a Zope Factory. Description This view allows you to create a new Zope Factory. Controls 'Id' -- The id of the Zope Factory. 'Title' -- The optional title of the Zope Factory. 'Add list name' -- The name that will appear on the in the product add list. In the case of ZClasses this is normally the ZClass's meta-type. 'Method' -- The method that is executed when the product is chosen from the product add list. Typically this method is an add form. 'Generate' -- Create the Factory and add its entry to the product add list. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZClass - Property SheetsqUfileqUF/usr/lib/zope/lib/python/Products/OFSP/help/ZClass_Property-Sheets.stxqUidq UZClass_Property-Sheets.stxq Uobjq TZClass - Property Sheets: Manage ZClass property sheets. Description This view allows you to manage a ZClass's property sheets. Property sheets provide a way to organize ZClass properties. A property sheet defines default values for ZClass instance attributes and provides an editing method for the attributes. The creation and management of property sheets proceeds exactly like the management of a Folder's contents. See "ObjectManager - Contents". q u.G Kg .((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUmimeqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/dtml-mime.stxqUidq U dtml-mime.stxq Uobjq T mime: Formats data with MIME The 'mime' tag allows you to create MIME encoded data. It is chiefly used to format email inside the 'sendmail' tag. Syntax 'mime' tag syntax:: [] ... The 'mime' tag is a block tag. The block is can be divided by one or more 'boundry' tags to create a multi-part MIME message. 'mime' tags may be nested. The 'mime' tag is most often used inside the 'sendmail' tag. Attributes Both the 'mime' and 'boundry' tags have the same attributes. encode=string -- MIME Content-Transfer-Encoding header, defaults to 'base64'. Valid encoding options include 'base64', 'quoted-printable', 'uuencode', 'x-uuencode', 'uue', 'x-uue', and '7bit'. If the 'encode' attribute is set to '7bit' no encoding is done on the block and the data is assumed to be in a valid MIME format. type=string -- MIME Content-Type header. type_expr=string -- MIME Content-Type header as a variable expression. You cannot use both 'type' and 'type_expr'. name=string -- MIME Content-Type header name. name_expr=string -- MIME Content-Type header name as a variable expression. You cannot use both 'name' and 'name_expr'. disposition=string -- MIME Content-Disposition header. disposition_expr=string -- MIME Content-Disposition header as a variable expression. You cannot use both 'disposition' and 'disposition_expr'. filename=string -- MIME Content-Disposition header filename. filename_expr=string -- MIME Content-Disposition header filename as a variable expression. You cannot use both 'filename' and 'filename_expr'. skip_expr=string -- A variable expression that if true, skips the block. You can use this attribute to selectively include MIME blocks. Examples Sending a file attachment:: To: Subject: Resume Hi, please take a look at my resume. See Also "Python Library: mimetools":http://www.python.org/doc/current/lib/module-mimetools.html q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU&WebDAV Lock Management - Manage Locks qUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/DavLocks-ManageLocks.stxqUidq UDavLocks-ManageLocks.stxq Uobjq T:WebDAV Lock Management - Manage Locks Description This view allows you to manage WebDAV WriteLocks. WebDAV, as an extension to the HTTP Protocol, allows the users to create *Write Locks* as a way of trying to avoid the "lost updates problem". However, sometimes WriteLocks may become abandoned. This may be due to users forgetting to unlock their resources, software failures such as crashes, etc. In many cases, locks might just time out before this becomes a problem. In cases where it's not, this control panel object may be used to locate locked resources inside of Zope and clear *ALL* of their WebDAV writelocks. **This does not clear locks caused by use of Versions**. Controls 'Path' -- This lets you enter a path (based off the root of the Zope site) to filter down the list of locked objects. Clicking 'Go' executes the filter. When locked objects are found, they are listed one per line with a checkbox that can be used to select the item. Also listed in each line is information about the lock(s) on the object - the user who created the lock (identified by the path to the user folder the user is defined in), and the locktoken that identifies the lock. In the majority of cases, there should only be one lock per object. '[Checkbox]' -- Selects locked items. 'Select All' -- This button marks all items displayed as selected. 'Deselect All' -- After 'Select All' has been clicked, it changes to say 'Deselect All'. Clicking this deselects all displayed items. 'Unlock objects' -- Unlocks the selected items.q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUControl Panel - ContentsqUfileqUF/usr/lib/zope/lib/python/Products/OFSP/help/Control-Panel_Contents.stxqUidq UControl-Panel_Contents.stxq Uobjq TControl Panel - Contents: Zope system controls Description This view displays information about the Zope process and allows you to restart and/or shutdown Zope. System Information 'Zope version' -- The version of Zope, the type of the release (binary/source), the Python version, and the platform the binaries were compiled on. 'Python version' -- The Python version that Zope is using. 'System Platform' -- The type of machine Zope is running on. 'SOFTWARE_HOME' -- The filesystem path of the core Zope software. 'INSTANCE_HOME' -- The filesystem path where Zope loads add-on software. 'CLIENT_HOME' -- The filesystem path where Zope stores data and log files. 'Process ID' -- The PID of the Zope process. 'Running for' -- How long the Zope process has been running. Management Options 'Database Management' -- Provides access to the database management functions such as packing and cache management. 'Version Management' -- Provides access to version management functions, including version commit and abort. 'Product Management' -- Provides access to management functions for installed Zope Products. Controls 'Shutdown' -- Shutsdown the Zope process. **Important: You will not be able to access Zope through the web after shutting it down.** 'Restart' -- Restarts Zope. This control will only appear if Zope is running under daemon control or as a win32 service. **Note: It may take a few moments until the Zope comes back up after being restarted.** If your browser supports JavaScript, you should be able to add the following link to your bookmarks/favorites and use it to restart any Zope site: (Restart Zope). q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUtreeqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/dtml-tree.stxqUidq U dtml-tree.stxq Uobjq Tqtree: Inserts a tree widget The 'tree' tag displays a dynamic tree widget by querying Zope objects. Syntax 'tree' tag syntax:: The 'tree' tag is a block tag. It renders a dynamic tree widget in HTML. The root of the tree is given by variable name or expression, if present, otherwise it defaults to the current object. The 'tree' block is rendered for each tree node, with the current node pushed onto the DTML namespace. Tree state is set in HTTP cookies. Thus for trees to work, cookies must be enabled. Also you can only have one tree per page. Attributes branches=string -- Finds tree branches by calling the named method. The default method is 'tpValues' which most Zope objects support. branches_expr=string -- Finds tree branches by evaluating the expression. id=string -- The name of a method or id to determine tree state. It defaults to 'tpId' which most Zope objects support. This attribute is for advanced usage only. url=string -- The name of a method or attribute to determine tree item URLs. It defaults to 'tpURL' which most Zope objects support. This attribute is for advanced usage only. leaves=string -- The name of a DTML Document or Method used to render nodes that don't have any children. Note: this document should begin with '' and end with '' in order to ensure proper display in the tree. header=string -- The name of a DTML Document or Method displayed before expanded nodes. If the header is not found, it is skipped. footer=string -- The name of a DTML Document or Method displayed after expanded nodes. If the footer is not found, it is skipped. nowrap=boolean -- If true then rather than wrap, nodes may be truncated to fit available space. sort=string -- Sorts the branches by the named attribute. reverse -- Reverses the order of the branches. assume_children=boolean -- Assumes that nodes have children. This is useful if fetching and querying child nodes is a costly process. This results in plus boxes being drawn next to all nodes. single=boolean -- Allows only one branch to be expanded at a time. When you expand a new branch, any other expanded branches close. skip_unauthorized -- Skips nodes that the user is unauthorized to see, rather than raising an error. urlparam=string -- A query string which is included in the expanding and contracting widget links. This attribute is for advanced usage only. prefix=string -- Provide versions of the tag variables that start with this prefix instead of "tree", and that use underscores (_) instead of hyphens (-). The prefix must start with a letter and contain only alphanumeric characters and underscores (_). Tag Variables tree-item-expanded -- True if the current node is expanded. tree-item-url -- The URL of the current node. tree-root-url -- The URL of the root node. tree-level -- The depth of the current node. Top-level nodes have a depth of zero. tree-colspan -- The number of levels deep the tree is being rendered. This variable along with the 'tree-level' variable can be used to calculate table rows and colspan settings when inserting table rows into the tree table. tree-state -- The tree state expressed as a list of ids and sub-lists of ids. This variable is for advanced usage only. Tag Control Variables You can control the tree tag by setting these variables. expand_all -- If this variable is true then the entire tree is expanded. collapse_all -- If this variable is true then the entire tree is collapsed. Examples Display a tree rooted in the current object:: Display a tree rooted in another object, using a custom branches method:: Node id : q u.G Kg{((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFolder - Manage PermissionqUfileqUJ/usr/lib/zope/lib/python/Products/OFSP/help/Security_Manage-Permission.stxqUidq USecurity_Manage-Permission.stxq Uobjq TFolder - Manage Permission: Assign roles to a permission. Description This view allows you to assign roles to a permission. Controls '[Role List]' -- The roles assigned to the permission. 'Also use roles acquired from folders containing this object' -- Whether or not to acquire permissions settings for the permission. 'Change' -- Changes the security settings. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU File - EditqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/File_Edit.stxqUidq U File_Edit.stxq Uobjq T2File - Edit: File Properties. Description This view allows you to edit File properties. Form Elements 'Title' -- The optional title of the File. 'Content type' -- The content type of the file. Zope will try to guess an appropriate content type when you upload a File. 'Precondition' -- Allows you to specify a precondition for the File. A precondition is a method or document which is executed before the File is viewed or downloaded. If the precondition raises an exception then the File cannot be viewed. 'File Content' -- If the content of the file object is text-based and small enough to be edited with a Web form, a textarea containing the content of the file will be displayed. You can make changes to the content in this text area and click the 'Save Changes' button to update the file content. 'Last Modified' -- The time that the object was last changed. This is only displayed if the file data is non-text or too large to be edited with a Web form. 'File Size' -- The size (in bytes) of the image data. This is only displayed if the file data is not text or too large to be edited with a Web form. 'File Data' -- The file to upload. Use the 'Browse...' button to select a local file. 'Upload' -- Uploads the file. q u.G Kg6((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUVersion Management - VersionqUfileqUJ/usr/lib/zope/lib/python/Products/OFSP/help/Version-Management_Version.stxqUidq UVersion-Management_Version.stxq Uobjq TRVersion Management - Version: Manage versions. Description This view allows you to manage versions. Controls Non-empty versions are listed one per line. Click on a version to edit it. '[Checkbox]' -- Selects versions. 'Save' -- Commits the selected versions. 'Discard' -- Aborts the selected versions. q u.G KgU((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFile/Image - AddqUfileqU8/usr/lib/zope/lib/python/Products/OFSP/help/File_Add.stxqUidq U File_Add.stxq Uobjq TFile/Image - Add: Create a File or Image. Description Creates a new File or Image. Controls 'Id' -- The id of the File or Image. **Note: If you do not provide an Id then the file name will be used.** 'Title' -- The optional title of the File or Image. 'File' -- The file to upload. use the 'Browse...' button to select a local file. 'Add' -- Creates a new File or Image. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUreturnqUfileqU;/usr/lib/zope/lib/python/Products/OFSP/help/dtml-return.stxqUidq Udtml-return.stxq Uobjq TWreturn: Returns data The 'return' tag stops executing DTML and returns data. It mirrors the Python 'return' statement. Syntax 'return' tag syntax:: Stops execution of DTML and returns a variable or expression. The DTML output is not returned. Usually a return expression is more useful than a return variable. Scripts largely obsolete this tag. Examples Returning a variable:: Returning a Python dictionary:: q u.G Kg2((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU0Control Panel - Zope administration facilities. qUfileqU=/usr/lib/zope/lib/python/Products/OFSP/help/Control-Panel.stxqUidq UControl-Panel.stxq Uobjq TTControl Panel - Zope administration facilities. Description Control Panel provides centralized Zope administration facilities. In the Control Panel you can restart and shutdown Zope, access debugging information, manage the Zope database, and manage versions. Zope products are located inside the Control Panel. q u.G Kg/((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUsequenceqUidqU sequence.pyqUfuncsq ]q (Uq (hU MethodDocq ttQaUdocq U sequence: Sequence sorting module This module provides a 'sort' function for use with DTML, Page Templates, and Python-based Scripts. qUapisq]qu.G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUsortqUoptionalq)Urequiredq(Useqq htUdocq T Sort the sequence *seq* of objects by the optional sort schema *sort*. *sort* is a sequence of tuples '(key, func, direction)' that describe the sort order. key -- Attribute of the object to be sorted. func -- Defines the compare function (optional). Allowed values: "cmp" -- Standard Python comparison function "nocase" -- Case-insensitive comparison "strcoll" or "locale" -- Locale-aware string comparison "strcoll_nocase" or "locale_nocase" -- Locale-aware case-insensitive string comparison other -- A specified, user-defined comparison function, should return 1, 0, -1. direction -- defines the sort direction for the key (optional). (allowed values: "asc", "desc") DTML Examples Sort child object (using the 'objectValues' method) by id (using the 'getId' method), ignoring case::
Sort child objects by title (ignoring case) and date (from newest to oldest)::
Page Template Examples You can use the 'sequence.sort' function in Python expressions to sort objects. Here's an example that mirrors the DTML example above::
title modification date
This example iterates over a sorted list of object, drawing a table row for each object. The objects are sorted by title and modification time. See Also "Python cmp function":http://www.python.org/doc/lib/built-in-funcs.htmlq u.G Kg~((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZope PermissionqUfileqU?/usr/lib/zope/lib/python/Products/OFSP/help/Zope-Permission.stxqUidq UZope-Permission.stxq Uobjq UZope Permission: Define new Permissions. Description Zope Permissions allow you to define new permissions. Typically new Permissions are associated with operations on ZClasses. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZope Factory - EditqUfileqUA/usr/lib/zope/lib/python/Products/OFSP/help/Zope-Factory_Edit.stxqUidq UZope-Factory_Edit.stxq Uobjq TZope Factory - Edit: Edit Factory. Description This view allows you to edit a Zope Factory. Controls 'Title' -- The optional title of the Zope Factory. 'Add list name' -- The name that will appear on the in the product add list. In the case of ZClasses this is normally the ZClass's meta-type. 'Method' -- The method that is executed when the product is chosen from the product add list. Typically this method is an add form. 'Permission' -- The permission needed to execute the factory. If the user does not have the Factory permission, the Factory's entry will not show up in the product add list. 'Change' -- Change the Factory and update the product add list. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFolder - Import/ExportqUfileqUK/usr/lib/zope/lib/python/Products/OFSP/help/ObjectManager_Import-Export.stxqUidq UObjectManager_Import-Export.stxq Uobjq TFolder - Import/Export: Import/export Zope objects. Description This view allows you to import or export Zope objects. Imported objects will be inserted into the current object. Exported objects will be saved to a file on the Zope server or downloaded to the local client. Controls 'Export object id' -- The id of the object to be exported. **Note: The exported object must be contained by the current object.** 'Export to' -- Where you want to save the exported file. 'Download to local machine' downloads the export file to your client, 'Save to file server' saves the export file to the Zope 'var' directory. 'XML format?' -- Whether the exported object is in a binary format or in XML format. 'Export' -- Exports the object. 'Import file name' -- The filename of the Zope export file that you would like to import. The file must be located in the Zope 'import' directory. 'Import' -- Imports the object. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUFile/Image - UploadqUfileqU;/usr/lib/zope/lib/python/Products/OFSP/help/File_Upload.stxqUidq UFile_Upload.stxq Uobjq T+File/Image - Upload: File upload. Description Use this view to completely replace the File or Image with an uploaded file from your local computer. Controls 'Data' -- The file to upload. Use the 'Browse...' button to select a local file. 'Change' -- Uploads the file. q u.G KgB((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU DTML MethodqUfileqU;/usr/lib/zope/lib/python/Products/OFSP/help/DTML-Method.stxqUidq UDTML-Method.stxq Uobjq TDTML Method: Template object. Description DTML Methods provide general templating and scripting facilities. DTML Documents can contain scripting commands in Document Template Markup Language (DTML), which allows for dynamic behavior. Unlike DTML Documents, DTML Methods have no properties, and lookup variables in the namespace of the object they are bound to. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUProduct - DistributionqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/Product_Distribution.stxqUidq UProduct_Distribution.stxq Uobjq T Product - Distribution: Create a Product distribution. Description This view allows you to create a distribution from a Product. A Product Distribution is a packaged version of a Product which is meant to be shipped to users. A Distribution provides limited access to the internals of a Product. Distribution files are installed by unpacking them in the Zope directory. Controls 'Version' -- The version of the Product distribution. 'Configurable objects' -- The objects that will be exposed by the distribution. These will be the objects that will appear when the distribution is installed as a Zope product. 'Create a distribution archive' -- Creates a distribution file and downloads it to your local computer. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqURequestqUidqU Request.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kgk((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqT The request object encapsulates all of the information regarding the current request in Zope. This includes, the input headers, form data, server data, and cookies. The request object is a mapping object that represents a collection of variable to value mappings. In addition, variables are divided into five categories: - Environment variables These variables include input headers, server data, and other request-related data. The variable names are as specified in the CGI specification - Form data These are data extracted from either a URL-encoded query string or body, if present. - Cookies These are the cookie data, if present. - Lazy Data These are callables which are deferred until explicitly referenced, at which point they are resolved (called) and the result stored as "other" data, ie regular request data. Thus, they are "lazy" data items. An example is SESSION objects. Lazy data in the request may only be set by the Python method set_lazy(name,callable) on the REQUEST object. This method is not callable from DTML or through the web. - Other Data that may be set by an application object. The request object may be used as a mapping object, in which case values will be looked up in the order: environment variables, other variables, form data, and then cookies. These special variables are set in the Request: 'PARENTS' -- A list of the objects traversed to get to the published object. So, 'PARENTS[0]' would be the ancestor of the published object. 'REQUEST' -- The Request object. 'RESPONSE' -- The Response object. 'PUBLISHED' -- The actual object published as a result of url traversal. 'URL' -- The URL of the Request without query string. *URLn* -- 'URL0' is the same as 'URL'. 'URL1' is the same as 'URL0' with the last path element removed. 'URL2' is the same as 'URL1' with the last element removed. Etcetera. For example if URL='http://localhost/foo/bar', then URL1='http://localhost/foo' and URL2='http://localhost'. *URLPATHn* -- 'URLPATH0' is the path portion of 'URL', 'URLPATH1' is the path portion of 'URL1', and so on. For example if URL='http://localhost/foo/bar', then URLPATH1='/foo' and URLPATH2='/'. *BASEn* -- 'BASE0' is the URL up to but not including the Zope application object. 'BASE1' is the URL of the Zope application object. 'BASE2' is the URL of the Zope application object with an additional path element added in the path to the published object. Etcetera. For example if URL='http://localhost/Zope.cgi/foo/bar', then BASE0='http://localhost', BASE1='http://localhost/Zope.cgi', and BASE2='http://localhost/Zope.cgi/foo'. *BASEPATHn* -- 'BASEPATH0' is the path portion of 'BASE0', 'BASEPATH1' is the path portion of 'BASE1', and so on. 'BASEPATH1' is the externally visible path to the root Zope folder, equivalent to CGI's 'SCRIPT_NAME', but virtual-host aware. For example if URL='http://localhost/Zope.cgi/foo/bar', then BASEPATH0='/', BASEPATH1='/Zope.cgi', and BASEPATH2='/Zope.cgi/foo'.qUnameqURequestqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.G KgF((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU setServerURLqUoptionalq((UprotocolqNt(Uhostnameq Nt(Uportq NttUrequiredq )Udocq USets the specified elements of 'SERVER_URL', also affecting 'URL', 'URLn', 'BASEn', and 'absolute_url()'. Provides virtual hosting support. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUhas_keyqUoptionalq)Urequiredq(Ukeyq tUdocq UyReturns a true value if the REQUEST object contains key, returns a false value otherwise. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUsetqUoptionalq)Urequiredq(hUvalueq tUdocq UCreate a new name in the REQUEST object and assign it a value. This name and value is stored in the 'Other' category. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUvaluesqUoptionalq)Urequiredq)Udocq UdReturns a sequence of values for all the keys in the REQUEST object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUsetVirtualRootqUoptionalq((UhardqKttUrequiredq (Upathq tUdocq TAlters 'URL', 'URLn', 'URLPATHn', 'BASEn', 'BASEPATHn', and 'absolute_url()' so that the current object has path 'path'. If 'hard' is true, 'PARENTS' is emptied. Provides virtual hosting support. Intended to be called from publishing traversal hooks. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUkeysqUoptionalq)Urequiredq)Udocq U\Returns a sorted sequence of all keys in the REQUEST object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUitemsqUoptionalq)Urequiredq)Udocq UqReturns a sequence of (key, value) tuples for all the keys in the REQUEST object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU get_headerqUoptionalq((UdefaultqNttUrequiredq (htUdocq TWReturn the named HTTP header, or an optional default argument or None if the header is not found. Note that both original and CGI header names without the leading 'HTTP_' are recognized, for example, 'Content-Type', 'CONTENT_TYPE' and 'HTTP_CONTENT_TYPE' should all return the Content-Type header, if available. Permission -- Always availableq u.G Kg;((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUtextqUoptionalq)Urequiredq)Udocq UReturns information about the request as text. This is useful for debugging purposes. The returned text lists form contents, cookies, special variables, and evironment variables. Permissions -- Always availableq u.G KgI((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUDTML Document/Method - ViewqUfileqUJ/usr/lib/zope/lib/python/Products/OFSP/help/DTML-DocumentOrMethod_View.stxqUidq UDTML-DocumentOrMethod_View.stxq Uobjq UiDTML Document/Method - View: Display Description This view displays a DTML Document or Method. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqU PropertySheetqUidqUPropertySheet.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqT%A PropertySheet is an abstraction for organizing and working with a set of related properties. Conceptually it acts like a container for a set of related properties and meta-data describing those properties. A PropertySheet may or may not provide a web interface for managing its properties.qUnameqU PropertySheetqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocq ttQ(Uq!(hU MethodDocq"ttQ(Uq#(hU MethodDocq$ttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU hasPropertyqUoptionalq)Urequiredq(Uidq tUdocq UyReturns true if 'self' has a property with the given 'id', false otherwise. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyIdsqUoptionalq)Urequiredq)Udocq UMReturns a list of property ids. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyMapqUoptionalq)Urequiredq)Udocq UWReturns a tuple of mappings, giving meta-data for properties. Permssion -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addPropertyqUoptionalq((UREQUESTqNttUrequiredq (Uidq Uvalueq Utypeq tUdocq TAdd a new property with the given 'id', 'value' and 'type'. These are the property types: 'boolean' -- 1 or 0. 'date' -- A 'DateTime' value, for example '12/31/1999 15:42:52 PST'. 'float' -- A decimal number, for example '12.4'. 'int' -- An integer number, for example, '12'. 'lines' -- A list of strings, one per line. 'long' -- A long integer, for example '12232322322323232323423'. 'string' -- A string of characters, for example 'This is a string'. 'text' -- A multi-line string, for example a paragraph. 'tokens' -- A list of strings separated by white space, for example 'one two three'. 'selection' -- A string selected by a pop-up menu. 'multiple selection' -- A list of strings selected by a selection list. This method will use the passed in 'type' to try to convert the 'value' argument to the named type. If the given 'value' cannot be converted, a ValueError will be raised. The value given for 'selection' and 'multiple selection' properites may be an attribute or method name. The attribute or method must return a sequence values. If the given 'type' is not recognized, the 'value' and 'type' given are simply stored blindly by the object. If no value is passed in for 'REQUEST', the method will return 'None'. If a value is provided for 'REQUEST' (as it will when called via the web), the property management form for the object will be rendered and returned. This method may be called via the web, from DTML or from Python code. Permission -- 'Manage Properties'qu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqUmanage_changePropertiesqUoptionalq ((UREQUESTq NttUrequiredq )Udocq TJChange existing object properties by passing either a mapping object as 'REQUEST' containing name:value pairs or by passing name=value keyword arguments. Some objects have "special" properties defined by product authors that cannot be changed. If you try to change one of these properties through this method, an error will be raised. Note that no type checking or conversion happens when this method is called, so it is the caller's responsibility to ensure that the updated values are of the correct type. *This should probably change*. If a value is provided for 'REQUEST' (as it will be when called via the web), the method will return an HTML message dialog. If no REQUEST is passed, the method returns 'None' on success. This method may be called via the web, from DTML or from Python code. Permission -- 'Manage Properties'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_delPropertiesqUoptionalq((UidsqNt(UREQUESTq NttUrequiredq )Udocq TDelete one or more properties with the given 'ids'. The 'ids' argument should be a sequence (tuple or list) containing the ids of the properties to be deleted. If 'ids' is empty no action will be taken. If any of the properties named in 'ids' does not exist, an error will be raised. Some objects have "special" properties defined by product authors that cannot be deleted. If one of these properties is named in 'ids', an HTML error message is returned. If no value is passed in for 'REQUEST', the method will return None. If a value is provided for 'REQUEST' (as it will be when called via the web), the property management form for the object will be rendered and returned. This method may be called via the web, from DTML or from Python code. Permission -- 'Manage Properties'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU getPropertyqUoptionalq((UdNttUrequiredq(Uidq tUdocq UGet the property 'id', returning the optional second argument or None if no such property is found. Permission -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyInfoqUoptionalq)Urequiredq)Udocq UKReturns a mapping containing property meta-data. Permission -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetPropertyTypeqUoptionalq)Urequiredq(Uidq tUdocq UbGet the type of property 'id'. Returns None if no such property exists. Permission -- Python onlyq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUpropertyValuesqUoptionalq)Urequiredq)Udocq UVReturns a list of actual property values. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU propertyItemsqUoptionalq)Urequiredq)Udocq UTReturn a list of (id, property) tuples. Permission -- 'Access contents information'q u.G Kgj((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU xml_namespaceqUoptionalq)Urequiredq)Udocq UReturn a namespace string usable as an xml namespace for this property set. This may be an empty string if there is no default namespace for a given property sheet (especially property sheets added in ZClass definitions). Permission -- Python onlyq u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUifqUfileqU7/usr/lib/zope/lib/python/Products/OFSP/help/dtml-if.stxqUidq U dtml-if.stxq Uobjq Tif: Tests Conditions The 'if' tags allows you to test conditions and to take different actions depending on the conditions. The 'if' tag mirrors Python's 'if/elif/else' condition testing statements. Syntax If tag syntax:: [] ... [] The 'if' tag is a block tag. The 'if' tag and optional 'elif' tags take a condition variable name or a condition expression, but not both. If the condition name or expression evaluates to true then the 'if' block is executed. True means not zero, an empty string or an empty list. If the condition variable is not found then the condition is considered false. If the initial condition is false, each 'elif' condition is tested in turn. If any 'elif' condition is true, its block is executed. Finally the optional 'else' block is executed if none of the 'if' and 'elif' conditions were true. Only one block will be executed. Examples Testing for a variable:: The snake variable is true Testing for expression conditions:: num is greater than five num is less than five num must be five See Also "Python Tutorial: If Statements":http://www.python.org/doc/current/tut/node6.html#SECTION006100000000000000000 q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZClass - MethodsqUfileqU>/usr/lib/zope/lib/python/Products/OFSP/help/ZClass_Methods.stxqUidq UZClass_Methods.stxq Uobjq T9ZClass - Methods: Manage ZClass methods. Description This view allows you to manage ZClass methods. A ZClass inherits methods from its base classes. It can also contain methods which are managed through the web. This view allows you to create and edit methods such as DTML Methods, ZSQL Methods, and External Methods though the web. Methods that you create through the web will be accessible as methods on instances of the ZClass. The creation and management of methods proceeds exactly like the management of a Folder's contents. See "Folder - Contents". The main difference between editing method objects and normal objects is that methods have a 'Define Permissions' view in place of a 'Security' view. See "Security - Define Permissions". If you create ZClasses inside the Methods view of a ZClass instances of the inner class will be addable to instances of the outer class. Typically the outer class will subclass 'ObjectManager' and the inner class will be only relevant inside the outer class. q u.G Kgn((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Properties - Define properties. qUfileqU:/usr/lib/zope/lib/python/Products/OFSP/help/Properties.stxqUidq UProperties.stxq Uobjq TProperties - Define properties. Description This view allows you to edit and define properties on the current object. Property types 'boolean' -- 1 or 0. 'date' -- A 'DateTime' value, for example '12/31/1999 15:42:52 PST'. 'float' -- A decimal number, for example '12.4'. 'int' -- An integer number, for example, '12'. 'lines' -- A list of strings, one per line. 'long' -- A long integer, for example '12232322322323232323423'. 'string' -- A string of characters, for example 'This is a string'. 'text' -- A multi-line string, for example a paragraph. 'tokens' -- A list of strings separated by white space, for example 'one two three'. 'selection' -- A string selected by a pop-up menu. 'multiple selection' -- A list of strings selected by a selection list. Controls Editing Properties Existing properties can be edited by selecting them. '[Checkbox]' -- Select the properties to change. 'Property' -- The value of the property. 'Save Changes' -- Changes the value of the selected properties. 'Delete' -- Deletes the selected properties. Creating new properties 'Id' -- The id of the property. 'Type' -- The type of the property. 'Value' -- The value of the property. **Note: When creating 'selection' and 'multiple selection' properties, specify the name of another property (or method) as the 'Value'. This property (or method) should return a list of strings will be used to provide choices for the selection.** 'Add' -- Creates a new property. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUAuthenticatedUserqUidqUAuthenticatedUser.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqUqThis interface needs to be supported by objects that are returned by user validation and used for access control.qUnameqUAuthenticatedUserqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU getDomainsqUoptionalq)Urequiredq)Udocq URReturn the list of domain restrictions for a user. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetRolesInContextqUoptionalq)Urequiredq(Uobjectq tUdocq UReturn the list of roles assigned to the user, including local roles assigned in context of an object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUhas_permissionqUoptionalq)Urequiredq(U permissionq Uobjectq tUdocq UVReturn true if the user has a permission on an object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetRolesqUoptionalq)Urequiredq)Udocq UBReturn a list of the user's roles. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUhas_roleqUoptionalq((UobjectqNttUrequiredq (Urolesq tUdocq UReturn true if the user has at least one role from a list of roles, optionally in the context of an object. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetIdqUoptionalq)Urequiredq)Udocq UGet the ID of the user. The ID can be used from Python to get the user from the user's UserDatabase. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU getUserNameqUoptionalq)Urequiredq)Udocq U9Return the name of a user Permission -- Always availableq u.G KgE((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUrandomqUidqU random.pyqUfuncsq ]q Udocq T random: Python 'random' module The 'random' module provides pseudo-random number functions. With it, you can generate random numbers and select random elements from sequences. This module is a standard Python module. Since Zope 2.4 requires Python 2.1, make sure to consult the Python 2.1 documentation. See Also "Python 'random' module":http://www.python.org/doc/current/lib/module-random.html documentation at Python.org q Uapisq ]qu.G Kg%((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZClass - PermissionsqUfileqUB/usr/lib/zope/lib/python/Products/OFSP/help/ZClass_Permissions.stxqUidq UZClass_Permissions.stxq Uobjq TYZClass - Permissions: Select ZClass permissions. Description This view allows you to select permissions to be used by a ZClass. When setting permissions for individual methods or property sheets of a ZClass, you will be able to select from inherited permissions and class permission which you set with this view. Controls 'Class permissions' -- The permissions available to your ZClass in addition to inherited permissions. 'Inherited permissions' -- Indicates the inherited permissions of your ZClass. 'Change' -- Change Class permissions. q u.G Kg S((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUsqlgroupqUfileqU=/usr/lib/zope/lib/python/Products/OFSP/help/dtml-sqlgroup.stxqUidq Udtml-sqlgroup.stxq Uobjq Tsqlgroup: Formats complex SQL expressions The 'sqlgroup' tag formats complex boolean SQL expressions. You can use it along with the 'sqltest' tag to build dynamic SQL queries that tailor themselves to the environment. This tag is used in SQL Methods. Syntax 'sqlgroup' tag syntax:: [] [] ... The 'sqlgroup' tag is a block tag. It is divided into blocks with one or more optional 'or' and 'and' tags. 'sqlgroup' tags can be nested to produce complex logic. Attributes required=boolean -- Indicates whether the group is required. If it is not required and contains nothing, it is excluded from the DTML output. where=boolean -- If true, includes the string "where". This is useful for the outermost 'sqlgroup' tag in a SQL 'select' query. Examples Sample usage:: select * from employees If 'first' is 'Bob' and 'last' is 'Smith, McDonald' it renders:: select * from employees where (first='Bob' and last in ('Smith', 'McDonald') ) If 'salary' is 50000 and 'last' is 'Smith' it renders:: select * from employees where (salary > 50000.0 and last='Smith' ) Nested 'sqlgroup' tags:: select * from employees Given sample arguments, this template renders to SQL like so:: select * form employees where ( ( name like 'A*' and last like 'Smith' ) or salary > 20000.0 ) See Also "sqltest tag":dtml-sqltest.stx q u.G Kg $((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUSecurity - Define PermissionsqUfileqUK/usr/lib/zope/lib/python/Products/OFSP/help/Security_Define-Permissions.stxqUidq USecurity_Define-Permissions.stxq Uobjq T= Security - Define Permissions: Map permissions. Description The "Define Permissions" view is used to define how the operations of this object (or objects that acquire permission settings from this object) correspond to the operations defined by your product or ZClass. Permissions Permissions are used to represent abstract operations or types of usage. A permission may correspond to many low-level object operations. Permissions provide a way to control access to operations without having to list each operation explicitly. When creating Products or ZClasses, we use high-level objects, like DTML Methods to define operations. These high-level objects have their own permissions, which represent abstract operations on the low-level operations of these high-level objects. When defining permissions for our products and ZClasses we need to define what low-level operations these new permissions correspond to. We could enumerate the low-level operations of the high-level objects used to implement the operations of our products or ZClasses, but this would be cumbersome, error prone, and likely to break as the interfaces of the high-level objects evolve. What we do instead is to treat the permissions of the high-level objects used to implement a Product or ZClass operations as the low-level operations that the product or ZClass operations abstract. Controls The view has a table with two columns. The first column lists the permissions for an object. The second column specifies the permissions that should have this permission in this product or ZClass. For ZClass methods only permissions that are defined for the ZClass are permitted. In general any permissions that include operations that change (mutate) an object should be disabled. Otherwise, a method could be modified when used on an instance, such as a ZClass instance. This interface is used to define how the operations of this object (or objects that acquire permission settings from this object) correspond to the operations defined by your product or ZClass. **Note: The 'View' permission should be always mapped to the 'View' permission, since every user, even 'Anonymous User' has this permission.** 'Permission for this object' -- The object permission to map. 'Permissions that correspond to (i.e. have) this permission' -- The Product or ZClass permission to map to. 'Change' -- Changes the permissions mapping. q u.G Kg;((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUwithqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/dtml-with.stxqUidq U dtml-with.stxq Uobjq Twith: Controls DTML variable look up The 'with' tag pushes an object onto the DTML namespace. Variables will be looked up in the pushed object first. Syntax 'with' tag syntax:: The 'with' tag is a block tag. It pushes the named variable or variable expression onto the DTML namespace for the duration of the 'with' block. Thus names are looked up in the pushed object first. Attributes only -- Limits the DTML namespace to only include the one defined in the 'with' tag. mapping -- Indicates that the variable or expression is a mapping object. This ensures that variables are looked up correctly in the mapping object. Examples Looking up a variable in the REQUEST:: 'id' was not in the request. Pushing the first child on the DTML namespace:: First child's id: See Also "let tag":dtml-let.stx q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUUser Folder - ContentsqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/User-Folder_Contents.stxqUidq UUser-Folder_Contents.stxq Uobjq TEUser Folder - Contents: Manage users. Description This view allows you to manage the users defined in a User Folder. Controls Users are listed one per line. Click on a user to edit the user. '[Checkbox]' -- Selects users. 'Add...' -- Adds a new user. 'Delete' -- Deletes the selected users. q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUVersion - PropertiesqUfileqUB/usr/lib/zope/lib/python/Products/OFSP/help/Version_Properties.stxqUidq UVersion_Properties.stxq Uobjq UVersion - Properties: Edit Version Properties. Description This view allows you to edit the title of a Version. Controls 'Title' -- The title of the Version. 'Edit' -- Changes the title of the Version. q u.G Kg!((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU"ZClass - Define new Zope objects. qUfileqU6/usr/lib/zope/lib/python/Products/OFSP/help/ZClass.stxqUidq U ZClass.stxq Uobjq UbZClass - Define new Zope objects. Description ZClasses define new types of Zope objects. q u.G Kg ((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUObjectManager - ContentsqUfileqUF/usr/lib/zope/lib/python/Products/OFSP/help/ObjectManager_Contents.stxqUidq UObjectManager_Contents.stxq Uobjq T ObjectManager - Contents: Edit contained objects. Description This view displays the contained objects and allows you to add, delete and change them. Each contained object is displayed on a line and is identified by an icon, an id and a title in parenthesis. Additionally, the size (if applicable) and the date during which the object was last modified are displayed. You can manage an object by clicking on its identifying link. Sorting You can sort contained objects by type, name (id), size, or modification date. To do so, click on the appropriate column heading. Clicking a second time on any column heading will reverse the sort on that field. Versions If you are currently working in a version there will be a notice at the top of the list of objects indicating this. If there is a red diamond following the name of an object this indicates that the object has been modified in the version you are currently working in. If there is a red diamond with a lock after an object, this indicates the the object has been modified in another version. Controls '[Checkbox]' -- Selects the object in order to perform operations on it. The operations you can perform are rename, cut, copy, delete, and export. Some operations may not be visible if they are not allowed. 'Rename' -- Changes the ids of the selected objects. 'Cut' -- Cuts selected objects and place them into the clipboard. This is similar to cut in most file managers. Cut objects can be pasted in a new location. When cut objects are pasted into another location the old objects are deleted. 'Copy' -- Copies selected objects and place them in the clipboard. This is similar to copy in most file managers. Copied objects can be pasted in a new location. 'Paste' -- Allows you to paste objects from the clipboard into this object. **Note: This option will only appear if objects have previously been copied or cut.** 'Delete' -- Deletes the selected objects. Deleted objects are *not* placed in the clipboard. 'Import/Export' -- Imports or exports a Zope object. 'Available Objects' -- Selects a type of object to add. 'Add' -- Adds an object specified in 'Available Objects'. 'Select All (Deselect All)' -- Toggles between selecting and deselecting each item currently displayed in the contents view. **Note: This control will only appear if your browser is javascript-enabled.** q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUUser Folder - Edit UserqUfileqUE/usr/lib/zope/lib/python/Products/OFSP/help/User-Folder_Edit-User.stxqUidq UUser-Folder_Edit-User.stxq Uobjq TUser Folder - Edit User: Edit a user Descriptions This view allows you to edit a user. Controls 'Name' -- The user's name. 'Password' -- The user's password. 'Confirm' -- Confirm the user's password. 'Domains' -- Optionally allows you to restrict the Internet domains from which the user can log in. Domains should be separated by spaces. For example, 'digicool.com zope.org' 'Roles' -- The user's roles 'Change' -- Change the user.q u.G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU$Common Instance Property Sheet - AddqUfileqUR/usr/lib/zope/lib/python/Products/OFSP/help/Common-Instance-Property-Sheet_Add.stxqUidq U&Common-Instance-Property-Sheet_Add.stxq Uobjq TCommon Instance Property Sheet - Add: Create a new Common Instance Property Sheet. Description This view allows you to add a 'container object' that will enclose all the properties for the ZClass. Controls 'Id' -- Specifies the id of the Common Instance Property Sheet. 'Title' -- Specifies an optional title of the Common Instance Property Sheet. 'Add' -- Creates the Common Instance Property Sheet. q u.G Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqU ObjectManagerqUidqUObjectManager.pyqUfuncsq ]q Udocq UUapisq ]q (Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqTAn ObjectManager contains other Zope objects. The contained objects are Object Manager Items. To create an object inside an object manager use 'manage_addProduct':: self.manage_addProduct['OFSP'].manage_addFolder(id, title) In DTML this would be:: These examples create a new Folder inside the current ObjectManager. 'manage_addProduct' is a mapping that provides access to product constructor methods. It is indexed by product id. Constructor methods are registered during product initialization and should be documented in the API docs for each addable object.qUnameqU ObjectManagerqU attributesq ]q Umethodsq ]q ((Uq (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(U q(hU MethodDocqttQ(U q(hU MethodDocqttQ(U q(hU MethodDocqttQeu. G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU superValuesqUoptionalq)Urequiredq(Utypeq tUdocq T*This method returns a list of objects of a given meta_type(es) contained in the Object Manager and all its parent Object Managers. The type argument specifies the meta_type(es). It can be a string specifying one meta_type, or it can be a list of strings to specify many. Permission -- Python onlyq u. G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU objectIdsqUoptionalq((UtypeqNttUrequiredq )Udocq TThis method returns a list of the ids of the contained objects. Optionally, you can pass an argument specifying what object meta_type(es) to restrict the results to. This argument can be a string specifying one meta_type, or it can be a list of strings to specify many. Example:: There are no sub-objects. This DTML code will display all the ids of the objects contained in the current Object Manager. Permission -- 'Access contents information'q u. G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU objectValuesqUoptionalq((UtypeqNttUrequiredq )Udocq TThis method returns a sequence of contained objects. Like objectItems and objectIds, it accepts one argument, either a string or a list to restrict the results to objects of a given meta_type or set of meta_types. Example:: This is the icon for the: Folder
. There are no Folders.
The results were restricted to Folders by passing a meta_type to 'objectValues' method. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_delObjectsqUoptionalq)Urequiredq(Uidsq tUdocq URemoves one or more children from the Object Manager. The 'ids' argument is either a list of child ids, or a single child id. Permission -- 'Delete objects'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU __getitem__qUoptionalq)Urequiredq(Uidq tUdocq T[Returns a child object given a child id. If there is no child with the given id, returns None. This method makes it easy to refer to children that have id with file extensions. For example:: page=folder['index.html'] Note: this function only finds children; it doesn't return properties or other non-child attributes. Note: this function doesn't use acquisition to find children. It only returns direct children of the Object Manager. By contrast, using dot notation or 'getattr' will locate children (and other attributes) via acquisition if necessary. Permission -- 'Access contents information'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU objectItemsqUoptionalq((UtypeqNttUrequiredq )Udocq T$This method returns a sequence of (id, object) tuples. Like objectValues and objectIds, it accepts one argument, either a string or a list to restrict the results to objects of a given meta_type or set of meta_types. Each tuple's first element is the id of an object contained in the Object Manager, and the second element is the object itself. Example:: id: , type: There are no sub-objects. Permission -- 'Access contents information'q u.G Kg ((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUtryqUfileqU8/usr/lib/zope/lib/python/Products/OFSP/help/dtml-try.stxqUidq U dtml-try.stxq Uobjq T try: Handles exceptions The 'try' tag allows exception handling in DTML, mirroring the Python 'try/except' and 'try/finally' constructs. Syntax The 'try' tag has two different syntaxes, 'try/except/else' and 'try/finally'. 'try/except/else' Syntax:: ... [] The 'try' tag encloses a block in which exceptions can be caught and handled. There can be one or more 'except' tags that handles zero or more exceptions. If an 'except' tag does not specify an exception, then it handles all exceptions. When an exception is raised, control jumps to the first 'except' tag that handles the exception. If there is no 'except' tag to handle the exception, then the exception is raised normally. If no exception is raised, and there is an 'else' tag, then the 'else' tag will be executed after the body of the 'try' tag. The 'except' and 'else' tags are optional. 'try/finally' Syntax:: The 'finally' tag cannot be used in the same 'try' block as the 'except' and 'else' tags. If there is a 'finally' tag, its block will be executed whether or not an exception is raised in the 'try' block. Attributes except -- Zero or more exception names. If no exceptions are listed then the except tag will handle all exceptions. Tag Variables Inside the 'except' block these variables are defined. error_type -- The exception type. error_value -- The exception value. error_tb -- The traceback. Examples Catching a math error:: You tried to divide by zero. Returning information about the handled exception:: An error occurred. Error type: Error value: Using finally to make sure to perform clean up regardless of whether an error is raised or not:: See Also "raise tag":dtml-raise.stx "Python Tutorial: Errors and Exceptions":http://www.python.org/doc/current/tut/node10.html "Python Built-in Exceptions":http://www.python.org/doc/current/lib/module-exceptions.html q u.G Kg 4((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU OwnershipqUfileqU9/usr/lib/zope/lib/python/Products/OFSP/help/Ownership.stxqUidq U Ownership.stxq Uobjq T Ownership: Manage ownership. Description This view allows you to set the ownership of an object. On the top of the page Zope will tell you whether the object has an owner and who it is. All Zope objects except objects within the Control Panel support ownership. When an object is created, copied or imported in Zope, the logged-in user performing the operation becomes the owner of the resulting object(s). Note that simply moving or renaming an object does not change its ownership. Ownership is most important for Zope objects that "execute" content supplied through the web, such as DTML Methods, DTML Documents and SQL Methods. The abilities of these executable objects are constrained by the abilities of the object's owner as well as the user causing the object to execute from a Zope security point of view. In other words, an executable cannot perform operations that its owner could not perform directly. While most Zope objects support ownership, objects may not always have an owner assigned. Objects that do not have an assigned owner are *unowned*. An unowned executable object executes with the permissions of the user running the object. It is possible to remove a user in your Zope installation while objects that were owned by that user remain (for instance, someone in your organization moves on, so you remove his account on your Zope server). When you remove a Zope user, objects that were owned by that user still have ownership information that refers to that user. This will not cause an error, but it is important to understand what happens to Zope objects whose owners no longer exist. This is most important for "executable" objects. Usually, the abilities of executable objects are constrained by the abilities of the object's owner as well as the user causing the object to execute. If Zope cannot find the user that the executable's ownership information refers to when it tries to execute the object, it will use the special 'nobody' or anonymous user instead. The 'nobody' user has very minimal privileges, so you should take this into account when deciding what to do about a user's owned objects when you delete the user. If the user had DTML documents or other executable objects that depended upon their owner to have a higher level of privilege than the 'nobody' user, they will not work correctly until their ownership has been reassigned to another user with sufficient privileges. Controls 'Take ownership' -- Gives you ownership of this object. **Note: For this operation you have the 'Take ownership' role.** 'Also take ownership of all sub-objects' -- Gives you ownership of all the current object's sub-objects when you take ownership of the current object. Normally you should leave this option checked. q u.G Kg\((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUVersion - Save/DiscardqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/Version_Save-Discard.stxqUidq UVersion_Save-Discard.stxq Uobjq TVersion - Save/Discard: Commit/abort Version changes. Description This view allows you to commit or discard changes made in a Version. Controls When committing or discarding a Version you can enter comments in the comments text area. 'Save' -- Commit the changes in the Version and make them public. 'Discard' -- Discard the changes made in the Version. q u.G Kg}((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Image - EditqUfileqU:/usr/lib/zope/lib/python/Products/OFSP/help/Image_Edit.stxqUidq UImage_Edit.stxq Uobjq TImage - Edit: Image Properties. Description This view allows you to edit Image properties. Form Elements 'Title' -- The optional title of the Image. 'Content type' -- The content type of the Image. Zope will try to guess an appropriate content type when you upload an Image. 'Preview' -- Displays a preview version of the actual image content. If an image is very large, the preview may be scaled to a smaller size. 'Last Modified' -- The time that the object was last changed. 'File Size' -- The size (in bytes) of the image data. 'File Data' -- The file to upload. Use the 'Browse...' button to select a local file. 'Upload' -- Uploads the file. q u.~G Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZope Permission - EditqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/Zope-Permission_Edit.stxqUidq UZope-Permission_Edit.stxq Uobjq TEZope Permission - Edit: Edit Permission. Description This view allows you to edit Zope Permission settings. Controls 'Title' -- The optional title of the Zope Permission. 'Name' -- The name of the permission. **Note: A permission's name must be unique.** 'Change' -- Change the Permission. q u.}G Kg ((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZClass - BasicqUfileqUThe Response object represents the response to a Zope request.qUnameqUResponseqU attributesq ]q Umethodsq ]q ((U q (hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocq ttQeu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUredirectqUoptionalq((UlockqKttUrequiredq (Ulocationq tUdocq TCause a redirection without raising an error. If the "lock" keyword argument is passed with a true value, then the HTTP redirect response code will not be changed even if an error occurs later in request processing (after redirect() has been called). Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU appendCookieqUoptionalq)Urequiredq(hUvalueq tUdocq TReturns an HTTP header that sets a cookie on cookie-enabled browsers with a key "name" and value "value". If a value for the cookie has previously been set in the response object, the new value is appended to the old one separated by a colon. Permission -- Always availableq u.G Kgb((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqU expireCookieqUoptionalq )Urequiredq (htUdocq TCause an HTTP cookie to be removed from the browser The response will include an HTTP header that will remove the cookie corresponding to "name" on the client, if one exists. This is accomplished by sending a new cookie with an expiration date that has already passed. Note that some clients require a path to be specified - this path must exactly match the path given when creating the cookie. The path can be specified as a keyword argument. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUsetBaseqUoptionalq)Urequiredq(Ubaseq tUdocq UKSet the base URL for the returned document. Permission -- Always availableq u.G KgM((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU setStatusqUoptionalq((UreasonqNttUrequiredq (Ustatusq tUdocq TSets the HTTP status code of the response; the argument may either be an integer or one of the following strings: OK, Created, Accepted, NoContent, MovedPermanently, MovedTemporarily, NotModified, BadRequest, Unauthorized, Forbidden, NotFound, InternalError, NotImplemented, BadGateway, ServiceUnavailable that will be converted to the correct integer value. Permission -- Always availableq u.G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUwriteqUoptionalq)Urequiredq(Udataq tUdocq TReturn data as a stream HTML data may be returned using a stream-oriented interface. This allows the browser to display partial results while computation of a response to proceed. The published object should first set any output headers or cookies on the response object. Note that published objects must not generate any errors after beginning stream-oriented output. Permission -- Always availableq u.G KgQ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU appendHeaderqUoptionalq((U delimiterqU,ttUrequiredq (hUvalueq tUdocq UAppend a value to a cookie Sets an HTTP return header "name" with value "value", appending it following a comma if there was a previous value set for the header. Permission -- Always availableq u.G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU addHeaderqUoptionalq)Urequiredq(hUvalueq tUdocq USet a new HTTP return header with the given value, while retaining any previously set headers with the same name. Permission -- Always availableq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqU setCookieqUoptionalq )Urequiredq (hUvalueq tUdocq TSet an HTTP cookie on the browser The response will include an HTTP header that sets a cookie on cookie-enabled browsers with a key "name" and value "value". This overwrites any previously set value for the cookie in the Response object. Permission -- Always availableq u. G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU setHeaderqUoptionalq)Urequiredq(hUvalueq tUdocq T)Sets an HTTP return header "name" with value "value", clearing the previous value set for the header, if one exists. If the literal flag is true, the case of the header name is preserved, otherwise word-capitalization will be performed on the header name on output. Permission -- Always availableq u.xG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUImage - Image object. qUfileqU5/usr/lib/zope/lib/python/Products/OFSP/help/Image.stxqUidq U Image.stxq Uobjq TImage - Image object. Description The Image object allows you to store image files in Zope. Images can be displayed in DTML by calling them. For example, <dtml-var myImageId>' The Image will generate an HTML 'IMG' tag with all the correct attributes. q u.wG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUsendmailqUfileqU=/usr/lib/zope/lib/python/Products/OFSP/help/dtml-sendmail.stxqUidq Udtml-sendmail.stxq Uobjq Tsendmail: Sends email with SMTP The 'sendmail' tag sends an email message using SMTP. Syntax 'sendmail' tag syntax:: The 'sendmail' tag is a block tag. It either requires a 'mailhost' or a 'smtphost' argument, but not both. The tag block is sent as an email message. The beginning of the block describes the email headers. The headers are separated from the body by a blank line. Alternately the 'To', 'From' and 'Subject' headers can be set with tag arguments. Attributes mailhost -- The name of a Zope MailHost object to use to send email. You cannot specify both a mailhost and a smtphost. smtphost -- The name of a SMTP server used to send email. You cannot specify both a mailhost and a smtphost. port -- If the smtphost attribute is used, then the port attribute is used to specify a port number to connect to. If not specified, then port 25 will be used. mailto -- The recipient address or a list of recipient addresses separated by commas. This can also be specified with the 'To' header. mailfrom -- The sender address. This can also be specified with the 'From' header. subject -- The email subject. This can also be specified with the 'Subject' header. Examples Sending an email message using a Mail Host:: To: From: Subject: Dear , You order number is ready. Please pick it up at your soonest convenience. See Also "RFC 821 (SMTP Protocol)":http://www.ietf.org/rfc/rfc0821.txt "mime tag":dtml-mime.stx q u.vG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUDTML Document/Method - EditqUfileqUJ/usr/lib/zope/lib/python/Products/OFSP/help/DTML-DocumentOrMethod_Edit.stxqUidq UDTML-DocumentOrMethod_Edit.stxq Uobjq TDTML Document/Method - Edit: Edit contents. Description This view allows you to edit the contents of a DTML Document or Method. Information 'Id' -- The id of the DTML Document or Method. 'Size' -- The size of the contents. 'Last modified' -- The time the object was last changed. Controls 'Title' -- The optional title. '[Text area]' -- The contents of the DTML Document or Method. 'Taller' and 'Shorter' -- Allows to adjust the height of the contents text area. 'Wider' and 'Narrower' -- Allows to adjust the width of the contents text area. 'Save Changes' -- Changes the contents. **Note: When you change the contents it is parsed for correct DTML syntax. If there is a syntax error, the contents will not be changed.** 'File' -- Indicates a file to be uploaded to replace the contents of the current object. Use the 'Browse ...' button to select a local file. 'Upload File' -- Upload the file and change the contents. q u.uG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU Folder - ViewqUfileqU;/usr/lib/zope/lib/python/Products/OFSP/help/Folder_View.stxqUidq UFolder_View.stxq Uobjq UFolder - View: Folder Preview. Description This view allows you to preview the public appearance of a Folder. This view will only be available if the Folder contains (or acquires) an 'index_html' object.q u.tG Kgx((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU ZClass - AddqUfileqU:/usr/lib/zope/lib/python/Products/OFSP/help/ZClass_Add.stxqUidq UZClass_Add.stxq Uobjq TZClass - Add: Add a new ZClass Description This view allows you to create a new ZClass. Controls 'Id' -- The id of the ZClass. 'Title' -- The optional title of the ZClass. 'Meta type' -- The name of the ZClass as it will appear in the product add list. 'Create constructor objects' -- Create the necessary objects to construct new ZClass instances. The created constructor objects are a Zope Permission, a Zope Factory, an add method and an add form. **Note: You must specify a 'Meta type' to create constructor objects** 'Base classes' -- Base classes of the ZClass. To add a base class select it from the 'Unselected' list and click the right arrow button. To remove a base class select it from the 'Selected' list and click the left arrow button. The names of base classes are divided into two parts separated by a colon indicating the product name and the class name of the base class. The order of Base classes is important. 'Include standard Zope persistent object base classes' -- Subclass Zope persistence classes and thereby act as a normal persistent object. 'Add' -- Creates the ZClass. q u.sG Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUFolderqUidqU Folder.pyqUfuncsq ]q (Uq (hU MethodDocq ttQaUdocq UUapisq]q(Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(U attributesq]qU constructorq(Uq(hU MethodDocq ttQUnameq UFolderq Uextendsq ]q ((UObjectManagerItemqU0OFSP/Help/ObjectManagerItem.py#ObjectManagerItemqt(U ObjectManagerqU(OFSP/Help/ObjectManager.py#ObjectManagerqt(UPropertyManagerqU,OFSP/Help/PropertyManager.py#PropertyManagerqteUdocqUlA Folder is a generic container object in Zope. Folders are the most common ObjectManager subclass in Zope.qUmethodsq]qu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addFolderqUoptionalq)Urequiredq(Uidq Utitleq tq Udocq UFAdd a Folder to the current ObjectManager Permission -- 'Add Folders'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addFolderqUoptionalq)Urequiredq(Uidq Utitleq tq Udocq UFAdd a Folder to the current ObjectManager Permission -- 'Add Folders'q u.rG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUCache ManagementqUfileqU7/usr/lib/zope/lib/python/Products/OFSP/help/Caching.stxqUidq U Caching.stxq Uobjq TCache Management: Configurable Caching Performing some computations in Zope can take a long time or use a lot of resources. One way to deal with expensive tasks is to cache them. The first time the computation is requested, the results are stored in a table or *cache*. Subsequent requests get the results from the cache. This can result in a dramatic speed increase. There are so many possible strategies for caching that no one could possibly come up with them all. Caches can be stored in memory, on disk, on other computers, or by other means. Caches can be limited in size or unconstrained. They can be made to work with only specific types of objects. They can be tuned in different ways. So instead of trying to provide for every possible caching strategy, Zope defines an API called *cache management* that lets developers write their own caching strategies, or *cache managers*, and lets site administrators easily connect cacheable objects to those cache managers. You can use caching to speed up access to often-requested pages, reduce disk access and network traffic, and deal with heavy loads. All these benefits come with risks of excessive caching, however, so it's important to fine-tune the cache settings. More on this later. How to set up caching The first thing you need to do is create a cache manager instance. In the Zope management interface, go to a folder containing objects that would benefit from caching. From the add list, select a cache manager type such as 'RAM Cache Manager'. Use an ID that describes the purpose of the cache manager. Next, visit one of the objects that you want to cache. A new tab labeled 'Cache' should be visible. Select it. From the drop-down box, select the cache manager you just created and press the 'Change' button. The object is now ready to be cached. Visit the 'View' tab. If the object is a script that takes a long time to render, the first view will still take just as long as before. But if you're using a RAM cache manager or similar, the second view should be much faster. Press the *reload* button in your browser to try it out. You can associate many objects to a cache manager at once using the 'Associate' tab of all cache managers. Visit the cache manager object you created and select the 'Associate' tab. Press the 'Locate' button. Zope will locate all cacheable objects in the folder. Select the checkboxes next to the objects you want to cache and press the 'Save changes' button. Inherent risks Cache managers generally don't know the nature of what is being cached, so here are some issues that can surface: - Data that is intended for authorized viewers only can be inadvertently cached in public caches. - Data is cached for too long a time. - If more than one cache is involved, data is purged from one cache but not the other. - A method that makes up part of the page sets the caching headers for the entire response, fooling downstream caches into thinking the whole response should be cached. - Result data can depend on any number of objects. Early on it was decided that the standard cache managers will not try to deduce dependencies, but instead rely on the user for configuration of simple dependencies. Because of these risks, you should be careful when setting up caching. You'll need to fine-tune the cache settings. Sometimes you'll find that you can't cache one of your major pages, but that you can cache pieces of it. Also remember that caching can actually slow down Zope if it is applied unscrupulously. You should perform speed tests to verify that caching really does speed up your site. q u.qG Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUmathqUidqUmath.pyqUfuncsq ]q Udocq Tc math: Python 'math' module The 'math' module provides trigonometric and other math functions. It is a standard Python module. Since Zope 2.4 requires Python 2.1, make sure to consult the Python 2.1 documentation. See Also "Python 'math' module":http://www.python.org/doc/current/lib/module-math.html documentation at Python.org q Uapisq ]qu.pG Kg[((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU"Security - Permissions AcquisitionqUfileqUK/usr/lib/zope/lib/python/Products/OFSP/help/Security_Manage-Acquisition.stxqUidq USecurity_Manage-Acquisition.stxq Uobjq ToSecurity - Permissions Acquisition: Security acquisition settings. Description This view allows you to manage security acquisition settings. You can control which permissions acquire security settings. Controls '[Permissions List]' -- The permissions which should acquire security settings. 'Change' -- Sets the acquisition settings. q u.oG KgQ((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUDatabase Management - DatabaseqUfileqUL/usr/lib/zope/lib/python/Products/OFSP/help/Database-Management_Database.stxqUidq U Database-Management_Database.stxq Uobjq TgDatabase Management - Database: Zope database information and pack. Description This view gives you information about the size and location of the Zope database. The Zope database stores all Zope objects. You can reduce the size of your Zope database by packing it. Packing removes old revisions of objects, thus freeing up space but also limiting your ability to undo object changes. Controls 'Pack' -- Pack will remove all versions of objects from the Zope database. This will reduce the size of your database. **Note Pack will prevent you from undoing some or all old transactions.** You can control which old revisions of objects are removed from the database by specifying how many days old the revisions must be to be removed. If you specify 0 days old, then all old object revisions will be removed. q u.nG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUletqUfileqU8/usr/lib/zope/lib/python/Products/OFSP/help/dtml-let.stxqUidq U dtml-let.stxq Uobjq Tlet: Defines DTML variables The 'let' tag defines variables in the DTML namespace. Syntax 'let' tag syntax:: The 'let' tag is a block tag. Variables are defined by tag arguments. Defined variables are pushed onto the DTML namespace while the 'let' block is executed. Variables are defined by attributes. The 'let' tag can have one or more attributes with arbitrary names. If the attributes are defined with double quotes they are considered expressions, otherwise they are looked up by name. Attributes are processed in order, so later attributes can reference, and/or overwrite earlier ones. Examples Basic usage:: name: ids: Using the 'let' tag with the 'in' tag:: * = This yields:: 1 * 0 = 0 2 * 1 = 2 3 * 2 = 6 4 * 3 = 12 See Also "with tag":dtml-with.stx q u.mG Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqU DTMLMethodqUidqU DTMLMethod.pyqUfuncsq ]q (Uq (hU MethodDocq ttQaUdocq UUapisq]q(Uq(hUAPIDocqttQau.G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(U attributesq]qU constructorq(Uq(hU MethodDocq ttQUnameq U DTMLMethodq Uextendsq ]q (UObjectManagerItemqU0OFSP/Help/ObjectManagerItem.py#ObjectManagerItemqtaUdocqT^A DTML Method is a Zope object that contains and executes DTML code. It can act as a template to display other objects. It can also hold small pieces of content which are inserted into other DTML Documents or DTML Methods. The DTML Method's id is available via the 'document_id' variable and the title is available via the 'document_title' variable.qUmethodsq]q((Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(Uq(hU MethodDocqttQ(U q(hU MethodDocqttQeu. G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUget_sizeqUoptionalq)Urequiredq)Udocq UaReturns the size of the unrendered source text of the DTML Method in bytes. Permission -- 'View'q u.G Kg -((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUkwqUnameqU__call__qUoptionalq ((Uclientq Nt(UREQUESTq }q ttUrequiredq )UdocqT Calling a DTMLMethod causes the Method to interpret the DTML code that it contains. The method returns the result of the interpretation, which can be any kind of object. To accomplish its task, DTML Method often needs to resolve various names into objects. For example, when the code '<dtml-var spam>' is executed, the DTML engine tries to resolve the name 'spam'. In order to resolve names, the Method must be passed a namespace to look them up in. This can be done several ways: * By passing a 'client' object -- If the argument 'client' is passed, then names are looked up as attributes on the argument. * By passing a 'REQUEST' mapping -- If the argument 'REQUEST' is passed, then names are looked up as items on the argument. If the object is not a mapping, an TypeError will be raised when a name lookup is attempted. * By passing keyword arguments -- names and their values can be passed as keyword arguments to the Method. The namespace given to a DTML Method is the composite of these three methods. You can pass any number of them or none at all. Names will be looked up first in the keyword argument, next in the client and finally in the mapping. Unlike DTMLDocuments, DTMLMethods do not look up names in their own instance dictionary. Passing in a namespace to a DTML Method is often referred to as providing the Method with a *context*. DTML Methods can be called three ways: From DTML A DTML Method can be called from another DTML Method or Document:: In this example, the Method 'aDTMLMethod' is being called from another DTML object by name. The calling method passes the value 'this' as the client argument and the current DTML namespace as the REQUEST argument. The above is identical to this following usage in a DTML Python expression:: From Python Products, External Methods, and Scripts can call a DTML Method in the same way as calling a DTML Method from a Python expression in DTML; as shown in the previous example. By the Publisher When the URL of a DTML Method is fetched from Zope, the DTML Method is called by the publisher. The REQUEST object is passed as the second argument to the Method. Permission -- 'View'qu.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU document_srcqUoptionalq)Urequiredq)Udocq U_Returns the unrendered source text of the DTML Method. Permission -- 'View management screens'q u.G Kg-((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU manage_editqUoptionalq)Urequiredq(Udataq Utitleq tUdocq UChange the DTML Method, replacing its contents with 'data' and changing its title. The data argument may be a file object or a string. Permission -- 'Change DTML Methods'q u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addDTMLMethodqUoptionalq)Urequiredq(Uidq Utitleq tq Udocq U.Add a DTML Method to the current ObjectManagerq u.G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addDTMLMethodqUoptionalq)Urequiredq(Uidq Utitleq tq Udocq U.Add a DTML Method to the current ObjectManagerq u.lG Kg((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqUImageqUidqUImage.pyqUfuncsq ]q (U!q (hU MethodDocq ttQaUdocq UUapisq]q(U"q(hUAPIDocqttQau."G Kg((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(U attributesq]qU constructorq(U#q(hU MethodDocq ttQUnameq UImageq Uextendsq ]q (UFileqUOFSP/Help/File.py#FileqtaUdocqTAn Image is a Zope object that contains image content. An Image object can be used to upload or download image information with Zope. Image objects have two properties the define their dimension, 'height' and 'width'. These are calculated when the image is uploaded. For image types that Zope does not understand, these properties may be undefined. Using a Image object in Zope is easy. The most common usage is to display the contents of an image object in a web page. This is done by simply referencing the object from DTML:: This will generate an HTML IMG tag referencing the URL to the Image. This is equivalent to:: You can control the image display more precisely with the 'tag' method. For example:: qUmethodsq]q(U$q(hU MethodDocqttQau.$G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UkwargsqUargsqUnameqUtagqUoptionalq ((Uheightq Nt(Uwidthq Nt(Ualtq Nt(Uscaleq Kt(UxscaleqKt(UyscaleqKttUrequiredq)UdocqTThis method returns a string which contains an HTML IMG tag reference to the image. Optionally, the 'height', 'width', 'alt', 'scale', 'xscale' and 'yscale' arguments can be provided which are turned into HTML IMG tag attributes. Note, 'height' and 'width' are provided by default, and 'alt' comes from the 'title_or_id' method. Keyword arguments may be provided to support other or future IMG tag attributes. The one exception to this is the HTML Cascading Style Sheet tag 'class'. Because the word 'class' is a reserved keyword in Python, you must instead use the keyword argument 'css_class'. This will be turned into a 'class' HTML tag attribute on the rendered 'img' tag. Permission -- 'View'qu.#G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addImageqUoptionalq((UtitleqUt(U preconditionq Ut(U content_typeq UttUrequiredq (Uidq Ufileq tUdocqUUAdd a new Image object. Creates a new Image object 'id' with the contents of 'file'.qu.!G Kg ((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUmanage_addImageqUoptionalq((UtitleqUt(U preconditionq Ut(U content_typeq UttUrequiredq (Uidq Ufileq tUdocqUUAdd a new Image object. Creates a new Image object 'id' with the contents of 'file'.qu.kG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUDTML Document/Method - AddqUfileqUI/usr/lib/zope/lib/python/Products/OFSP/help/DTML-DocumentOrMethod_Add.stxqUidq UDTML-DocumentOrMethod_Add.stxq Uobjq T<DTML Document/Method - Add: Create a DTML Document/Method Description Creates a new DTML Document or Method. Controls 'Id' -- The id of the DTML Document or Method. 'Title' -- The optional title of the DTML Document or Method. 'File' -- Allows you to upload a file to provide the contents for the DTML Document or Method. Use the 'Browse...' button to select a local file. 'Add' -- Create the DTML Document or Method. 'Add and Edit' -- Create the DTML Document or Method, and return the 'Edit' view of the created object. q u.jG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUCache manager associations qUfileqUF/usr/lib/zope/lib/python/Products/OFSP/help/CacheManager-associate.stxqUidq UCacheManager-associate.stxq Uobjq TCache manager associations For background information, see the description of cache management. The 'Associate' form lets you search for cacheable objects and make or break multiple cache management associations at once. Simply select the search criteria then click the 'Locate' button. Zope will return a list of cacheable objects with a checkbox for each one. Select or unselect objects and click the 'Save changes' button when you're done. q u.iG KgK((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqU DTML DocumentqUfileqU=/usr/lib/zope/lib/python/Products/OFSP/help/DTML-Document.stxqUidq UDTML-Document.stxq Uobjq TDTML Document: Content object. Description A DTML Document contains web-editable content. A DTML Document roughly corresponds to a web page. DTML Documents can contain scripting commands in Document Template Markup Language (DTML), which allows for dynamic behavior. Unlike DTML Methods, DTML Documents have properties and lookup variables in their own namespace.q u.hG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUUser Folder - Add UserqUfileqUD/usr/lib/zope/lib/python/Products/OFSP/help/User-Folder_Add-User.stxqUidq UUser-Folder_Add-User.stxq Uobjq TUser Folder - Add User: Define a new user. Description This view allows you to define a new user. Controls 'Name' -- The user's name. 'Password' -- The user's password. 'Confirm' -- Confirm the user's password. 'Domains' -- Optionally allows you to restrict the Internet domains from which the user can log in. Domains should be separated by spaces. For example, 'digicool.com zope.org' 'Roles' -- The user's roles 'Add' -- Create a new user. q u.gG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUSecurity - User local rolesqUfileqUI/usr/lib/zope/lib/python/Products/OFSP/help/Security_User-Local-Roles.stxqUidq USecurity_User-Local-Roles.stxq Uobjq TSecurity - User local roles: Manage local roles. Description This view allows you to manage a user's local roles. Controls 'User' -- The user whose local roles you going to change. 'Roles' -- The user's local roles. 'Change' -- Change the local roles. q u.fG Kg((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUZClass - SubobjectsqUfileqUA/usr/lib/zope/lib/python/Products/OFSP/help/ZClass_Subobjects.stxqUidq UZClass_Subobjects.stxq Uobjq TZClass - Subobjects: Define suboject types. Description This view allows you to control what types of objects are addable within instances of your ZClass. Controls Select one or more of the listed meta-types to indicate that objects of these types can be added to instances of your ZClass. 'Objects should appear in folder lists' -- Controls whether or not instances of your ZClass appear as folders in the left Zope management frame. 'Change' -- Change subobject settings. q u.eG Kgc((UHelpSys.APIHelpTopicqU APIHelpTopicqtqNt.}q(UtitleqU AccessControlqUidqUAccessControl.pyqUfuncsq ]q (U%q (hU MethodDocq ttQaUdocq U AccessControl: Security functions and classes The functions and classes in this module are available to Python-based Scripts and Page Templates. qUapisq]q(U&q(hUAPIDocqttQau.&G Kg{((UHelpSys.APIHelpTopicqUAPIDocqtqNt.}q(UdocqUdA security manager provides methods for checking access and managing executable context and policiesqUnameqUSecurityManagerqU attributesq ]q Umethodsq ]q ((U'q (hU MethodDocqttQ(U(q(hU MethodDocqttQ(U)q(hU MethodDocqttQ(U*q(hU MethodDocqttQ(U+q(hU MethodDocqttQeu.+G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqU validateValueqUoptionalq((UrolesqNttUrequiredq (Uselfq Uvalueq tUdocq UWConvenience for common case of simple value validation. permission -- Always availableq u.*G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetUserqUoptionalq)Urequiredq(Uselfq tUdocq UfGet the current authenticated user. See the 'AuthenticatedUser' class. permission -- Always availableq u.)G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUcheckPermissionqUoptionalq)Urequiredq(Uselfq U permissionq Uobjectq tUdocq UsCheck whether the security context allows the given permission on the given object. permission -- Always availableq u.(G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUvalidateqUoptionalq((UaccessedqNt(U containerq Nt(hNt(Uvalueq Nt(Urolesq NttUrequiredq )Udocq T Validate access. Arguments: accessed -- the object that was being accessed container -- the object the value was found in name -- The name used to access the value value -- The value retrieved though the access. roles -- The roles of the object if already known. The arguments may be provided as keyword arguments. Some of these arguments may be omitted, however, the policy may reject access in some cases when arguments are omitted. It is best to provide all the values possible. permission -- Always availablequ.'G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUcalledByExecutableqUoptionalq)Urequiredq(Uselfq tUdocq UnReturn a boolean value indicating if this context was called by an executable. permission -- Always availableq u.%G Kg((UHelpSys.APIHelpTopicqU MethodDocqtqNt.}q(UnameqUgetSecurityManagerqUoptionalq)Urequiredq)Udocq U>Returns the security manager. See the 'SecurityManager' class.q u.dG KgI((UHelpSys.HelpTopicqUSTXTopicqtqNt.}q(UtitleqUvarqUfileqU8/usr/lib/zope/lib/python/Products/OFSP/help/dtml-var.stxqUidq U dtml-var.stxq Uobjq Tvar: Inserts a variable The 'var' tags allows you insert variables into DTML output. Syntax 'var' tag syntax:: The 'var' tag is a singleton tag. The 'var' tag finds a variable by searching the DTML namespace which usually consists of current object, the current object's containers, and finally the web request. If the variable is found, it is inserted into the DTML output. If not found, Zope raises an error. 'var' tag entity syntax:: &dtml-variableName; Entity syntax is a short cut which inserts and HTML quotes the variable. It is useful when inserting variables into HTML tags. 'var' tag entity syntax with attributes:: &dtml.attribute1[.attribute2]...-variableName; To a limited degree you may specify attributes with the entity syntax. You may include zero or more attributes delimited by periods. You cannot provide arguments for attributes using the entity syntax. If you provide zero or more attributes, then the variable is not automatically HTML quoted. Thus you can avoid HTML quoting with this syntax, '&dtml.-variableName;'. Attributes html_quote -- Convert characters that have special meaning in HTML to HTML character entities. missing=string -- Specify a default value in case Zope cannot find the variable. fmt=string -- Format a variable. Zope provides a few built-in formats including C-style format strings. For more information on C-style format strings see the "Python Library Reference":http://www.python.org/doc/current/lib/typesseq-strings.html If the format string is not a built-in format, then it is assumed to be a method of the object, and it called. whole-dollars -- Formats the variable as dollars. dollars-and-cents -- Formats the variable as dollars and cents. collection-length -- The length of the variable, assuming it is a sequence. structured-text -- Formats the variable as Structured Text. For more information on Structured Text see "Structured Text How-To":http://www.zope.org/Members/millejoh/structuredText on the Zope.org web site. null=string -- A default value to use if the variable is None. lower -- Converts upper-case letters to lower case. upper -- Converts lower-case letters to upper case. capitalize -- Capitalizes the first character of the inserted word. spacify -- Changes underscores in the inserted value to spaces. thousands_commas -- Inserts commas every three digits to the left of a decimal point in values containing numbers for example '12000' becomes '12,000'. url -- Inserts the URL of the object, by calling its 'absolute_url' method. url_quote -- Converts characters that have special meaning in URLs to HTML character entities. url_quote_plus -- URL quotes character, like 'url_quote' but also converts spaces to plus signs. sql_quote -- Converts single quotes to pairs of single quotes. This is needed to safely include values in SQL strings. newline_to_br -- Convert newlines (including carriage returns) to HTML break tags. size=arg -- Truncates the variable at the given length (Note: if a space occurs in the second half of the truncated string, then the string is further truncated to the right-most space). etc=arg -- Specifies a string to add to the end of a string which has been truncated (by setting the 'size' attribute listed above). By default, this is '...' Examples Inserting a simple variable into a document:: Truncation:: will produce the following output if *colors* is the string 'red yellow green':: red yellow, etc. C-style string formatting:: renders to:: 23432.23 Inserting a variable, *link*, inside an HTML 'A' tag with the entity syntax:: Link Inserting a link to a document 'doc', using entity syntax with attributes:: This creates an HTML link to an object using its URL and title. This example calls the object's 'absolute_url' method for the URL (using the 'url' attribute) and its 'title_or_id' method for the title. q u.cG Kg`((UProducts.ZCatalog.ZCatalogqUZCatalogqtqNt.}q(UidqUcatalogqU_objectsq(}q(U meta_typeq U Vocabularyq hh utq U thresholdq M'Uvocab_idq h U vocabularyq(U,q(U+Products.PluginIndexes.TextIndex.VocabularyqU VocabularyqttQU_catalogq(U-q(UProducts.ZCatalog.CatalogqUCatalogqttQUtitleqUh (h(hU VocabularyqttQu.-G Kgl((UProducts.ZCatalog.CatalogqUCatalogqtqNt.}q(Uschemaq}q(U permissionsqKU categoriesqKU title_or_idq KUidq KUurlq KuU__len__q (U.q (U BTrees.LengthqULengthqttQUdataq(U/q(UBTrees.IOBTreeqUIOBTreeqttQUindexesq}q(USearchableTextq(U0q(U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqttQh(U1q(U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqttQh(U2q(hU KeywordIndexqttQuUnamesq(hhh h h tq Uuidsq!(U3q"(UBTrees.OIBTreeq#UOIBTreeq$ttQUlexiconq%U Vocabularyq&Upathsq'(U4q((hUIOBTreeq)ttQu.4G Kg((UBTrees.IOBTreeqUIOBTreeqtqNt.(((U5q(hUIOBucketqttQJDA(U6q(hUIOBucketqttQJbA(U7q(hUIOBucketq ttQt(h(hUIOBucketq ttQtq .7G Kg%((UBTrees.IOBTreeqUIOBucketqtqNt.((JbAU-/Control_Panel/Products/OFSP/Help/Response.pyqJcAU./Control_Panel/Products/OFSP/Help/Security.stxqJdAUA/Control_Panel/Products/OFSP/Help/Security_Manage-Acquisition.stxqJeAU:/Control_Panel/Products/OFSP/Help/Security_Local-Roles.stxqJfAU1/Control_Panel/Products/OFSP/Help/User-Folder.stxqJgAU*/Control_Panel/Products/OFSP/Help/Undo.stxq JhAU@/Control_Panel/Products/OFSP/Help/Security_Manage-Permission.stxq JiAU:/Control_Panel/Products/OFSP/Help/Security_Manage-Role.stxq JjAU?/Control_Panel/Products/OFSP/Help/Security_User-Local-Roles.stxq JkAU@/Control_Panel/Products/OFSP/Help/Version-Management_Version.stxq JlAU:/Control_Panel/Products/OFSP/Help/User-Folder_Add-User.stxqJmAU:/Control_Panel/Products/OFSP/Help/User-Folder_Contents.stxqJnAU;/Control_Panel/Products/OFSP/Help/User-Folder_Edit-User.stxqJoAUttq?.6G Kg6((UBTrees.IOBTreeqUIOBucketqtqNt.((JDAU//Control_Panel/Products/OFSP/Help/File_Edit.stxqJEAU1/Control_Panel/Products/OFSP/Help/File_Upload.stxqJFAU//Control_Panel/Products/OFSP/Help/File_View.stxqJGAU*/Control_Panel/Products/OFSP/Help/Find.stxqJHAU0/Control_Panel/Products/OFSP/Help/Folder_Add.stxqJIAU+/Control_Panel/Products/OFSP/Help/Folder.pyq JJAU,/Control_Panel/Products/OFSP/Help/Folder.stxq JKAU2/Control_Panel/Products/OFSP/Help/ObjectManager.pyq JLAU1/Control_Panel/Products/OFSP/Help/Folder_View.stxq JMAU-/Control_Panel/Products/OFSP/Help/History.stxq JNAU*/Control_Panel/Products/OFSP/Help/Image.pyqJOAU+/Control_Panel/Products/OFSP/Help/Image.stxqJPAU0/Control_Panel/Products/OFSP/Help/Image_Edit.stxqJQAU0/Control_Panel/Products/OFSP/Help/Image_View.stxqJRAU6/Control_Panel/Products/OFSP/Help/ObjectManagerItem.pyqJSAUAU?/Control_Panel/Products/OFSP/Help/Debug-Information_Profile.stxqJ?AU=/Control_Panel/Products/OFSP/Help/Debug-Information_Debug.stxqJ@AU)/Control_Panel/Products/OFSP/Help/File.pyqJAAU./Control_Panel/Products/OFSP/Help/File_Add.stxqJBAU*/Control_Panel/Products/OFSP/Help/File.stxq JCAU3/Control_Panel/Products/OFSP/Help/Find_Advanced.stxq!t(U6q"(hUIOBucketq#ttQtq$.3G Kg((UBTrees.OIBTreeqUOIBTreeqtqNt.(((U8q(hUOIBucketqttQU1/Control_Panel/Products/OFSP/Help/File_Upload.stxq(U9q(hUOIBucketqttQU./Control_Panel/Products/OFSP/Help/Security.stxq (U:q (hUOIBucketq ttQt(h(hUOIBucketq ttQtq .:G Kg9((UBTrees.OIBTreeqUOIBucketqtqNt.((U./Control_Panel/Products/OFSP/Help/Security.stxqJcAUA/Control_Panel/Products/OFSP/Help/Security_Define-Permissions.stxqJZAU:/Control_Panel/Products/OFSP/Help/Security_Local-Roles.stxqJeAUA/Control_Panel/Products/OFSP/Help/Security_Manage-Acquisition.stxqJdAU@/Control_Panel/Products/OFSP/Help/Security_Manage-Permission.stxqJhAU:/Control_Panel/Products/OFSP/Help/Security_Manage-Role.stxq JiAU?/Control_Panel/Products/OFSP/Help/Security_User-Local-Roles.stxq JjAU*/Control_Panel/Products/OFSP/Help/Undo.stxq JgAU1/Control_Panel/Products/OFSP/Help/User-Folder.stxq JfAU:/Control_Panel/Products/OFSP/Help/User-Folder_Add-User.stxq JlAU:/Control_Panel/Products/OFSP/Help/User-Folder_Contents.stxqJmAU;/Control_Panel/Products/OFSP/Help/User-Folder_Edit-User.stxqJnAUJAttq?.9G Kg&((UBTrees.OIBTreeqUOIBucketqtqNt.((U1/Control_Panel/Products/OFSP/Help/File_Upload.stxqJEAU//Control_Panel/Products/OFSP/Help/File_View.stxqJFAU*/Control_Panel/Products/OFSP/Help/Find.stxqJGAU3/Control_Panel/Products/OFSP/Help/Find_Advanced.stxqJCAU+/Control_Panel/Products/OFSP/Help/Folder.pyqJIAU,/Control_Panel/Products/OFSP/Help/Folder.stxq JJAU0/Control_Panel/Products/OFSP/Help/Folder_Add.stxq JHAU1/Control_Panel/Products/OFSP/Help/Folder_View.stxq JLAU-/Control_Panel/Products/OFSP/Help/History.stxq JMAU*/Control_Panel/Products/OFSP/Help/Image.pyq JNAU+/Control_Panel/Products/OFSP/Help/Image.stxqJOAU0/Control_Panel/Products/OFSP/Help/Image_Edit.stxqJPAU0/Control_Panel/Products/OFSP/Help/Image_View.stxqJQAU2/Control_Panel/Products/OFSP/Help/ObjectManager.pyqJKAU6/Control_Panel/Products/OFSP/Help/ObjectManagerItem.pyqJRAUAU)/Control_Panel/Products/OFSP/Help/File.pyqJ@AU*/Control_Panel/Products/OFSP/Help/File.stxqJBAU./Control_Panel/Products/OFSP/Help/File_Add.stxq JAAU//Control_Panel/Products/OFSP/Help/File_Edit.stxq!JDAt(U9q"(hUOIBucketq#ttQtq$.2G Kg((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(U;q(U BTrees.LengthqULengthqttQUidq U permissionsq U_indexq (Uq(hUIOBucketqttQJDA(U?q(hUIOBucketqttQJbA(U@q(hUIOBucketq ttQt(h(hUIOBucketq ttQtq .@G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JbA]qUViewqaJcA]qhaJdA]qhaJeA]qhaJfA]q haJgA]q haJhA]q haJiA]q haJjA]q haJkA]qhaJlA]qhaJmA]qhaJnA]qhaJoA]qhaJpA]qhaJqA]qhaJrA]qhaJsA]qhaJtA]qhaJuA]qhaJvA]qhaJwA]qhaJxA]qhaJyA]qhaJzA]qhaJ{A]qhaJ|A]qhaJ}A]q haJ~A]q!haJA]q"haJA]q#haJA]q$haJA]q%haJA]q&haJA]q'haJA]q(haJA]q)haJA]q*haJA]q+haJA]q,haJA]q-haJA]q.haJA]q/haJA]q0haJA]q1haJA]q2haJA]q3haJA]q4haJA]q5haJA]q6haJA]q7haJA]q8haJA]q9haJA]q:haJA]q;haJA]qhaJA]q?hattq@.?G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JDA]qUViewqaJEA]qhaJFA]qhaJGA]qhaJHA]q haJIA]q haJJA]q haJKA]q haJLA]q haJMA]qhaJNA]qhaJOA]qhaJPA]qhaJQA]qhaJRA]qhaJSA]qhaJTA]qhaJUA]qhaJVA]qhaJWA]qhaJXA]qhaJYA]qhaJZA]qhaJ[A]qhaJ\A]qhaJ]A]qhaJ^A]qhaJ_A]q haJ`A]q!haJaA]q"hat(U@q#(hUIOBucketq$ttQtq%.>G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J&A]qUViewqaJ'A]qhaJ(A]qhaJ)A]qhaJ*A]q haJ+A]q haJ,A]q haJ-A]q haJ.A]q haJ/A]qhaJ0A]qhaJ1A]qhaJ2A]qhaJ3A]qhaJ4A]qhaJ5A]qhaJ6A]qhaJ7A]qhaJ8A]qhaJ9A]qhaJ:A]qhaJ;A]qhaJ<A]qhaJ=A]qhaJ>A]qhaJ?A]qhaJ@A]qhaJAA]q haJBA]q!haJCA]q"hat(U?q#(hUIOBucketq$ttQtq%.<G Kgh((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UViewq(UAq(UBTrees.IIBTreeqU IITreeSetqttQttttq.AG Kg((UBTrees.IIBTreeqU IITreeSetqtqNt.((((J&AJ'AJ(AJ)AJ*AJ+AJ,AJ-AJ.AJ/AJ0AJ1AJ2AJ3AJ4AJ5AJ6AJ7AJ8AJ9AJ:AJ;AJ<AJ=AJ>AJ?AJ@AJAAJBAJCAJDAJEAJFAJGAJHAJIAJJAJKAJLAJMAJNAJOAJPAJQAJRAJSAJTAJUAJVAJWAJXAJYAJZAJ[AJ\AJ]AJ^AJ_AJ`AJaAJbAJcAJdAJeAJfAJgAJhAJiAJjAJkAJlAJmAJnAJoAJpAJqAJrAJsAJtAJuAJvAJwAJxAJyAJzAJ{AJ|AJ}AJ~AJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAttttq.;G Kg&((U BTrees.LengthqULengthqtqNt.K.1G Kg((U0Products.PluginIndexes.KeywordIndex.KeywordIndexqU KeywordIndexqtqNt.}q(U__len__q(UBq(U BTrees.LengthqULengthqttQUidq U categoriesq U_indexq (UCq (UBTrees.OOBTreeq UOOBTreeqttQU useOperatorqUorqU call_methodsqNU ignore_exq(Ucq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU operatorsq]q(hUandqeU_unindexq(UDq(UBTrees.IOBTreeqUIOBTreeqttQu.DG Kg((UBTrees.IOBTreeqUIOBTreeqtqNt.(((UEq(hUIOBucketqttQJDA(UFq(hUIOBucketqttQJbA(UGq(hUIOBucketq ttQt(h(hUIOBucketq ttQtq .GG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JbA]qUContent Manager InformationqaJcA]qhaJdA]qhaJeA]qhaJfA]q haJgA]q haJhA]q haJiA]q haJjA]q haJkA]qhaJlA]qhaJmA]qhaJnA]qhaJoA]qhaJpA]qhaJqA]qhaJrA]qhaJsA]qhaJtA]qhaJuA]qhaJvA]qhaJwA]qhaJxA]qhaJyA]qhaJzA]qhaJ{A]qhaJ|A]qhaJ}A]q haJ~A]q!haJA]q"haJA]q#haJA]q$haJA]q%haJA]q&haJA]q'haJA]q(haJA]q)haJA]q*haJA]q+haJA]q,haJA]q-haJA]q.haJA]q/haJA]q0haJA]q1haJA]q2haJA]q3haJA]q4haJA]q5haJA]q6haJA]q7haJA]q8haJA]q9haJA]q:haJA]q;haJA]qhaJA]q?hattq@.FG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JDA]qUContent Manager InformationqaJEA]qhaJFA]qhaJGA]qhaJHA]q haJIA]q haJJA]q haJKA]q haJLA]q haJMA]qhaJNA]qhaJOA]qhaJPA]qhaJQA]qhaJRA]qhaJSA]qhaJTA]qhaJUA]qhaJVA]qhaJWA]qhaJXA]qhaJYA]qhaJZA]qhaJ[A]qhaJ\A]qhaJ]A]qhaJ^A]qhaJ_A]q haJ`A]q!haJaA]q"hat(UGq#(hUIOBucketq$ttQtq%.EG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J&A]qUContent Manager InformationqaJ'A]qhaJ(A]qhaJ)A]qhaJ*A]q haJ+A]q haJ,A]q haJ-A]q haJ.A]q haJ/A]qhaJ0A]qhaJ1A]qhaJ2A]qhaJ3A]qhaJ4A]qhaJ5A]qhaJ6A]qhaJ7A]qhaJ8A]qhaJ9A]qhaJ:A]qhaJ;A]qhaJ<A]qhaJ=A]qhaJ>A]qhaJ?A]qhaJ@A]qhaJAA]q haJBA]q!haJCA]q"hat(UFq#(hUIOBucketq$ttQtq%.CG Kg((UBTrees.OOBTreeqUOOBTreeqtqNt.((((UContent Manager Informationq(UHq(UBTrees.IIBTreeqU IITreeSetqttQttttq.HG Kg((UBTrees.IIBTreeqU IITreeSetqtqNt.((((J&AJ'AJ(AJ)AJ*AJ+AJ,AJ-AJ.AJ/AJ0AJ1AJ2AJ3AJ4AJ5AJ6AJ7AJ8AJ9AJ:AJ;AJ<AJ=AJ>AJ?AJ@AJAAJBAJCAJDAJEAJFAJGAJHAJIAJJAJKAJLAJMAJNAJOAJPAJQAJRAJSAJTAJUAJVAJWAJXAJYAJZAJ[AJ\AJ]AJ^AJ_AJ`AJaAJbAJcAJdAJeAJfAJgAJhAJiAJjAJkAJlAJmAJnAJoAJpAJqAJrAJsAJtAJuAJvAJwAJxAJyAJzAJ{AJ|AJ}AJ~AJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAJAttttq.BG Kg&((U BTrees.LengthqULengthqtqNt.K.0G Kg((U*Products.PluginIndexes.TextIndex.TextIndexqU TextIndexqtqNt.}q(UidqUSearchableTextqU_lexiconq(UIq(U0Products.PluginIndexes.TextIndex.GlobbingLexiconq UGlobbingLexiconq ttQU useOperatorq Uorq U call_methodsq NU ignore_exqNU_unindexq(UJq(UBTrees.IOBTreeqUIOBTreeqttQUcatalogq(Ucq(UProducts.ZCatalog.ZCatalogqUZCatalogqttQU vocabulary_idqU VocabularyqU_indexq(UKq(hUIOBTreeqttQu.KG Kg((UBTrees.IOBTreeqUIOBTreeqtqNt.(((ULq(hUIOBucketqttQJJ(UMq(hUIOBucketqttQJPti(UNq(hUIOBucketq ttQJҔj(UOq (hUIOBucketq ttQJʗ(UPq (hUIOBucketq ttQJ'|(UQq(hUIOBucketqttQJ(URq(hUIOBucketqttQJ](USq(hUIOBucketqttQJ|Q(UTq(hUIOBucketqttQJHL(UUq(hUIOBucketqttQJŭ(UVq(hUIOBucketqttQJ]ޱ(UWq(hUIOBucketqttQJ?h(UXq(hUIOBucketqttQJ.5(UYq(hUIOBucketqttQJY(UZq (hUIOBucketq!ttQJU*(U[q"(hUIOBucketq#ttQJd(U\q$(hUIOBucketq%ttQJd(U]q&(hUIOBucketq'ttQJ#(U^q((hUIOBucketq)ttQJY(U_q*(hUIOBucketq+ttQJ(U`q,(hUIOBucketq-ttQJcq(Uaq.(hUIOBucketq/ttQJ~-(Ubq0(hUIOBucketq1ttQJx(Ucq2(hUIOBucketq3ttQJ8(Udq4(hUIOBucketq5ttQJ}(Ueq6(hUIOBucketq7ttQJ (Ufq8(hUIOBucketq9ttQJi(Ugq:(hUIOBucketq;ttQJI(Uhq<(hUIOBucketq=ttQJw (Uiq>(hUIOBucketq?ttQJG(Ujq@(hUIOBucketqAttQJe(UkqB(hUIOBucketqCttQJm)(UlqD(hUIOBucketqEttQJUh(UmqF(hUIOBucketqGttQJDC (UnqH(hUIOBucketqIttQJo3&(UoqJ(hUIOBucketqKttQJk,(UpqL(hUIOBucketqMttQJƄ/(UqqN(hUIOBucketqOttQJy3(UrqP(hUIOBucketqQttQJ)6(UsqR(hUIOBucketqSttQJK:(UtqT(hUIOBucketqUttQJ\y@(UuqV(hUIOBucketqWttQJACD(UvqX(hUIOBucketqYttQJDH(UwqZ(hUIOBucketq[ttQJJK(Uxq\(hUIOBucketq]ttQJM]{O(Uyq^(hUIOBucketq_ttQJB9MS(Uzq`(hUIOBucketqattQJ;X(U{qb(hUIOBucketqcttQJmf\(U|qd(hUIOBucketqettQJ8b(U}qf(hUIOBucketqgttQJ|ze(U~qh(hUIOBucketqittQJh(Uqj(hUIOBucketqkttQJ{l(Uql(hUIOBucketqmttQJKo(Uqn(hUIOBucketqottQt(h(hUIOBucketqpttQtqq.G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JKo(J9AKtqJ$"p(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ4p(Uq(hUIIBTreeq ttQJZp(JAKtq JJąp(Uq (hUIIBTreeq ttQJp(Uq (hUIIBTreeqttQJ q}q(JAKJ=AKuJb1q(JAKtqJθ6q(Uq(hUIIBTreeqttQJwq}q(JAKJAKuJݑq(Uq(hUIIBTreeqttQJq(J`AKtqJ r}q(JAKJAKJAKuJȰ(r(Uq(hUIIBTreeqttQJ(r(J9AKtqJP8r}q(JVAKJ[AKJFAKuJHr(J/AKtqJh*Rr(JAKtqJd{r}q(J_AKJ`AKuJ(r(Uq(hUIIBTreeq ttQJr(JaAKtq!JGr(JSAKtq"J[Bs(Uq#(hUIIBTreeq$ttQJ=3s(Uq%(hUIIBTreeq&ttQJ;s}q'(J_AKJ`AKuJ-1Us}q((JAKJAKJ9AKuJvbs(Uq)(hUIIBTreeq*ttQJLms(J+AKtq+JMqs(JaAKtq,Jݏs(JAKtq-JHs(JAKtq.Js(JAKtq/Js(Uq0(hUIIBTreeq1ttQJ'Bs}q2(JAKJAKJKAKuJ !t(J9AKtq3JX ]t}q4(J=AKJAKuJ8ft}q5(JAKJAKJAKuJht(JAKtq6Jt(Uq7(hUIIBTreeq8ttQJKFt(JAKtq9Jt(Uq:(hUIIBTreeq;ttQJY(Zu(J^AKtqttQJ0hu(JAKtq?J=u(JAKtq@J?Ѿu(JUAKtqAJXu(UqB(hUIIBTreeqCttQJ v(UqD(hUIIBTreeqEttQJv}qF(J+AKJ/AKuJ@=#v}qG(JKAKJ_AKuJ>v(JAKtqHJݕv(UqI(hUIIBTreeqJttQJ'v(J9AKtqKJv(J]AKtqLJw(UqM(hUIIBTreeqNttQJ@Iw(UqO(hUIIBTreeqPttQJHow(JAKtqQJw}qR(JwAKJ9AKuJ*w(JwAKtqSJ,w(JAK tqTttqU.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ/AKJ=AKJ>AKJ?AKJSAKJXAKJZAKJ^AKJ_AKJaAKJbAKJgAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J1AKJ2AKJ4AKJ>AKJAAK JBAKJDAKJEAKJFAKJKAKJPAKJSAKJVAKJ[AKJ\AKJzAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJKAKJSAKJWAKJ{AKJ}AKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ?AKJBAKJOAKJ[AKJ\AKJoAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ;AKJCAKJDAKJGAKJKAKJ]AKJwAKJAKJAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J1AKJ2AKJ4AKJAAKJDAKJEAKJPAKJzAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J=AKJZAKJ_AKJcAKJgAKJmAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJ\AKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AKJ:AKJ=AKJ?AKJAAKJRAKJZAKJ]AKJaAKJyAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ<AKJcAKJgAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ]AKJeAKJ{AKJ}AKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ]AKJ_AKJbAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ3AKJBAKJ[AKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJXAKJpAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ>AKJ]AKJ_AKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ>AKJCAKJDAKJGAKJMAKJSAKJeAKJkAKJmAKJoAKJwAKttttq.G Kg ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ-AKJ1AKJ9AKJAAKJHAKJKAKJSAKJTAKJUAKJWAKJZAKJ]AKJ_AKJaAKJbAKJcAKJlAKJmAKJpAKJrAKJwAKJxAKJzAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ/AKJ9AK J>AKJ?AKJKAKJRAKJYAKJ\AKJ_AKJ`AKJaAKJ|AKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg5((UBTrees.IOBTreeqUIOBucketqtqNt.((J{l}q(JAKJAKJAKuJ l(Uq(UBTrees.IIBTreeqUIIBTreeqttQJl(JpAKtqJl(Uq (hUIIBTreeq ttQJdl(Uq (hUIIBTreeq ttQJl(J9AKtq J1p(m(J/AKtqJGm(J9AKtqJim(JAKtqJ ďm}q(JAKJAKuJCm(JKAKtqJKm(JJAKtqJCn(J?AKtqJ%n(Uq(hUIIBTreeqttQJ6Tn(J\AKtqJKZn(JAK tqJn(J\AKtqJ*n(J9AKtqJ;2n}q(JOAKJAKuJo(Uq(hUIIBTreeqttQJT o(J9AKtqJAKtq#Jito(J\AKtq$J1o(JAKtq%JPEo}q&(JGAKJCAKJ9AKuJo(Uq'(hUIIBTreeq(ttQJo(JAKtq)J#o}q*(J^AKJ`AKuJfo}q+(J/AKJAKJ?AKut(Uq,(hUIOBucketq-ttQtq..G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJRAKJSAKJXAKJ\AKJ_AKJcAKJgAKJ{AKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ>AKJXAKJ_AKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JaAKJwAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJCAKJDAKJGAKJPAKJSAKJZAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ9AKJ>AKJBAKJHAKJZAKJ_AKJ`AKJbAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ*AKJ+AKJ9AKJ=AKJCAKJGAKJKAKJMAKJWAKJ]AKJ_AKJbAKJfAKJgAKJkAKJmAKJpAKJsAKJ~AKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ>AKJKAKJOAKJ_AKJaAKJbAKJ|AKJAKJAKJAKJAKJAKJAKJAK JAKJAKttttq.G Kg1((UBTrees.IOBTreeqUIOBucketqtqNt.((Jh(J*AKtqJ]i(JAKtqJ5ai(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ~/i}q (JWAKJbAKuJ*i(JRAKtq J? i}q (JaAKJ9AKJAKuJri(Uq (hUIIBTreeq ttQJi}q(J?AKJ>AKJ_AKuJ7i(JAKtqJ}8=j(JAKtqJYwj}q(JbAK JaAKuJw~j(Uq(hUIIBTreeqttQJj(JAKtqJdj}q(JAKJAKuJj(J9AKtqJ{j(J9AKtqJj}q(JAKJAKuJj}q(J_AKJAKuJpj(JAKtqJ$:j(JuAKtqJqj(JAKtqJ"k(J>AKtqJ0/k}q(JVAKJXAKuJ@k(J>AKtqJ-eBk}q (JAKJAKuJQk(Uq!(hUIIBTreeq"ttQJ$zk(Uq#(hUIIBTreeq$ttQJ}k(JoAKtq%Jk(JAKtq&J4k(J&AKtq'J 6l(JaAKtq(JSl}q)(JAKJAKuJ^Xl}q*(JAKJ9AK ut(Uq+(hUIOBucketq,ttQtq-.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ?AKJ`AKJwAKJ{AKJ~AKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJJAKJKAKJVAKJZAKJ_AKJ`AKJeAKJgAKJ{AKJ}AKJAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JsAKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJbAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AKJRAKJ^AKJ_AKJaAKJbAKJAK JAKJAK JAKJAKJAKJAKJAKttttq.~G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J|ze}q(JAKJAKJcAKuJe(Uq(UBTrees.IIBTreeqUIIBTreeqttQJSge(J9AKtqJ@e(JAKtq JNe(Uq (hUIIBTreeq ttQJ e(J&AKtq JDf(JAKtq JR f(J9AKtqJ *f(Uq(hUIIBTreeqttQJ '.f(JAKtqJ9f(JKAKtqJ`f(JAKtqJ f}q(JAKJAKJAKuJ.qf}q(J>AKJ=AKuJf(JaAKtqJYg}q(JXAKJ<AKuJ8#g(JaAKtqJlWg(J9AKtqJ(~g(JaAKtqJ g(JRAKtqJg(JXAKtqJ+g(J[AKtqJ$Eg(Uq(hUIIBTreeqttQJyg(JAKtq JSg(J9AKtq!Jg(Uq"(hUIIBTreeq#ttQJ~g(Uq$(hUIIBTreeq%ttQJg(JAKtq&Jog(J+AKtq'Jh}q((JAKJAKJAKuJ;h(JAKtq)Jh(JaAKtq*J h(J?AKtq+J%0h(Uq,(hUIIBTreeq-ttQJ5h(JAKtq.JkMh(J^AKtq/J4rh(J:AKtq0Jihh}q1(JcAKJRAKJhAKuJץh(JZAKtq2J`h}q3(J=AKJ+AKJAKuJh(Uq4(hUIIBTreeq5ttQJvh(JwAKtq6t(Uq7(hUIOBucketq8ttQtq9.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJXAKJwAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ3AKJ9AK>J>AKJ?AKJLAKJRAKJSAKJUAKJaAK JbAK JyAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ+AKJ,AKJ-AKJ0AKJ1AKJ2AKJ9AKPJ:AKJ;AKJ<AKJ=AKJ?AKJCAKJDAKJJAKJKAKJLAKJMAKJOAKJPAKJRAKJSAK JVAKJWAKJXAKJZAK J\AKJ]AKJ^AKJ_AKJ`AKJaAKJbAKJcAKJeAKJgAKJhAKJpAKJwAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ/AKJ?AKJJAKJaAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJUAKJ{AKJ~AKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ9AKJXAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJKAKJVAKJZAKJaAKJeAKJgAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J;AKJaAKJbAKJAKJAKttttq.}G Kg1((UBTrees.IOBTreeqUIOBucketqtqNt.((J8b(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ-b(JAKtqJx b(Uq(hUIIBTreeq ttQJCb(Uq (hUIIBTreeq ttQJhSb(JAKtq Jxxsb}q (J0AKJ,AKuJb(J+AKtqJ mb(JbAKtqJ)b(JwAKtqJb(JzAKtqJb(JDAKtqJlnb}q(JAKJAKuJ[>c(J&AKtqJ/c(JAKtqJ8c(J9AKtqJwic(JAKtqJ߷c(Uq(hUIIBTreeqttQJc(J*AKtqJpc(J.AKtqJc}q(J;AKJgAK uJfc(JKAKtqJ c(Uq(hUIIBTreeqttQJ|Vc(JbAKtq Jc(Uq!(hUIIBTreeq"ttQJvc}q#(JAKJAKuJc(J9AKtq$JC_c(JAKtq%Jzd(Uq&(hUIIBTreeq'ttQJs'd(JAKtq(J ,d(JpAKtq)J}7d(JAKtq*JMJd(Uq+(hUIIBTreeq,ttQJKRd(Uq-(hUIIBTreeq.ttQJ6Vd}q/(J_AKJ^AKuJ{7Zd(JAKtq0JiZd(Uq1(hUIIBTreeq2ttQJa}dd}q3(JAKJAKuJud(JRAKtq4Jd(J:AKtq5Jrd}q6(JAKJRAKJAKuJMd(J\AKtq7Js1e}q8(J+AKJAKuJu:e(JBAKtq9JPce(JAKtq:Je(J+AKtq;t(U~q<(hUIOBucketq=ttQtq>.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J0AKJKAKJLAKJUAKJYAKJ\AKJaAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ9AK JVAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J,AKJ0AKJaAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JVAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ.AKJ/AKJ3AKJ7AKJ;AKJ=AKJ>AKJSAKJXAKJZAKJdAKJqAKJ~AKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJaAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ,AKJ0AKJ1AK J2AKJ3AKJ4AKJ5AKJCAKJKAKJMAKJOAKJRAKJXAKJZAKJ^AKJ_AKJaAKJ{AKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgy((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ+AKJ-AKJ/AKJ3AKJ9AKJ:AKJ<AKJ=AKJ>AKJ?AKJBAKJCAKJDAKJGAKJKAKJPAKJRAKJSAKJVAKJXAK JZAKJ[AKJ\AK J_AKJ`AKJaAKJbAKJgAKJoAKJpAKJ{AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JRAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ/AKJ3AKJ9AKJ=AKJ>AKJCAKJDAKJGAKJKAKJLAKJRAKJSAKJZAKJ_AKJ`AKJaAKJfAKJ{AKJAKJAKJAKJAKJAKttttq.|G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jmf\(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ\}q(JAKJAKuJ\(JbAKtqJ d\(Uq (hUIIBTreeq ttQJ\(Uq (hUIIBTreeq ttQJ\(JKAKtq JF\(J/AKtqJK](JDAKtqJ1i]}q(JCAKJ9AKuJV](J\AKtqJhx]}q(J?AKJMAKJ{AKuJI](JAKtqJ#](Uq(hUIIBTreeqttQJt](Uq(hUIIBTreeqttQJ]f"^(Uq(hUIIBTreeqttQJi#^(JAKtqJ6=^(JAKtqJ_^(J9AKtqJ(e^(J\AKtqJHz^}q(JKAKJRAKuJ^(J9AKtqJqQ^(JAKtq J^(JAKtq!JD^(Uq"(hUIIBTreeq#ttQJ^}q$(JAKJ9AKuJ^}q%(JAKJ9AKuJE_}q&(J/AKJ.AKuJN_(JAKtq'J_(JAKtq(J?_(Uq)(hUIIBTreeq*ttQJ3X_(JaAKtq+J t_}q,(J;AKJ9AKuJ_}q-(J/AKJoAKJ?AKuJu_}q.(JAKJAKuJ_(J\AKtq/Jf)_(JAKtq0J_(JRAKtq1JtA`(Uq2(hUIIBTreeq3ttQJd`(JAKtq4J[J`(J9AKtq5J`(JAKtq6J_a(J=AKtq7JRs^a(JAKtq8J lna(Uq9(hUIIBTreeq:ttQJ|a(JAKtq;J a}q<(J_AKJ]AKuJ+a(JbAKtq=J̒a(JXAKtq>Ja(JAKtq?J.a(J{AKtq@Jd?a(JAKtqAJ@a(JAKtqBt(U}qC(hUIOBucketqDttQtqE.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ1AKJ9AKJ=AKJXAKJYAKJbAKJoAKJwAKJAKttttq.G Kgd((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ/AKJ2AKJ7AKJ9AKJ:AKJ;AKJ<AKJ=AKJKAK JMAKJRAKJSAKJXAKJ[AKJ\AKJ_AKJ`AKJaAKJbAKJgAKJkAKJoAKJuAKJwAKJzAKJ{AKJ|AKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ0AKJ>AKJ?AKJBAKJDAKJRAKJXAKJYAKJ^AKJ_AKJaAKJ{AKJAKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJRAKJ^AKJ_AKJaAKJbAKJpAKJAK JAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ=AKJ\AKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JRAKJzAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJXAKJaAKJuAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJMAKJXAKJaAKJAK JAKttttq.{G Kg ((UBTrees.IOBTreeqUIOBucketqtqNt.((J;X(J2AKtqJՂX(Uq(UBTrees.IIBTreeqUIIBTreeqttQJX(J\AKtqJ4ΰX}q (J\AKJ+AKJ(AKuJX(Uq (hUIIBTreeq ttQJX(J?AKtq JUX(JAKtq JY(Uq(hUIIBTreeqttQJz#Y(Uq(hUIIBTreeqttQJ47Y(J+AKtqJ7Y(JAKtqJuZeY(JAKtqJ-hY(JDAKtqJkY(JAKtqJB}Y(Uq(hUIIBTreeqttQJiY}q(JwAKJ\AKJ:AKuJЎY(Uq(hUIIBTreeqttQJ3Y}q(JAKJAKuJY(Uq(hUIIBTreeqttQJZ}q(JgAKJJAKuJ5Z(Uq (hUIIBTreeq!ttQJZ(Uq"(hUIIBTreeq#ttQJZ}q$(JgAKJAKuJ`0Z(JAKtq%J)qZ(JDAKtq&JRZ}q'(J3AKJcAKuJZ(JAKtq(JʕZ(JKAKtq)JZ(J+AKtq*J_Z(Uq+(hUIIBTreeq,ttQJ"=[(J+AKtq-Jm>[}q.(JCAKJSAKJXAKuJt[(JzAKtq/JgDu[(J9AKtq0J[(Uq1(hUIIBTreeq2ttQJX[(JRAKtq3J6[(JAKtq4J:.(\}q5(JMAKJAKJ9AKuJf?\(J3AKtq6Jz L\(J9AKtq7t(U|q8(hUIOBucketq9ttQtq:.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ)AKJ*AKJ+AKJ,AKJ.AKJ/AKJ0AKJ1AKJ2AKJ3AKJ4AKJ9AKJ:AKJ;AKJ=AKJ>AKJ?AKJBAKJCAKJDAKJGAKJKAKJMAKJRAKJSAK JUAKJXAKJYAKJZAKJ[AKJ\AKJ]AKJ^AKJ_AKJ`AKJaAKJbAKJcAKJgAKJtAKJuAKJwAKJyAKJ{AKJ|AKJ}AKJAKJAKJAKJAKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ<AKJ?AKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ9AKJ?AKJBAKJDAKJEAKJPAKJaAKJbAKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJVAKJXAKJcAKJhAKJoAKJ~AKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ-AKJ.AKJ/AKJ1AKJ2AKJ3AKJ7AKJ9AKJ:AKJ;AKJ<AKJ=AKJ>AKJ?AKJAAKJCAKJDAKJGAKJHAKJJAKJKAKJLAKJMAKJOAKJPAKJRAKJSAKJTAKJUAKJVAKJWAKJXAK J[AKJ\AK J]AKJ_AKJcAKJdAKJeAKJfAKJgAK JhAKJiAKJjAKJkAKJlAKJmAKJnAKJoAKJqAKJrAKJsAKJtAKJuAKJvAKJwAKJyAKJzAKJ{AKJ}AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJaAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ9AKJ;AKJSAKJ\AKJ_AKJbAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ*AKJ+AKJ9AKJ:AKJ?AKJMAKJSAKJ\AKJaAKJcAKJ|AKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJRAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ+AKJ3AKJ9AKJ=AKJ>AKJ?AKJKAKJRAKJSAKJUAKJZAKJ\AKJ]AKJ^AKJ_AKJaAKJcAKJdAKJhAKJiAKJwAKJzAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.zG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JB9MS(JBAKtqJ`S(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ٢S(Uq(hUIIBTreeq ttQJS}q (J\AKJ9AKJAKuJS(J`AKtq Jx=S}q (JSAKJ_AKuJ T}q (J+AKJ*AKuJ*8T(JAKtqJ?T(JAKtqJT(J?AKtqJ.&T(JbAKtqJôT}q(J+AKJAKuJhT(JAKtqJ7T}q(JRAKJ~AKuJT}q(J=AKJSAKJbAKuJ'|*U(Uq(hUIIBTreeqttQJ;,U(J_AKtqJ08U(JAKtqJ7YU(JAKtqJsU(JKAKtqJU(JaAKtqJU}q(J*AKJAKuJ U(J9AKtqJV(JAKtqJ"V}q (J:AKJAKuJ9YV}q!(J?AKJAKJAKuJVfV(J?AKtq"J V(Uq#(hUIIBTreeq$ttQJާV(J/AKtq%JV}q&(JAKJAKuJ!V(J/AKtq'JV(JLAKtq(J06W}q)(JAKJAKJXAKuJXdW}q*(JoAKJ\AKuJQ>wW(J:AKtq+JxzW(JAKtq,J{W(JAKtq-J~W(JAKtq.JkW(Uq/(hUIIBTreeq0ttQJ}W(JAKtq1J$-$X(Uq2(hUIIBTreeq3ttQJb8xX(JoAKtq4t(U{q5(hUIOBucketq6ttQtq7.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJCAKJ_AKJ`AKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ9AKJ^AKJ_AKJ`AKJaAKJ}AKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJaAKJbAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJRAKJ_AKJ`AKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ1AKJ9AK9JKAKJRAKJ]AKJ^AKJ_AKJ`AKJaAKJbAKJpAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ=AKJ>AKJ?AKJRAKJaAK JbAKJzAKttttq.yG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JM]{O(Uq(UBTrees.IIBTreeqUIIBTreeqttQJO(Uq(hUIIBTreeqttQJ P(JAKtq J}P(J9AK!tq J<P(JaAKtq J Y3P(JAKtq J߭]P(Uq (hUIIBTreeqttQJ*P}q(JAKJAKuJP}q(JKAK JRAKuJ(P(J9AKtqJ7P(Uq(hUIIBTreeqttQJTGQ(Uq(hUIIBTreeqttQJGQ(JAKtqJȸ$Q(Uq(hUIIBTreeqttQJx-Q}q(J9AKJeAKuJ/2Q(JtAKtqJQ4Q(JaAKtqJvQ(Uq(hUIIBTreeqttQJ̓Q(Uq(hUIIBTreeqttQJQ}q (J/AKJ=AKJ?AKuJJQ(JAKtq!JQ(J/AKtq"J^DQ(JZAKtq#J+R(JXAKtq$JE%R(JbAKtq%JIR(Uq&(hUIIBTreeq'ttQJ RR(JAKtq(JmR(JAKtq)JQR}q*(J+AKJ=AKuJeR(JAKtq+JnR(JoAKtq,J R(Uq-(hUIIBTreeq.ttQJR}q/(J?AKJuAKJAKuJ]R(J9AKtq0JAKJgAKJsAKJ{AKJ|AKJ}AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AK JVAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AKJRAKJ^AKJ_AKJaAKJbAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AK J(AKJ)AKJ*AK J+AK&J,AKJ-AKJ.AKJ/AKJ1AK J2AKJ3AKJ4AKJ7AKJ9AKJ:AK J;AKJ<AKJ=AKJ>AKJ?AK+JAAKJBAKJCAKJDAKJEAKJGAK JHAKJKAKJLAKJMAK JOAKJPAK JQAKJRAK2JSAKJTAKJUAKJVAKJWAKJXAK"JYAKJZAKJ[AKJ\AKJ]AKJ^AK J_AK%J`AK JaAKAKJSAKJXAKJcAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJcAKJgAKJAKJAKttttq.xG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JJK(J/AKtqJKn L(JXAKtqJL}q(J+AKJbAKuJL}q(JZAKJ9AKuJx^L}q(JSAKJcAKuJ&jL(Uq (UBTrees.IIBTreeq UIIBTreeq ttQJ9L}q (J\AKJ*AKJ(AKuJXKL(JRAKtq JM(JbAKtqJ M(Uq(h UIIBTreeqttQJ4M(J<AKtqJdM(JAKtqJ2M(Uq(h UIIBTreeqttQJM(JAKtqJiM(J=AKtqJpM(Uq(h UIIBTreeqttQJjM(JAKtqJ#N(JAKtqJ$N}q(JwAKJ\AKJ{AKuJ5.N(J9AKtqJzEN(Uq(h UIIBTreeqttQJ9uN(Uq(h UIIBTreeq ttQJ }N(Uq!(h UIIBTreeq"ttQJN}q#(J)AKJyAKJ`AKuJI=N(J=AKtq$JN}q%(J/AKJ?AKJXAKuJȰN(J+AKtq&JgN}q'(J=AKJcAKJSAKuJŰN(JuAKtq(JeN(Uq)(h UIIBTreeq*ttQJ4O(Uq+(h UIIBTreeq,ttQJ29O(JXAKtq-J =O(JbAKtq.JD8EO(JAKtq/JIp[O(JAKtq0J\O(J\AKtq1J{aO(JRAKtq2t(Uyq3(hUIOBucketq4ttQtq5.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ9AKJ=AKJBAKJCAKJGAKJUAKJXAKJZAKJ^AKJ_AKJ{AKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ<AKJ>AKJSAKJ\AKJaAKJwAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ,AKJ0AKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJpAKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJ>AKJwAKJ|AKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J:AKJ<AKJ`AKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ7AKJ;AKJ\AKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ.AKJ/AKJ3AKJ7AKJ9AKJ:AKJKAKJRAKJZAKJ[AKJ^AKJ_AKJAKJAKttttq.wG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JDH}q(J0AKJ,AKuJ7QH(J+AKtqJ$H}q(J_AKJVAKuJH(Uq(UBTrees.IIBTreeqUIIBTreeq ttQJ0H(JwAKtq JH}q (JAKJAKuJjH(JAKtq JAKtq#JsJ(JBAKtq$J&J(Uq%(hUIIBTreeq&ttQJJ(Uq'(hUIIBTreeq(ttQJ຦J(JaAKtq)JJ}q*(JnAKJlAKuJAɼJ(Uq+(hUIIBTreeq,ttQJRJ}q-(JAKJAKuJ|J(Uq.(hUIIBTreeq/ttQJ&J(JXAKtq0JK(JAKtq1J_,K(J[AKtq2JNK(Uq3(hUIIBTreeq4ttQJ;nK(JAKtq5J{K(J_AKtq6JQK(Uq7(hUIIBTreeq8ttQt(Uxq9(hUIOBucketq:ttQtq;.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAAKJDAKJEAKJOAKJPAK JQAKJzAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ2AKJ3AKJ4AKJEAKJMAKJSAKJWAKJXAKJZAKJ]AKJ_AKJdAKJhAKJiAKJjAKJnAKJoAKJyAKJzAKJ~AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ\AKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ/AKJ7AKJ:AK J;AK J<AKJ?AKJ\AKJgAKJoAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ=AKJSAKJ]AKJ_AKJgAKJkAKJmAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ+AKJ=AKJ?AKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J-AKJ1AKJAAKJHAKJTAKJ[AKJ]AKJrAKJwAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JSAKJ{AKJAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJ_AKJ`AKJaAKJpAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ^AKJ_AKJbAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ9AKJ<AKJRAKJWAKJ^AKJ_AKJ`AKJaAKJ}AKJAKJAKJAKJAKttttq.vG Kg~((UBTrees.IOBTreeqUIOBucketqtqNt.((JACD(Uq(UBTrees.IIBTreeqUIIBTreeqttQJq\ND(Uq(hUIIBTreeqttQJ4PD(JbAKtq J dD(J+AKtq JndD(JaAKtq JghD(JAKtq JD}q (JBAKJHAKuJpD}q(J/AKJ?AKuJĿD}q(JKAKJAKuJ~oD(J/AKtqJ?E(JAKtqJXE(JbAKtqJۂE(Uq(hUIIBTreeqttQJ8E}q(J9AKJaAKuJΎE(Uq(hUIIBTreeqttQJME(Uq(hUIIBTreeqttQJ"FE(JXAKtqJw F(Uq(hUIIBTreeqttQJ}qF(Uq(hUIIBTreeqttQJʡ;F(J*AKtqJq|RF}q (JAKJAKJAKuJFfF(JbAKtq!JnF(JAKtq"JȐF(JaAKtq#JF}q$(J9AKJaAKuJ~F(J?AKtq%JF(J9AKtq&JF}q'(JAKJ\AKuJyGF(JaAKtq(J; G}q)(J0AKJ,AKuJQ.LG(JnAKtq*JVG(Uq+(hUIIBTreeq,ttQJpG(JZAKtq-JG(J_AKtq.JG(Uq/(hUIIBTreeq0ttQt(Uwq1(hUIOBucketq2ttQtq3.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AK J+AKJ=AKJ?AKJHAKJMAKJRAKJXAKJZAKJcAKJeAKJfAKJgAKJjAKJlAK JmAKJnAK JoAKJpAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ+AKJ0AKJ9AKJ=AKJ>AKJ?AKJMAKJXAKJZAKJcAKJeAKJoAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ?AKJCAKJDAKJGAKJKAKJPAKJRAKJSAKJ]AKJ^AKJ_AKJwAKJzAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJRAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJRAKJXAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJDAKJPAKJ_AKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJaAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J3AKJXAKJ\AKJAKJAKttttq.uG Kg;((UBTrees.IOBTreeqUIOBucketqtqNt.((J\y@(Uq(UBTrees.IIBTreeqUIIBTreeqttQJp@(JAKtqJ9 A(JAKtqJX'2A}q (J;AKJKAKuJi=A(JAKtq JOA(JAKtq JU!dA(J9AKtq JJjA(JAKtq JuA(JaAKtqJA(Uq(hUIIBTreeqttQJ7A}q(JAKJbAKJaAKuJ+A(J/AKtqJA}q(J_AKJ^AKuJ A(Uq(hUIIBTreeqttQJA}q(J+AKJ\AKuJIEB(JAKtqJ"B(J9AKtqJAK tqJ1B}q(J+AKJAKuJBB(Uq(hUIIBTreeqttQJj(B(JbAKtqJ$B}q (J0AKJ,AKuJ C(Uq!(hUIIBTreeq"ttQJ^C(JZAKtq#J) C(J=AKtq$JC}q%(J+AKJ\AKuJpC(J>AKtq&J)C(JaAKtq'J2D(J&AKtq(Jx|*D(Uq)(hUIIBTreeq*ttQJ:D}q+(JMAKJ+AKJAKut(Uvq,(hUIOBucketq-ttQtq..G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ2AKJ7AKJ:AKJ;AKJ?AKJDAKJPAKJSAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ3AKJ7AKJ=AKJSAKJXAKJ_AKJcAKJdAKJeAKJhAKJiAKJjAKJkAKJmAKJpAKJzAKJ{AKJ}AKJAKttttq.G Kgr((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ/AKJ2AKJ9AKJ:AKJ;AKJ>AKJ?AKJAAKJCAKJDAKJKAKJLAKJMAKJPAKJRAKJSAKJXAKJ\AKJ^AKJ_AKJ`AKJaAK JbAKJgAKJoAKJpAKJ{AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ:AKJ=AKJCAKJGAKJSAKJbAKJoAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ2AKJ=AKJ>AKJDAKJPAKJRAKJSAKJXAKJZAKJ[AKJ]AKJ_AKJbAKJcAKJtAKJuAKJyAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ+AKJ0AKJZAKttttq.tG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JK:}q(J9AKJAKJZAKuJ1f:}q(JAKJAKuJ~:}q(JnAKJlAKuJ҇:(J=AKtqJ~:}q(J*AKJAKuJ{:}q (JGAKJAKJCAKuJ:}q (JAKJAKJ|AKuJJX:}q (JwAKJ{AKuJ:}q (JAKJAKuJ#:(JXAKtq J(:}q(J+AKJ*AKuJ:(J/AKtqJ;}q(JcAKJZAKuJ2;}q(JRAKJAKJAKuJ;(J+AKtqJ;}q(J=AKJRAKJ9AKuJt;(Uq(UBTrees.IIBTreeqUIIBTreeqttQJB;(JAKtqJ;(Uq(hUIIBTreeqttQJ˪;(JAKtqJ۷<}q(J:AKJDAKuJFT<(JAKtqJUf<(JSAKtqJt<(J:AKtqJɢ<}q(JAKJAKJ9AKuJ8<(J?AKtq J2=(JgAKtq!Jx=}q"(J/AKJ2AKuJ=(Uq#(hUIIBTreeq$ttQJO=(Uq%(hUIIBTreeq&ttQJ =(Uq'(hUIIBTreeq(ttQJQo=(JMAKtq)JB=(JAKtq*J7=(Uq+(hUIIBTreeq,ttQJj>(JAKtq-J(!->}q.(JAKJRAKuJ8>(JaAKtq/JR?>}q0(JAKJAKJ9AKuJ2(>(J9AK tq1J>(Uq2(hUIIBTreeq3ttQJd>}q4(JGAKJCAKJ9AKuJH?(J9AKtq5J?(JAKtq6J=/?(J>AKtq7JF?(J?AKtq8JtDd?}q9(J+AKJtAKuJ?}q:(JAKJaAKuJ?(Uq;(hUIIBTreeqJ=2@(JXAKtq?JB@(Uq@(hUIIBTreeqAttQJW@(UqB(hUIIBTreeqCttQJk}g@(UqD(hUIIBTreeqEttQJg@(UqF(hUIIBTreeqGttQt(UuqH(hUIOBucketqIttQtqJ.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJRAKJ\AKJ_AKJaAKJbAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJaAKJAKJAKJAKJAK"JAKJAKJAKJAK JAKJAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJSAKJ\AKJoAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJMAKJRAKJgAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ9AKJ;AKJ=AKJ>AKJXAKJ\AKJaAKJcAKJhAKJoAKJ{AKJ|AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ?AKJZAKJ|AKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J3AKJKAKJ_AKJaAKJbAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J4AKJEAKJFAKJ[AKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ(AKJ)AKJ*AKJ+AKJ,AKJ-AKJ/AKJ0AKJ1AKJ2AKJ3AKJ9AK J>AKJ?AKJBAKJCAKJDAKJGAKJHAKJKAKJOAKJRAKJXAKJZAKJ\AKJ]AKJ^AKJ_AKJ`AKJaAKJbAKJcAKJeAKJhAKJlAKJnAKJoAKJpAKJyAKJzAKJ}AKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ>AKJVAKJ\AKJgAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J:AKJ?AKJSAKJgAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AK J<AKJ?AKJRAKJXAKJAKJAKJAKJAKJAKJAKttttq.sG Kgd((UBTrees.IOBTreeqUIOBucketqtqNt.((J)6(Uq(UBTrees.IIBTreeqUIIBTreeqttQJh76(U q(hUIIBTreeqttQJA6(JAKtq J6Q6(JAKtq Jb6(U q (hUIIBTreeq ttQJqp6(JbAKtq J A6(J;AKtqJK7}q(J>AKJ=AKJ9AKuJH7}q(JaAKJ<AKuJX&7(U q(hUIIBTreeqttQJV7}q(JwAKJ{AKuJ]7(U q(hUIIBTreeqttQJ`7(J:AKtqJb7(U q(hUIIBTreeqttQJ$7(JAKtqJI7(Uq(hUIIBTreeqttQJ 7}q(J_AKJgAKJ`AKuJP7(JDAKtqJ=?7}q(JgAKJAKuJ7(J[AKtqJy7(J9AKtq J?J7(J9AKtq!J08(JAKtq"J 8}q#(J?AKJ>AKJ=AKuJl+8(JAKtq$J?8(Uq%(hUIIBTreeq&ttQJ8(J+AKtq'J8(J9AKtq(J9=9(JAKtq)J=R9}q*(J/AKJcAKuJ9(JAKtq+J#9(JRAKtq,J~r9(Uq-(hUIIBTreeq.ttQt(Utq/(hUIOBucketq0ttQtq1.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ7AKJ9AKJ:AKJ;AKJ<AKJ=AKJ>AKJ?AKJBAKJCAKJGAKJJAKJKAKJMAKJOAKJRAKJSAKJUAKJVAKJXAKJZAKJ[AKJ\AKJ]AKJ_AKJ`AKJaAKJbAKJcAKJgAKJlAKJnAKJpAKJwAKJyAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJXAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJ|AKJAKJAKttttq. G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJ>AKJXAKJoAKttttq. G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AK=JCAKJGAKJ]AKJ_AKJAKttttq. G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J<AKJSAKJXAKJ\AKJAKJAKttttq. G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ]AKJ_AKJAKJAKJAKJAKttttq. G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J,AKJ0AKJHAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ/AKJ7AKJ:AKJ;AKJ<AKJ=AKJ>AKJRAKJYAKJ_AKJgAKJkAKJqAKJ{AKJ}AKJ~AKJAKttttq.rG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jy3}q(JAKJ9AKJAKuJ_@3(JaAKtqJI3(J_AKtqJc3}q(JAKJAKuJA3(JXAKtqJc3}q (J/AKJ2AKuJ%4(JAKtq Jm14}q (JAKJAKJAKuJԨ24(JXAKtq J6W4(JAKtq J4}q(JZAKJ9AKuJ4(JAKtqJg4(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ4(Uq(hUIIBTreeqttQJB#4(Uq(hUIIBTreeqttQJ4(JAKtqJ۫5}q(JWAKJXAKuJa) 5(JAKtqJc5(J,AKtqJh5(Uq(hUIIBTreeqttQJi5(J:AKtqJh5}q(J\AKJAKJAKuJڱ5}q(J]AKJDAKuJȪ5(JaAKtq Jw5(Uq!(hUIIBTreeq"ttQJzJ5(JaAKtq#J5(JXAKtq$J֥6(JaAKtq%J6(JAKtq&Jw)6(Uq'(hUIIBTreeq(ttQt(Usq)(hUIOBucketq*ttQtq+.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AKJKAKJ\AKJlAKJnAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JbAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJAKJAKJAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJ?AKJDAKJPAKJSAKJ\AKJaAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J=AKJcAKJkAKJmAKJ~AKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ)AKJ*AKJ+AKJ,AKJ-AKJ/AKJ0AKJ1AKJ2AKJ3AKJ4AKJ7AKJ9AK1J:AKJ;AKJ<AKJ=AK J>AK J?AKJAAKJCAK JDAK JEAKJFAKJGAKJHAKJJAKJKAKJLAKJMAKJOAKJPAKJRAKJSAKJTAKJUAKJVAK JWAKJXAK JZAKJ[AKJ\AK J]AKJ^AKJ_AKJaAKJbAK JcAK JdAKJeAKJgAK JhAKJiAKJjAKJkAKJlAKJmAKJnAKJoAKJqAKJrAKJsAKJtAKJuAKJvAKJwAKJyAKJzAKJ{AKJ|AKJ}AKJ~AKJAK JAKJAKJAKJAKJAKJAKJAKJAKJAK JAKJAK JAKJAK JAKJAK JAKJAK JAKJAKJAKJAKJAKJAKttttq.qG Kgg((UBTrees.IOBTreeqUIOBucketqtqNt.((JƄ/(J\AKtqJ4/}q(JwAKJAKuJY./(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ9/(JaAKtq J/(J=AKtq J/(JaAKtq Jn/(Uq (hUIIBTreeq ttQJh0}q(J?AKJKAKJAKuJ20}q(JPAKJDAKuJO50(Uq(hUIIBTreeqttQJdK0(J|AKtqJkT0(JbAKtqJs0(Uq(hUIIBTreeqttQJ70(JAKtqJ|0(J\AKtqJݙ0(JAKtqJK0(Uq(hUIIBTreeqttQJ?1(Uq(hUIIBTreeqttQJn1(Uq(hUIIBTreeqttQJ01(JAKtqJɧ'1}q (JZAKJXAKuJ()1(Uq!(hUIIBTreeq"ttQJz ,1(JAKtq#JZ1(JpAKtq$J:Uk1}q%(JVAKJDAKuJ=Ք1(Uq&(hUIIBTreeq'ttQJNB1(U q((hUIIBTreeq)ttQJ)1(JAKtq*Jy1(U!q+(hUIIBTreeq,ttQJ1(U"q-(hUIIBTreeq.ttQJ2(JAKtq/JPQ@2(JXAKtq0JsI2}q1(J+AKJ\AKuJ*2(JAKtq2J2}q3(JAKJ9AKuJ:2}q4(JAKJ:AKuJs2}q5(JAKJAKuJPx2}q6(J?AKJ>AKuJQ2(J_AKtq7J?}2(JbAKtq8J2(JMAKtq9J!3}q:(JAKJAKuJjB3}q;(J_AKJ^AKuJ:Q3(J+AKtqttQtq?."G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J|AKJAKJAKJAKttttq.!G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJCAKJGAKJRAKJlAKJnAKJAKttttq. G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJRAKJ^AKJ_AKJaAKJbAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ<AKJRAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ+AKJ-AKJRAKJXAKJZAKJ`AKJ}AKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ=AKJCAKJGAKJHAK JJAKJKAKJLAKJVAKJYAKJaAKJeAKJfAKJhAKJiAKJlAKJmAKJnAKJoAKJpAKJ{AKJ}AKJ~AKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ-AKJ_AKJ}AKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ+AKJ,AKJ.AKJ0AKJ3AKJ7AKJ9AKJ;AKJ=AKJ>AKJ?AKJBAKJCAKJDAKJGAKJKAKJOAKJRAKJSAKJ\AKJ]AKJ^AKJbAKJcAKJdAKJfAKJlAKJnAKJoAKJpAKJsAKJtAKJ{AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ1AKJ2AKJ4AKJ9AKJAAKJDAKJEAKJFAKJPAKJVAKJ[AKJcAKJeAK JjAKJzAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J5AKJ>AKJKAKJbAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJ9AKJOAKJ_AKJbAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J{AKJAKJAKJAKJAKJAKttttq.pG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jk,(J&AKtqJ|,}q(JAKJKAKJAKuJ",(J+AKtqJ,(JSAKtqJ,(JaAKtqJ,(J+AKtq J-}q (JAKJAKuJ$6-(JAKtq J[S-(J+AKtq J*-(J=AKtq JM-(JoAKtqJ-(JAKtqJ,-(J*AKtqJ4-(J+AKtqJǀ-(JAKtqJ-(U#q(UBTrees.IIBTreeqUIIBTreeqttQJ-(JpAKtqJ-(J9AKtqJR+-(U$q(hUIIBTreeqttQJ-(JAKtqJ-(U%q(hUIIBTreeqttQJ-}q(JsAKJaAKuJ.(J+AKtqJX|.(U&q(hUIIBTreeq ttQJh).(U'q!(hUIIBTreeq"ttQJ1.}q#(JAKJ9AKuJjC.(JAKtq$JU.}q%(JaAKJbAKJ9AKuJr.(JaAKtq&J4.(U(q'(hUIIBTreeq(ttQJ[.}q)(JRAKJAKJ9AKuJ..(JVAKtq*Js/}q+(J=AKJAKuJj$+/}q,(JEAKJ4AKuJF/}q-(JAKJAKuJL/(JAKtq.J!)R/}q/(J_AKJ]AKuJs/(J9AKtq0t(Uqq1(hUIOBucketq2ttQtq3.(G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJ^AKJ_AKJaAKJpAKJAKJAKJAKttttq.'G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JUAKJZAKJ]AKJbAKJeAKJpAKJAKJAKttttq.&G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ?AKJZAKJAKJAKttttq.%G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ,AKJ0AKJ9AKJ:AKJ<AKJCAKJKAKJRAKJSAKJXAKJZAKJ\AKJ^AKJ_AKJ`AKJfAKJgAKJ{AKJAKJAKJAKJAKJAKJAKJAKJAKttttq.$G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AK JCAKJGAKJMAKJSAKJ]AKJ_AKJbAKJgAKttttq.#G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J,AKJ0AKJ3AKJMAKJXAKJAKttttq.oG Kg2((UBTrees.IOBTreeqUIOBucketqtqNt.((Jo3&(J9AKtqJ%n&(JZAKtqJm&(J_AKtqJ&(JAKtqJ1)&(JCAKtqJ &(J9AKtq J^''}q (J\AKJRAKJaAKuJ2'(J9AKtq J'(JAKtq Jz$'}q (JwAKJbAKuJT'(U)q(UBTrees.IIBTreeqUIIBTreeqttQJ+ ((J2AKtqJ̻]((J9AKtqJ=n((J9AKtqJD((U*q(hUIIBTreeqttQJ]((U+q(hUIIBTreeqttQJ9((U,q(hUIIBTreeqttQJ((U-q(hUIIBTreeqttQJo((JAKtqJк )(U.q(hUIIBTreeqttQJ%4)}q(JAKJAKuJ\R)}q (J:AKJ+AKJ*AKuJy)}q!(J+AKJ9AKuJ`})(U/q"(hUIIBTreeq#ttQJ)(J\AKtq$J)(JRAKtq%J)(U0q&(hUIIBTreeq'ttQJ()(JXAKtq(J*(U1q)(hUIIBTreeq*ttQJ3*}q+(JAKJAKJKAKuJ8;*(JtAKtq,J`A>*(JKAKtq-J+*(J9AKtq.Jɤ*(JAKtq/J*(U2q0(hUIIBTreeq1ttQJ*}q2(JAKJ9AKuJʿ*(U3q3(hUIIBTreeq4ttQJ|%*(JAKtq5J+}q6(JAKJAKuJ(>+(JzAKtq7JX}+(J+AKtq8J_+(JAKtq9Jn+(J(AKtq:t(Upq;(hUIOBucketqAKJAAKJCAKJDAKJEAKJGAKJPAKJ\AKJcAKJoAKJwAKJzAKJAKttttq./G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ;AKJ<AKJCAKJGAKJVAKJ_AKJbAKJwAKJAKJAKJAKJAKJAKJAKJAKttttq..G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ,AKJ.AKJ3AKJ9AK J:AKJ;AKJ<AKJ=AKJ>AKJ?AKJBAKJKAKJMAKJRAKJSAKJXAKJYAKJZAKJ[AKJ\AKJ_AKJ`AKJaAK JcAKJgAKJkAKJmAKJoAKJpAKJsAKJuAKJwAKJ{AKJ~AKJAKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKttttq.-G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ>AKJ\AKttttq.,G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J<AKJ=AKJRAKJ\AKJaAKJAKttttq.+G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J0AKJDAKJPAKJXAKJAKttttq.*G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ1AKJ2AKJ4AKJ=AKJ>AKJAAKJDAKJEAKJMAKJPAKJSAKJ\AKJ]AKJeAKJwAKJyAKJ~AKJAKJAKJAKJAKJAKJAKttttq.)G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AK?JRAKJXAKJZAKJaAK JbAK JfAKJAKttttq.nG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JDC (U4q(UBTrees.IIBTreeqUIIBTreeqttQJ㩅 (JAKtqJ (U5q(hUIIBTreeq ttQJ (J=AKtq J (JAKtq JE!(U6q (hUIIBTreeq ttQJo AKJpAKuJnc"(JAKtqJ"(U9q(hUIIBTreeqttQJ_ "(U:q(hUIIBTreeqttQJ"(JAKtqJ"(U;q(hUIIBTreeqttQJM"(JAKtqJSx#}q (JAKJAKuJD)#(JAKtq!J)#}q"(JAKJAKJAKuJ;#(J9AKtq#Jp#(U$}q.(JLAKJHAKuJнW$(U>q/(hUIIBTreeq0ttQJ)\j$(U?q1(hUIIBTreeq2ttQJr$(U@q3(hUIIBTreeq4ttQJrr$}q5(J_AKJAKJAKuJn$(J9AKtq6J$(JAKtq7J)$(JAKtq8J$}q9(JAKJAKJAKuJz$}q:(J_AKJ^AKuJ=$}q;(JAKJAKJAKuJ!:%(JAKtqJ=%(JoAKtq?J9%(JPAKtq@J%(UAqA(hUIIBTreeqBttQJkw%(UBqC(hUIIBTreeqDttQJ*&(J?AKtqEt(UoqF(hUIOBucketqGttQtqH.BG Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ3AK JCAKJcAKJeAK JhAKJjAKJlAKJnAKttttq.AG Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AK JKAKJRAKJSAKJZAKJ^AKJ_AKJAKttttq.@G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ_AKJAKJAKttttq.?G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ9AKJ?AKJKAKJbAKJpAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.>G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ+AKJ2AKJ;AKJ=AKJ?AKJDAKJMAKJSAKJWAKJZAKJ\AKJ]AKJgAKJhAKJiAKJsAKJtAKJuAKJvAKJAKJAKttttq.=G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J\AKJcAKJgAKJAKttttq.<G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J,AKJ0AKJ1AKJ2AKJ3AKJ4AKJ5AKJDAKJbAKJAKJAKJAKJAKJAKttttq.;G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJCAKJDAKJGAKJ_AKJ`AKJhAKJAKJAKttttq.:G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J:AKJ;AKJ<AKJKAKttttq.9G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJAKJAKJAKttttq.8G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JDAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.7G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ,AKJ1AKJ9AKJ>AKJAAKJBAKJCAKJZAKJ]AKJ_AKJ}AKJAKJAKJAKJAKJAKttttq.6G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J1AKJ2AKJ3AKJ4AKJ5AKttttq.5G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ,AKJ0AKJ_AKJAKJAKJAKJAKJAKJAKttttq.4G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ>AKJCAKJGAKJSAKJcAKJAKttttq.mG KgV((UBTrees.IOBTreeqUIOBucketqtqNt.((JUh(J[AKtqJM}q(J*AKJ&AKuJK:(JcAKtqJS(UCq(UBTrees.IIBTreeqUIIBTreeq ttQJdzr(UDq (hUIIBTreeq ttQJ{(UEq (hUIIBTreeq ttQJ;(UFq(hUIIBTreeqttQJ(JAKtqJ>(JAKtqJ(J9AKtqJ\5(UGq(hUIIBTreeqttQJzE(JbAKtqJI}q(J>AKJAKuJTPJ(UHq(hUIIBTreeqttQJ\Q(J^AKtqJݮa(UIq(hUIIBTreeqttQJf@f(JoAKtqJRs(JAKtqJا}q(J?AKJ>AKuJ(UJq(hUIIBTreeq ttQJx}q!(J=AKJXAKJAKuJX#(J3AKtq"J?#}q#(J_AKJAKJAKuJc.(JOAKtq$J1>(JAKtq%J'~U(JAKtq&JV(JAKtq'Jk(JXAKtq(J| m(JaAKtq)JG"~}q*(JAK JXAKuJ^(UKq+(hUIIBTreeq,ttQJR}q-(J_AKJAKuJN7(JAKtq.Jr(ULq/(hUIIBTreeq0ttQJ`(J+AKtq1J\ (JAKtq2J~ (JAKtq3J5 (JAKtq4JQ" (UMq5(hUIIBTreeq6ttQJm;% (JAKtq7JH* }q8(J_AKJ9AKuJ<$/ }q9(J_AKJ]AKuJT6 (J9AKtq:JA (UNq;(hUIIBTreeqttQtq?.NG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJyAKJAKJAKttttq.MG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJaAKJbAK JAKttttq.LG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAKJAKJAKttttq.KG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJAKJAKJAKJAKttttq.JG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ9AK>JCAKJKAKJRAK JZAK J^AKJ_AK J`AKJaAKJbAK JcAK JhAKJpAKJwAKJyAKJAKJAKJAK JAKJAKttttq.IG Kgr((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ)AKJ+AKJ-AKJ3AKJ4AKJ9AKJ:AKJ<AKJ=AKJ?AKJAAKJDAKJEAKJHAKJKAKJLAKJOAKJPAKJRAK JSAKJXAK JZAKJ]AKJ_AK J`AKJaAKJbAK JeAKJfAKJgAKJpAKJwAKJ}AKJAKJAKJAKJAK JAKJAK JAKJAKJAKJAKJAKJAKttttq.HG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAKJAKJAKJAKJAKttttq.GG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ`AKJaAKJbAKJAKttttq.FG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJSAKJXAKJ]AKJAKJAKttttq.EG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JRAKJbAKJgAKJAKttttq.DG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ:AKJ=AKJ>AKttttq.CG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJOAKJRAKJ^AKJpAKJzAKJ}AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.lG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jm)(UOq(UBTrees.IIBTreeqUIIBTreeqttQJ ](UPq(hUIIBTreeqttQJZ}q (JAKJVAKuJ.+(J9AKtq J[#}q (JAKJ>AKJAKuJ(JpAKtq Jʤ(UQq (hUIIBTreeqttQJK(J/AKtqJ(URq(hUIIBTreeqttQJ:%(J+AKtqJ /(USq(hUIIBTreeqttQJ:k/(JAKtqJ0(JaAKtqJR(J9AKtqJAg}q(JAKJAKJbAKuJSi(JXAKtqJ58}q(JAKJAKuJ}q(J{AKJ}AKuJQ(JAKtqJC(JAKtqJ(JAKtqJ7}q(JAKJAKJAKuJ(JAKtq JM2(J/AKtq!J]L(UTq"(hUIIBTreeq#ttQJG(JKAKtq$JJt}q%(J-AKJ)AKuJ(J9AKtq&J(J+AKtq'J(JoAKtq(JRZ(J9AKtq)J2h}q*(JAKJAKJKAKuJG#(J\AKtq+J]-(JAKtq,Je/(JAKtq-J61(J>AKtq.J6(JAKtq/JH(JpAKtq0Jc(UUq1(hUIIBTreeq2ttQJB(UVq3(hUIIBTreeq4ttQJa(UWq5(hUIIBTreeq6ttQJ}q7(JJAKJAKuJ(JAKtq8t(Umq9(hUIOBucketq:ttQtq;.WG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJAKJAKJAKJAKttttq.VG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ?AKJSAKJXAKJZAKJAKttttq.UG Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJaAKJbAKJAKJAKJAKJAKttttq.TG Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ>AKJRAKJZAKJ\AKJaAKJbAKJAKJAKttttq.SG Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJCAKJGAKJKAKJbAKJAKJAKJAKJAKJAKttttq.RG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J]AKJ_AKJAKJAKJAKJAKttttq.QG Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJDAKJXAKJ_AKJAKJAKJAKJAKttttq.PG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ,AKJ0AKJ9AK J:AKJ;AKJ<AKJ?AKJCAKJDAKJRAKJSAKJUAKJYAKJZAKJ[AKJ\AKJaAKJdAKJeAKJgAKJlAKJnAKJpAKJyAKJ{AKJAKJAKJAKttttq.OG Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ9AKJ\AKJaAKJpAKJwAKJAKJAKJAKttttq.kG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Je(UXq(UBTrees.IIBTreeqUIIBTreeqttQJa}q(JAKJAKJSAKuJ6(J?AKtqJQ(J9AKtq Jg(UYq (hUIIBTreeq ttQJ6(J&AKtq Je(J_AKtq Je}q(J?AKJOAKuJi(J9AKtqJ(JAKtqJ(J:AKtqJ(UZq(hUIIBTreeqttQJ}q(JbAKJ9AKuJ:(JAKtqJS}q(JUAKJ=AKuJ#(U[q(hUIIBTreeqttQJ(JAKtqJʺ}q(J+AKJKAKuJ؞p}q(J_AKJ^AKuJ q(J+AKtqJȌ(JaAKtqJ;(U\q(hUIIBTreeqttQJ+}q (JRAKJAKuJ(JCAKtq!JM(JAKtq"J" (JAKtq#J~R}q$(J+AKJBAKJ`AKuJU!(JAKtq%J)}q&(JSAKJVAKuJiD(JyAKtq'J2D(J9AKtq(Jq(U]q)(hUIIBTreeq*ttQJAs(U^q+(hUIIBTreeq,ttQJ((JAKtq-JL(JAKtq.Jڨ}q/(JAKJ\AKuJ(U_q0(hUIIBTreeq1ttQJU1(J9AKtq2J$(U`q3(hUIIBTreeq4ttQJ-(Uaq5(hUIIBTreeq6ttQt(Ulq7(hUIOBucketq8ttQtq9.aG Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJBAKJCAKJDAKJGAKJ]AKJ_AKJaAKJcAKJtAKJAKttttq.`G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJSAKJAKJAKttttq._G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ+AKJ/AKJ1AKJ2AKJ3AKJ4AKJ5AKJ9AKJ;AKJ?AKJAAKJBAKJCAKJDAKJEAKJGAKJKAK JLAKJRAKJSAKJVAKJWAKJXAKJZAK J\AKJ]AKJ^AKJ_AK J`AKJaAKJbAKJgAKJhAKJpAKJsAKJtAKJuAKJyAKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.^G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJKAKJSAKJWAKJ^AKJ_AKJAKJAKttttq.]G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ=AKJ>AKJRAKJAKttttq.\G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ_AKJaAKJ~AKttttq.[G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J:AKJDAKJPAKJAKttttq.ZG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJCAKJGAKJUAKJYAKJZAKJ]AKJ_AKJxAKJ~AKJAKJAKJAKttttq.YG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJSAKJVAKJXAKJaAKJwAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.XG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ<AKJRAKJXAKJ~AKJAKttttq.jG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JG(J9AKtqJ (J=AKtqJ)(J0AKtqJ2(JAKtqJ*7(Ubq(UBTrees.IIBTreeq UIIBTreeq ttQJbP(JAKtq J]P(J/AKtq JTu(Ucq (h UIIBTreeqttQJy(JaAKtqJ?(Udq(h UIIBTreeqttQJNŶ(JAKtqJ(Ueq(h UIIBTreeqttQJ#(JAKtqJr@(JuAKtqJBM(Ufq(h UIIBTreeqttQJD`}q(JgAKJ=AKuJq(JSAKtqJ{(JBAKtqJ t~}q(J?AKJ\AKuJ|}q(JAKJaAKuJ(JXAKtqJb}q(JAKJ9AK uJx(JAKtq J}q!(J+AK J*AKJ(AKuJ'(J.AKtq"J^E(JAKtq#JK(JAKtq$JA(JAKtq%J3(JpAKtq&JI[}q'(J_AKJbAKJ9AKuJġ }q((J+AKJ*AKJ(AKuJ2(J>AKtq)JJ;}q*(JAKJRAKuJZL(J9AKtq+J[](JaAKtq,Je(J9AKtq-Jn}q.(JAKJ\AKuJ(JAKtq/J(JaAKtq0J$w(JAKtq1JY(J+AKtq2J(JAKtq3J(JAKtq4J:(Ugq5(h UIIBTreeq6ttQJA(JAKtq7t(Ukq8(hUIOBucketq9ttQtq:.gG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JMAKJaAKJAKJAKJAKttttq.fG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJKAKJwAKJAKttttq.eG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJCAKJGAKJSAKJXAKttttq.dG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J=AKJXAKJ\AKJgAKttttq.cG Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJ:AKJ<AKJSAKJcAKJgAKJyAKJAKJAKttttq.bG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJAKJAKJAKttttq.iG Kgz((UBTrees.IOBTreeqUIOBucketqtqNt.((Jw (J\AKtqJ B (J9AKtqJ/ }q(J.AKJ,AKuJy }q(J/AKJ?AKuJ (Uhq(UBTrees.IIBTreeq UIIBTreeq ttQJ  }q (JRAKJAKuJ׳(JRAKtq J$(JXAKtq J(J3AKtqJ(J?AKtqJ}q(JSAKJVAKuJ;E(J9AKtqJN(J>AKtqJb(J9AKtqJ}q(JCAKJGAKuJ(JAKtqJ(Uiq(h UIIBTreeqttQJlW(J9AKtqJ_(Ujq(h UIIBTreeqttQJs(J9AKtqJ^vb(JKAKtqJT}q(JAKJ,AKJ0AKuJ߂(JbAKtqJ((JAKtqJ@߲}q (JAKJVAKJBAKuJr(JaAKtq!J (Ukq"(h UIIBTreeq#ttQJ6(Ulq$(h UIIBTreeq%ttQJ(Umq&(h UIIBTreeq'ttQJ((Unq((h UIIBTreeq)ttQJ07(Uoq*(h UIIBTreeq+ttQJX(JAKtq,Jr(JAKtq-J%#(JAKtq.J](JMAKtq/J G(J9AKtq0t(Ujq1(hUIOBucketq2ttQtq3.oG Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ=AKJ?AKJCAKJDAKJGAKJAKttttq.nG Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AK JCAKJGAKJSAKJaAKJbAKJpAKJAKJAKJAKJAKttttq.mG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JbAKJwAKJ{AKJAKttttq.lG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJfAKJ}AKJAKttttq.kG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ/AKJ1AKJ2AKJ4AKJ=AKJ>AKJAAKJCAKJDAKJEAKJKAKJPAKJRAKJXAKJZAKJ\AKJ_AKJhAKJoAKJzAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.jG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ]AKJ_AKJAKttttq.iG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJ?AKJDAKJoAKJAKttttq.hG KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJKAKJRAKJ^AKttttq.hG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JI(Upq(UBTrees.IIBTreeqUIIBTreeqttQJ(JbAKtqJB(JAKtqJ (J=AKtq J (J\AKtq J (J\AKtq J }q (JAKJRAKJXAKuJX (JAKtq JV\C (JAKtqJI }q(JJAKJ}AKuJ (J9AKtqJ_ (J9AKtqJ (JAKtqJJ (JAKtqJI (J:AKtqJq[ (JAKtqJ/e (JOAKtqJƢ }q(J+AKJ[AKuJF (Uqq(hUIIBTreeqttQJY (J(AKtqJW/ (JKAKtqJD }q(JAKJAKJaAKuJNL }q(JSAKJ\AKuJɚ] }q(JbAKJAKJ9AKuJ$d }q(JAK J9AKuJ dd }q (J;AKJoAKuJ]=i (JRAKtq!Jc (J/AKtq"J. }q#(J:AKJAKuJ' }q$(JAKJAKuJ> (JAKtq%Jf (J\AKtq&J (JAKtq'JI (JoAKtq(Ja_ (J9AKtq)J (J9AKtq*J (Urq+(hUIIBTreeq,ttQJA (Usq-(hUIIBTreeq.ttQJR }q/(JAKJAKuJtc }q0(J?AKJ\AKuJկh (Utq1(hUIIBTreeq2ttQt(Uiq3(hUIOBucketq4ttQtq5.tG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJSAKJZAKJcAKJAKttttq.sG Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ?AKJJAKJUAKJeAKJAKJAKttttq.rG KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J_AKJAKJAKJAKttttq.qG Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J7AKJ:AKJZAKJAKJAKJAKJAKJAKttttq.pG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ9AKJ=AKJ>AKJ?AKJaAK JbAK J|AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.gG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Ji(J>AKtqJ\(J:AKtqJs(JRAKtqJF(Uuq(UBTrees.IIBTreeqUIIBTreeq ttQJ35(J9AKtq J}q (JAKJ9AKuJa#(J9AKtq J;(JAKtq Ji(JAKtqJ1_}q(J/AKJgAKuJ}q(J?AKJbAKuJ(JaAKtqJxt(JAKtqJ}q(JoAKJAKuJ(JZAKtqJs(JAKtqJh(J+AKtqJ}q(JAK J>AKuJ}q(J_AKJ^AKuJT*"(J9AKtqJ"(J9AKtqJƐ%(JBAKtqJکS(J;AKtqJVc(J_AKtqJ=(JSAKtqJ((JAKtqJ#?(Uvq (hUIIBTreeq!ttQJ(Uwq"(hUIIBTreeq#ttQJY}q$(JwAKJuAKJKAKuJ (JAKtq%J'(Uxq&(hUIIBTreeq'ttQJE(JAKtq(JAH(J=AKtq)J@nj(Uyq*(hUIIBTreeq+ttQJ֍(JAKtq,J%1(JAKtq-J:(JaAKtq.J$}q/(JAKJAKuJo(JaAKtq0Jh>I(J:AKtq1JeZ}q2(JbAKJAKuJHq{(JAKtq3J}q4(JAKJ>AKJAKuJϹ(JbAKtq5J(J9AKtq6J*}q7(J\AKJZAKJAKuJ8(JAKtq8J'}q9(JAKJ9AKJAKuJ F)(Uzq:(hUIIBTreeq;ttQJB(J9AKtqJ!s(JAKtq?Jt(J9AKtq@J|(JAKtqAt(UhqB(hUIOBucketqCttQtqD.zG Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ9AKJ:AKJBAKJSAKJZAKJ\AKJ_AKJbAKJcAKJAKJAKJAKJAKJAKttttq.yG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JaAKJbAK JAK JAKJAKttttq.xG Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJCAKJGAKJSAKJ[AKJwAKJ~AKJAKJAKJAKJAKttttq.wG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JJAKJKAKJfAKJhAKJ~AKttttq.vG Kgn((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ+AKJ-AKJ/AKJ2AKJ3AKJ4AKJ5AKJ9AKJ:AKJ;AKJ<AKJ=AKJ?AKJCAKJDAKJEAKJFAKJGAKJHAKJKAK JLAKJMAKJPAKJQAKJRAK JSAK JTAKJVAKJWAKJXAKJZAK J[AKJ\AKJ]AKJ_AK JaAKJbAKJcAKJdAKJgAKJhAKJiAKJjAKJkAKJlAKJmAKJnAKJoAKJpAKJrAKJtAKJuAKJvAKJwAKJyAKJzAKJ{AKJ}AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAK JAKJAKJAKttttq.uG KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JaAKJcAKJeAKJhAKJiAKttttq.fG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J (U{q(UBTrees.IIBTreeqUIIBTreeqttQJ'4(J[AKtqJH(J>AKtqJGX(JbAKtq J[j`}q (JbAKJAKuJ`}q (J~AKJ9AKuJ(J\AKtq J(J9AKtq Jc (U|q(hUIIBTreeqttQJPU(JAKtqJa(J&AKtqJ(J{AKtqJ(U}q(hUIIBTreeqttQJA(U~q(hUIIBTreeqttQJ{(J9AKtqJ0(J;AKtqJ?(J=AKtqJy(JKAKtqJc}q(J?AKJ<AKJ9AKuJ(JAKtqJ(Uq(hUIIBTreeqttQJ5}q(J^AKJAKJaAKuJ3(JXAKtq J(Uq!(hUIIBTreeq"ttQJ]*(Uq#(hUIIBTreeq$ttQJsR(JAKtq%Jf(J9AKtq&Jop}q'(J=AKJSAKJ`AKuJJ(Uq((hUIIBTreeq)ttQJ2(J9AKtq*JW(Uq+(hUIIBTreeq,ttQJ[j(J=AKtq-J}q.(J\AKJXAKuJG(JAKtq/J!P#(Uq0(hUIIBTreeq1ttQJ$(J9AKtq2Jn'(JAKtq3J'(JAKtq4J 5(JAKtq5JƷN(J/AKtq6J(JoAKtq7J?(JAKtq8J(JLAKtq9J@ }q:(J_AKJ^AKJaAKuJ;R:(Uq;(hUIIBTreeq(hUIIBTreeq?ttQJj}q@(JgAKJAKJ9AKuJ(JaAKtqAJ-(JAKtqBJ (JAKtqCJ+,(JRAKtqDJ @(JAKtqEt(UgqF(hUIOBucketqGttQtqH.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ,AKJ1AKJ2AKJ3AKJ4AKJ5AKJ>AKJDAKJKAKJRAKJZAKJ]AKJ_AK JaAKJpAKJwAKJ{AKJ}AKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ9AKJ=AKJ?AKJCAKJRAKJVAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JpAKJ{AKJ}AKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ>AKJSAKJbAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JDAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ/AKJ?AKJUAKJYAKJZAKJ\AK ttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JRAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJwAKJ~AKJAKttttq.~G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAKJAKJAKttttq.}G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ?AKJRAKJZAKJAKttttq.|G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJ:AKJ<AKJ?AKJ]AKJ_AKJAKJAKJAKJAKJAKttttq.{G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ1AKJ2AKJDAKJPAKJSAKJ]AKJeAKJkAKJmAKJnAKJvAKJ{AKJAKJAKJAKttttq.eG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J}(Uq(UBTrees.IIBTreeqUIIBTreeqttQJs(J+AKtqJ\(JbAKtqJh(Uq (hUIIBTreeq ttQJ+}q (JAKJAKuJ(JAKtq J$(J9AKtq J~(}q(JoAKJ+AKJRAKuJj4(JRAKtqJL6(JoAKtqJ<}q(J+AKJAKuJG(Uq(hUIIBTreeqttQJ#O(J\AKtqJ$f}q(J_AKJ]AKuJz}q(JAKJAKuJQ}q(J?AKJAK uJϫ(Uq(hUIIBTreeqttQJ]y(J9AKtqJ(JXAKtqJl4(JAKtqJ(Uq(hUIIBTreeqttQJ(JWAKtqJ5(JAKtq J[I(J9AKtq!J`(J2AKtq"Jg(JAKtq#J~(JKAKtq$Ji (JAKtq%J(JXAKtq&J(Uq'(hUIIBTreeq(ttQJo}q)(JAKJAKuJگ(J&AKtq*J(JAKtq+J?8(J9AKtq,JvV(JAKtq-J<(Uq.(hUIIBTreeq/ttQJ (Uq0(hUIIBTreeq1ttQJڒ}q2(J/AKJ.AKJ?AKuJ}q3(J+AKJ;AKuJӀ}q4(JAKJAKuJR(JAKtq5J>(JAKtq6J#=}q7(JmAKJeAKJSAKuJZ{(J\AKtq8J(Uq9(hUIIBTreeq:ttQJi(Uq;(hUIIBTreeq(J_AKJAKuJǀI(J9AKtq?Jcc(Uq@(hUIIBTreeqAttQJ(UqB(hUIIBTreeqCttQJ (JXAKtqDJT1(UqE(hUIIBTreeqFttQJ)}qG(J>AKJcAKJ+AKuJL=(JaAKtqHJ귃(UqI(hUIIBTreeqJttQJK(J{AKtqKJ(JAKtqLJ (JAKtqMt(UfqN(hUIOBucketqOttQtqP.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ,AKJ-AKJ/AKJ0AKJ1AKJ2AKJ3AKJ:AKJ<AKJ=AKJCAKJDAKJGAKJHAKJLAKJMAKJOAKJPAKJSAKJTAKJUAKJVAKJWAKJXAKJ[AKJ\AKJ]AKJbAKJcAKJdAKJgAKJhAKJiAKJjAKJkAKJlAKJmAKJnAKJoAKJqAKJrAKJsAKJtAKJuAKJvAKJwAKJyAKJzAKJ{AKJ}AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJMAKJaAKJbAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JOAKJTAKJbAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ/AKJ=AKJ>AKJXAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ3AKJ?AKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ:AKJ?AKJRAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J?AKJBAKJPAKJXAKJoAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ/AKJaAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJ]AKJ_AKJbAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ+AKJ:AKJ>AKJKAKJRAKJXAKJ_AKJ`AKJaAKJbAK JyAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ/AKJ7AKJ:AK J<AKJ?AKJ\AKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ+AKJ-AKJ/AKJ1AKJ2AKJ?AKJAAKJHAKJKAK JRAKJSAKJTAKJVAKJWAKJ]AKJ^AKJ_AKJ`AKJfAKJrAKJwAKJzAKJAKJAKJAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J;AKJaAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ.AKJ/AKJ2AKJ:AKJ;AKJ=AKJ>AK J?AK JHAKJKAKJXAKJ^AKJ_AKJaAKJAKJAKJAKJAKttttq.dG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J8}q(J>AKJ+AKJ:AKuJ(J9AKtqJڃ(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ.z}q (JKAKJAKuJ̊ (JbAKtq J.}q (JAKJAKuJ4a(J+AKtq J (J?AKtq J=<(JAKtqJp(J+AKtqJƬy(JgAKtqJz(J/AKtqJ(Uq(hUIIBTreeqttQJ&(JgAKtqJN(Uq(hUIIBTreeqttQJ\(JRAKtqJv (JAKtqJW@(Uq(hUIIBTreeqttQJ(J?AKtqJ2(J9AKtqJ[(J\AKtqJ(J9AKtqJ)d (J9AKtqJ$ (J9AKtq J(J&AKtq!JV}q"(J+AKJoAKuJ`(JbAKtq#JLx(JAKtq$Jᡈ(JAKtq%Je}q&(J{AKJAKuJ(Uq'(hUIIBTreeq(ttQJs(J9AKtq)J6b:}q*(JAKJAKuJAWK(Uq+(hUIIBTreeq,ttQJPM(J9AKtq-J (JAKtq.J(JZAKtq/JnN(JAKtq0Jh(JSAKtq1JL(J/AKtq2JL(Uq3(hUIIBTreeq4ttQJ}q5(JnAKJlAKuJ_(Uq6(hUIIBTreeq7ttQJڱ(Uq8(hUIIBTreeq9ttQJA(JKAKtq:J (Uq;(hUIIBTreeqttQJn(&(JoAKtq?J;(Uq@(hUIIBTreeqAttQJ'}qB(JnAKJlAKut(UeqC(hUIOBucketqDttQtqE.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ\AKJgAKJuAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JZAKJaAKJbAKJwAKJAKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J3AKJ9AKJ\AKJaAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ+AK J,AKJ.AKJ0AKJ9AK;J:AKJ<AKJ=AKJ>AKJ?AK JCAK JDAKJGAKJJAKJKAKJMAKJOAKJPAKJRAKJSAKJVAKJXAKJYAKJZAKJ[AKJ\AKJ^AKJ_AKJ`AKJaAK JbAKJcAKJeAKJgAKJlAKJmAKJnAKJoAKJpAKJsAKJtAKJuAKJwAKJyAKJzAKJ{AKJ~AKJAKJAKJAKJAKJAKJAKJAK JAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ=AKJHAKJJAKJKAKJ{AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ?AKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJ^AKJ_AKJaAKJAKJAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJCAKJGAKJ]AKJ_AKJbAKJlAKJnAKJwAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ.AKJ/AKJ7AKJ:AKJ;AKJ<AKJ=AKJ>AKJ?AK JBAKJCAKJDAKJGAKJJAKJKAKJOAKJPAKJRAKJSAKJUAKJVAKJXAK JYAKJ[AKJ\AKJaAKJbAKJfAKJgAKJlAKJnAKJoAKJqAKJsAKJwAKJxAKJ|AKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ+AKJ2AKJDAKJVAKJ]AKJkAKJtAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ7AKJ:AKJ?AKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JVAKJXAKJaAKJAKttttq.cG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jx}q(JKAKJAKuJz^(Uq(UBTrees.IIBTreeqUIIBTreeqttQJW(Uq(hUIIBTreeq ttQJ?(J9AKtq Jg(Uq (hUIIBTreeq ttQJÞj(JXAKtq Jao(JSAKtqJ v}q(JAKJAKuJ(JAKtqJl(JpAKtqJ{<(JbAKtqJN(Uq(hUIIBTreeqttQJ24(JAKtqJ[G(J_AKtqJj(JAKtqJP(JAKtqJ 8(JaAKtqJJ(Uq(hUIIBTreeqttQJOeS(JAKtqJ(JAKtqJ'}q(JAKJKAKJRAKuJ}q(J_AKJ]AKuJRٽ(JAKtq Jӈ}q!(J7AKJ:AKuJ(JMAKtq"J(JbAKtq#Jn(JaAKtq$JS)}q%(JKAKJAKuJ>(J9AKtq&JE)y}q'(JAKJAKuJX(J/AKtq(J*(JAKtq)J`(JbAKtq*J,}q+(JAKJAK JKAKuJ(JAKtq,J}q-(JRAKJaAKuJ^(J-AKtq.JҤ}q/(J_AKJ]AKJcAKuJ(JMAKtq0J#(J+AKtq1J}q2(JAKJaAKJAKuJt>}q3(JAKJbAKuJ#h(J9AKtq4J}q5(JVAKJbAKuJGHC(JAKtq6J5E(JAKtq7Jtdu(JAKtq8J(Uq9(hUIIBTreeq:ttQJ^b}q;(JSAKJAKuJc&(JAKtqttQJ?F(Uq?(hUIIBTreeq@ttQJ!(JtAKtqAJ7(UqB(hUIIBTreeqCttQt(UdqD(hUIOBucketqEttQtqF.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ?AKJXAKJ\AKJAKJAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJ;AKJ=AKJ>AKJ?AKJKAKJZAKJ\AKJuAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJXAKJZAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JRAKJZAKJ^AKJ_AKJaAKJbAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J:AKJ;AKJ<AKJXAKJbAKJeAKJwAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ/AKJaAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ,AKJ-AKJ0AKJDAKJKAKJPAKJ]AK J^AKJ_AKJ`AKJoAKJvAKJ}AKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ>AKJDAKJ\AKttttq.bG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J~-}q(J>AKJ\AKuJ>(Uq(UBTrees.IIBTreeqUIIBTreeqttQJd}q(JAKJAKuJp(J9AKtq J?s(JAKtq J~}q (J)AKJAKuJ}q (J:AKJ>AKuJ{(JSAKtq JO(JAKtqJX(Uq(hUIIBTreeqttQJv(JAKtqJ2(JAKtqJ4(Uq(hUIIBTreeqttQJd}q(JAKJAKuJv(J9AKtqJL3(J9AKtqJgN}q(JjAKJAKJXAKuJS(JAKtqJD"f(JRAKtqJ~M(JAKtqJj(JXAKtqJF}(JAKtqJ}q(JeAKJ*AKJaAKuJ%(Uq(hUIIBTreeq ttQJ(Uq!(hUIIBTreeq"ttQJ(Uq#(hUIIBTreeq$ttQJ`[(J\AKtq%Jq(JZAKtq&J,&}q'(JKAKJAKuJN)}q((J_AKJ^AKuJYr}q)(J+AKJ=AKuJqh(JAKtq*J(JAKtq+J (J&AKtq,J>#(JoAKtq-JD<(JAKtq.Jf(Uq/(hUIIBTreeq0ttQJ p(JaAKtq1Jމp(Uq2(hUIIBTreeq3ttQJ[ʂ}q4(JAKJ|AKJAKuJU(JAKtq5JJ(Uq6(hUIIBTreeq7ttQJX}q8(JAKJpAKuJ_(J0AKtq9Jx1}q:(J_AKJ`AKuJߌG}q;(J\AKJbAKJXAKuJI(JAKtq(hUIOBucketq?ttQtq@.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J=AKJ?AKJCAKJGAKJKAKJRAKJ`AKJaAKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJOAKJAKJAK JAKJAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JZAKJbAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJ^AKJ_AKJaAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ:AKJ<AKJ=AKJ?AKJSAKJXAKJbAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AK J>AKJKAKJ\AKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ<AKJWAKJXAKJZAKJ\AKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ>AKJ?AK JaAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ:AKJ?AKJMAKJSAKJ\AKJ{AKJAKttttq.aG Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((Jcq(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ'(JKAKtqJs}q(JsAKJ=AKuJ(J+AKtq J-|(Uq (hUIIBTreeq ttQJ(JAKtq Jծ}q (JAKJAKuJ(J\AKtqJɂ(JAKtqJ}q(JAKJAKJAKuJ(J?AKtqJ˿(Uq(hUIIBTreeqttQJ`}q(JZAKJ^AKuJCw(JAKtqJ4 6}q(JAKJAKuJh(J+AKtqJp(J<AKtqJ;u(JcAKtqJ~(J9AKtqJo}q(JGAKJCAKJ9AKuJ(JAKtqJ8(J9AKtqJϧ(JAKtqJ}(Uq(hUIIBTreeq ttQJZ(J9AKtq!Jta}q"(JBAKJaAKuJph(Uq#(hUIIBTreeq$ttQJ;&(JaAKtq%J߀(J=AKtq&J?(JSAKtq'J5(JKAKtq(J1/(J+AKtq)Jw(Uq*(hUIIBTreeq+ttQJU}q,(JAKJAKuJk(J+AKtq-JY(JAKtq.J(J>AKtq/J&(JAKtq0J)}q1(J+AKJ9AKuJ p(J/AKtq2JO&|(Uq3(hUIIBTreeq4ttQJ#(J9AKtq5JC}q6(JbAKJaAKuJPQ(JkAKtq7J,q(Uq8(hUIIBTreeq9ttQJ(JAKtq:J;p(Uq;(hUIIBTreeqJӝ(JAKtq?J(JAKtq@J:ɝ(JbAKtqAJP(UqB(hUIIBTreeqCttQJк(J9AKtqDJ2}qE(J?AKJwAKuJ#(UqF(hUIIBTreeqGttQt(UbqH(hUIOBucketqIttQtqJ.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J>AKJ\AKJ^AKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ]AKJ_AKJAKJAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ?AKJCAK JGAK JKAKJXAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ?AKJCAKJGAKJAKJAK ttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJKAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ?AKJJAKJOAKJSAKJ[AKJ]AKJcAKJsAKJtAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JCAKJGAKJKAKJlAKJnAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJMAKJRAKJYAKJZAKJ\AKJ]AKJ_AKJwAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ>AKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J)AKJ+AKJ-AKJ/AKJ1AKJ2AKJ4AKJ5AKJ:AKJ;AKJ<AKJ=AKJ>AKJ?AKJCAKJDAKJEAKJFAKJGAKJHAKJLAKJMAKJPAKJQAKJRAKJSAKJTAKJVAKJWAKJXAKJZAKJ[AKJ\AKJ]AKJcAKJdAKJgAKJhAKJiAKJjAKJkAKJlAKJmAKJnAKJoAKJrAKJtAKJuAKJvAKJwAKJyAKJzAKJ{AKJ}AKJ~AKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ+AKJ-AKJ/AKJ2AKJ3AKJ9AKJ;AKJ>AKJ?AKJAAKJBAKJCAKJDAKJGAKJKAKJLAKJMAKJOAKJPAKJRAKJSAKJVAKJXAKJ[AKJ\AKJ]AKJ_AK JaAKJbAKJcAKJoAKJpAKJuAKJwAKJyAKJ{AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.`G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J(JKAKtqJ$(J=AKtqJ(JXAKtqJ(J{AKtqJ>(J+AKtqJL(J>AKtq JX#(JaAKtq J9<(Uq (UBTrees.IIBTreeq UIIBTreeq ttQJPG}q(J]AKJcAKJSAKuJ=W(JbAKtqJH}p(J9AKtqJv(JZAKtqJ(JAKtqJh(Uq(h UIIBTreeqttQJ}q(JVAKJ\AKJ[AKuJ(J9AKtqJW(JAKtqJ}q(J9AKJAKuJb(JAKtqJX}q(JOAKJAKuJV}q(J^AKJaAKJ`AKuJޗ(J:AKtqJ (Uq(h UIIBTreeqttQJ(Uq(h UIIBTreeq ttQJ79(J9AKtq!JG<}q"(JAKJAKJcAKuJ"@}q#(JRAKJAKJAKuJU(JAKtq$J5q(Uq%(h UIIBTreeq&ttQJ^x(J+AKtq'Jɾ(J_AKtq(JB(Uq)(h UIIBTreeq*ttQJ s}q+(JGAKJCAKJ(AKuJR(J9AKtq,J"(JaAKtq-J(Uq.(h UIIBTreeq/ttQJ֝}q0(JSAKJAKuJo2(J_AKtq1t(Uaq2(hUIOBucketq3ttQtq4.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J^AKJaAKJcAKJyAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJSAKJXAKJ\AKJ_AKJ`AKJaAKJoAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ_AKJAKJAK JAKJAKJAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JlAKJnAKJ|AKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JzAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJcAKJyAKJAKttttq._G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((JY(J9AKtqJ(JAKtqJ^(JAKtqJ*2&(Uq(UBTrees.IIBTreeqUIIBTreeq ttQJbf>(JVAKtq J(J?AKtq JD(JAKtq J (JAKtq J(JAKtqJ6(JAKtqJ>(JzAKtqJZ(JAKtqJ}q(J/AKJ?AKuJu}q(JAKJAKuJ(Uq(hUIIBTreeqttQJ(Uq(hUIIBTreeqttQJq(Uq(hUIIBTreeqttQJ*R}q(JgAKJRAKJ9AKuJx`(J\AKtqJشe(Uq(hUIIBTreeqttQJ}@t(JpAKtqJw}q(JsAKJuAKuJ<(Uq (hUIIBTreeq!ttQJ-ӎ(JgAKtq"JSQ}q#(JbAKJAKuJA"(Uq$(hUIIBTreeq%ttQJ(JRAKtq&J`(JAKtq'JI#(JzAKtq(J*='(J9AKtq)J3}q*(J+AKJ\AKuJ9(Uq+(hUIIBTreeq,ttQJB(J\AKtq-Jb W(J9AKtq.Jj(Uq/(hUIIBTreeq0ttQJ,(JAKtq1J(Uq2(hUIIBTreeq3ttQJL}q4(JAKJPAKuJa }q5(JAKJAKJbAKuJ2a(JAKtq6J~%(J+AKtq7J# Z}q8(J?AKJ\AKuJ&/o(JgAKtq9J:(Uq:(hUIIBTreeq;ttQJ(JAKtqJQ(JAKtq?JO@P}q@(JAKJAKuJa(JAKtqAJv(J9AKtqBJ(JAKtqCt(U`qD(hUIOBucketqEttQtqF.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ=AKJXAKJ_AKJAKJAKJAKJAKJAKttttq.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ9AK J>AKJ?AKJ]AKJ_AKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ>AKJCAKJGAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AK J/AKJ2AKJ9AK6J=AKJ>AKJ?AKJCAKJDAKJKAKJPAKJRAKJSAKJVAKJWAKJXAKJZAKJ[AKJ\AKJ]AKJ^AKJ_AKJ`AKJaAKJbAKJcAKJgAKJoAKJpAKJwAKJ{AKJ|AKJAKJAKJAKJAKJAKJAKJAKJJAK JAKJAKJAKJAKJAKJAKJAK JAK JAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg}((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J=AKJMAKJSAKJ]AKJ_AKJeAKJgAKJkAKJmAKJwAKJAKttttq.G Kgd((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J(AKJ*AKJ+AKJ3AKJ4AKJ7AKJ9AKJ<AKJ=AKJ>AKJ?AKJCAKJDAKJEAKJGAKJKAKJOAKJRAKJSAKJXAKJZAKJ\AKJ_AKJ`AKJaAKJbAKJcAKJgAKJpAKJyAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJAKJAKJAKJAKttttq.G KgV((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J*AKJ+AKJ/AKJ2AKJ9AKJ<AKJ=AKJ>AKJAAKJBAKJCAKJDAKJGAKJRAKJSAKJXAKJ\AKJ^AKJ_AKJ`AKJaAKJbAKJhAKJpAKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ9AKJ?AKJCAKJGAKJKAKJWAKJ_AKJgAKJpAKJ~AKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J.AKJ;AKJ=AKJMAKJSAKJkAKJqAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J1AKJ2AKJ4AKJAAKJDAKJEAKJMAKJPAKJzAKttttq.^G Kg((UBTrees.IOBTreeqUIOBucketqtqNt.((J#(J9AKtqJ',}q(J>AKJ+AKJ:AKuJ(J_AKtqJ(JAKtqJ|e(JAKtqJ(Uq (UBTrees.IIBTreeq UIIBTreeq ttQJT}q (JcAKJ+AKJ*AKuJ%(JAKtq J'+(JaAKtqJS(J9AKtqJrW(Uq(h UIIBTreeqttQJ_Y(J+AKtqJ|Y}q(JMAKJAKJ9AKuJGr(JpAKtqJ(JoAK tqJ(JaAKtqJe1(Uq(h UIIBTreeqttQJ~A(J&AKtqJD(Uq(h UIIBTreeqttQJtF(Uq(h UIIBTreeqttQJ (Uq(h UIIBTreeqttQJǭ}q (JnAKJlAKuJt(JAKtq!JD(J\AKtq"J(JAKtq#J (JtAKtq$J)(JVAKtq%J8(J+AKtq&JEY(Uq'(h UIIBTreeq(ttQJ<@(}q)(J+AKJ*AKJ(AKuJ=}q*(JAKJ9AKJAKuJjM}q+(J+AKJ?AKuJ"oO(JAKtq,J r(JHAKtq-JW(J|AKtq.J(Uq/(h UIIBTreeq0ttQJu(JAKtq1J(JAKtq2JQ}q3(J9AKJ\AKut(U_q4(hUIOBucketq5ttQtq6.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ;AKJ=AKJ?AKJXAKJaAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJKAKJXAKJgAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ:AKJ;AKJ>AKJXAKJZAKJaAKJoAKJAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JXAKJ_AKJaAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ<AKJ>AKJRAKJWAKJ]AKJ^AKJ_AK J`AKJaAKJbAK JAKJAK JAKJAKJAKttttq.G Kga((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J&AKJ*AKJ9AK JCAKJRAKJeAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J7AKJ;AKJXAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J,AKJ0AKJJAKJRAKJ\AKJ{AKJAKJAKJAKttttq.]G Kg{((UBTrees.IOBTreeqUIOBucketqtqNt.((Jd(Uq(UBTrees.IIBTreeqUIIBTreeqttQJm}q(J>AKJAKJAKuJ놏(Uq(hUIIBTreeq ttQJ(Uq (hUIIBTreeq ttQJ(JAKtq JX]}q (JAKJ;AKJSAKuJL(J9AKtqJ (J{AKtqJt(Uq(hUIIBTreeqttQJO}q(JAKJAKuJH%}q(JAKJAKJAKuJ8T@(JZAKtqJ(JZAKtqJџ(JAKtqJ4(Uq(hUIIBTreeqttQJѥ(J\AKtqJW(Uq(hUIIBTreeqttQJ(J+AKtqJ O(JAKtqJ| (JXAKtqJG (JpAKtqJU(JAKtq J _}q!(JKAKJRAKuJ^r(JXAKtq"J4͗(Uq#(hUIIBTreeq$ttQJM(JXAKtq%J}(J&AKtq&J. (Uq'(hUIIBTreeq(ttQJ 1-(Uq)(hUIIBTreeq*ttQJ<-(JAKtq+JL-}q,(JAKJAKuJB(JAKtq-JϪY(JgAKtq.J_(JZAKtq/J)o}q0(JcAKJgAKuJ(JAKtq1J(JAKtq2J((JAKtq3JUY}q4(J?AKJAKJMAKuJP (JAKtq5Jø6(JSAKtq6JA(JAKtq7Jc(JWAKtq8J-}q9(JAKJAKuJa(JAKtq:Jm(J9AKtq;JM(JuAKtqt(U^q?(hUIOBucketq@ttQtqA.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJCAKJGAKJKAKJRAKJ]AKJ_AKJaAKJAKJAKJAKJAK JAKJAKJAKJAKJAK JAK JAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ>AKJ|AKJAKJAKJAKJAKJAKJAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ2AKJ?AKJDAKJMAKJPAKJRAKJSAKJbAKJgAKJAKJAKttttq.G Kgo((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JKAKJSAKJXAKJ]AKJ_AKJcAKJmAKJoAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ/AKJ4AKJ;AKJ>AKJ?AKJCAKJEAKJFAKJGAKJSAKJUAKJVAKJXAKJZAKJ[AKJ\AKJsAKJyAKJ~AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAK JAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ2AKJ9AKAKJ?AKJCAKJDAKJGAKJMAKJPAKJSAKJ\AKJgAKJAKttttq.G Kgv((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJZAKJcAK JdAKJhAKJiAKJoAKJ~AKJAKJAKttttq.\G Kg(((UBTrees.IOBTreeqUIOBucketqtqNt.((Jd(J9AKtqJ!(JXAKtqJOJ(J,AKtqJ,T(J+AKtqJ(Uq(UBTrees.IIBTreeq UIIBTreeq ttQJ6(J+AKtq J(JAKtq J;(JAKtq J~ (Uq(h UIIBTreeqttQJo"(JSAKtqJO.(JaAKtqJ0(Uq(h UIIBTreeqttQJ2r(Uq(h UIIBTreeqttQJLx(Uq(h UIIBTreeqttQJ|}q(JGAKJCAKJAKuJ}q(JAKJAKuJ}q(JAKJAKuJ(JAKtqJ}q(JtAKJ2AKJDAKuJC(J9AKtqJx?(Uq(h UIIBTreeqttQJ}a(J9AKtq Js(J9AKtq!Jv(J9AKtq"JJ"(JcAKtq#J[t(Uq$(h UIIBTreeq%ttQJ8z(Uq&(h UIIBTreeq'ttQJ(J9AKtq(J5(JaAKtq)J!(JAKtq*JP6(J/AKtq+JH(JAKtq,JO}q-(J+AKJZAKJAKuJ h(JAKtq.Jq(JAKtq/J)u}q0(JAKJAKuJNx}q1(J_AKJ]AKuJ݅(Uq2(h UIIBTreeq3ttQJS (JRAKtq4J}q5(JAKJUAKuJGk(Uq6(h UIIBTreeq7ttQJ(Uq8(h UIIBTreeq9ttQJȚ(Uq:(h UIIBTreeq;ttQJƣ}q<(JCAKJGAKuJ(Uq=(h UIIBTreeq>ttQJF}q?(J?AKJXAKuJ(J9AKtq@Jnj(JAKtqAJ}qB(J+AKJSAKuJ(J9AKtqCJ(J=AKtqDJg:}qE(JAKJAKuJ:(JaAKtqFJNG(J_AKtqGt(U]qH(hUIOBucketqIttQtqJ.G Kgh((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ>AKJ?AKJ\AKJ|AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ=AKJRAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ>AKJ?AKJKAKJRAKJTAKJUAKJYAKJZAKJ[AKJ\AKJ_AKJwAKJzAKJAKJAKJAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J2AKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAKJAK JAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J+AKJ-AKJ9AKJ:AKJ;AKJ<AKJ=AKJCAKJGAKJKAKJOAKJRAKJSAKJXAKJ`AKJaAKJgAKJoAKJpAKJqAKJuAKJAKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J9AKJ_AKJaAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JDAKJPAKJaAKJAKttttq.G KgZ((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ9AKJ|AKJAKJAKJAKttttq.G KgL((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J]AKJ_AKJcAKJoAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((JDAKJAKJAKJAKJAK ttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J-AKJZAK J_AKJ`AKJwAK JxAKJyAKJzAK J{AKJ}AKJ~AKJAKJAKJAKttttq.G KgS((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ>AKJ?AKJJAKJYAKttttq.G Kg((UBTrees.IIBTreeqUIIBTreeqtqNt.((((J/AKJ9AKJ>AKJ?AKJBAKJRAKJXAKJYAKJ^AKJ_AKJ`AKJaAKJ{AKJAKttttq.[G Kg.((UBTrees.IOBTreeqUIOBucketqtqNt.((JU*(Uq(UBTrees.IIBTreeqUIIBTreeqttQJ(J&AKtqJY(Uq(hUIIBTreeq ttQJi}q (JAKJAKuJ )(J;AKtq JeM(J/AKtq JO}q (JAKJAKuJF](Uq(hUIIBTreeqttQJaz(JAKtqJ}q(JSAKJMAKuJN(JAKtqJR$}q(J+AKJZAKJXAKuJ(Uq(hUIIBTreeqttQJ}q(JAKJAKuJz3}q(J/AKJuAKJtAKuJY>(J3AK tqJBj}q(J>AKJAKJaAKuJs(Uq(hUIIBTreeqttQJ {(J9AKtqJl+(JRAKtqJ S(Uq(hUIIBTreeqttQJ;(Uq (hUIIBTreeq!ttQJU(J\AKtq"Jr(JAKtq#JOE(JAKtq$J}q%(JCAKJGAKuJ^ (JAKtq&JO9(JAKtq'JE(JoAKtq(J}q)(JAKJXAKuJ(J+AKtq*t(U\q+(hUIOBucketq,ttQtq-.G KgS((UBTrees.IIBTreeqUIIBTre