text:
SAILOR'S LOG Recollections of Forty Years of Naval Life by Evans, Robley D.: D. Appleton & Company Cloth, ........ - AbeBooks.com
Published by D. Appleton & Company, 1908
8vo., ix, 467pp., tips and page edges frayed, cracked, shaken Inscribed by the author on the Tpage. Bookseller Inventory #
1. A sailor's log; recollections of forty years of naval life [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 522 pages. eng Lang:- eng, Pages:- 522, It is an Ebook edition of the original edition published long back . We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999000528229
2. A sailor's log : recollections of forty years of naval life 1901 [Ebook PDF]
Evans, Robley D. (Robley Dunglison), ,Kipling, Rudyard, . Zogbaum,Kipling Collection (Library of Congress) DLC,Chandler Kipling Collection (Library of Congress) DLC
Book Description 2017. Ebook. Book Condition: New. 528 pages. eng Lang:- eng, Pages:- 528, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999000528231
3. A sailor's log; recollections of forty years of naval life 1901 [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 520 pages. eng Lang:- eng, Pages:- 520, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999000528232
4. A sailor's log; recollections of forty years of naval life 1901 [Ebook PDF]
Evans, Robley D. (Robley Dunglison), -
Book Description 2017. Ebook. Book Condition: New. 516 pages. eng Lang:- eng, Pages:- 516, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005374893
5. A sailor's log; : recollections of forty years of naval life, 1901 [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 518 pages. eng Lang:- eng, Pages:- 518, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005374898
6. A sailor's log; recollections of forty years of naval life 1901 [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 520 pages. eng Lang:- eng, Pages:- 520, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005374903
7. A sailor's log; recollections of forty years of naval life 1901 [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 520 pages. eng Lang:- eng, Pages:- 520, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005374906
8. A sailor's log : recollections of forty years of naval life 1901 [Ebook PDF]
Evans, Robley D. (Robley Dunglison), -,Kipling, Rudyard, -. Zogbaum,Kipling Collection (Library of Congress) DLC,Chandler Kipling Collection (Library of Congress) DLC
Book Description 2017. Ebook. Book Condition: New. 528 pages. eng Lang:- eng, Pages:- 528, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005374917
9. A sailor's log; recollections of forty years of naval life [Ebook PDF]
Book Description 2017. Ebook. Book Condition: New. 522 pages. eng Lang:- eng, Pages:- 522, It is an Ebook edition of the original edition published long back . We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # 9999005436704
10. A sailor's log; : recollections of forty years of naval life, / by Robley D. Evans. 1901 [Ebook PDF]
by Robley D. Evans.
Book Description 2017. Ebook. Book Condition: New. eng Lang:- eng, It is an Ebook edition of the original edition published long back [1901]. We found this book important for the readers who want to know about our old treasure so we brought it back in ebook (pdf) format. These are scanned images of the original book in pdf format. We provide you the best available ebook for your ebook shelf. Once you place the order, you will receive a link to download the pdf file. An email will be sent shortly to your email address containing the download instructions. This is an Ebook. All sales final unless there is illegibility to text. Bookseller Inventory # HT00001000215

value: This website is an e-commerce global online marketplace with seven websites that offer books, fine art, and collectables from sellers in over 50 countries. Launched in 1996, it specialises in used, rare and out-of-print books.


text:
Patent US7743031 - Time and space efficient technique for creating virtual volume copies - Google Patents
A snapshot tree structure includes a base volume storing a current user data at a current time, a first read-only snapshot descending from the base volume, and a second read-only snapshot descending from the first read-only snapshot. The first read-only snapshot is created at a first time earlier than...http://www.google.com/patents/US7743031?utm_source=gb-gplus-sharePatent US7743031 - Time and space efficient technique for creating virtual volume copies
Publication number US7743031 B1
Application number US 10/655,951
Also published as US7886119
Publication number 10655951, 655951, US 7743031 B1, US 7743031B1, US-B1-7743031, US7743031 B1, US7743031B1
Inventors George R. Cameron, Hueichian Huang
Original Assignee 3Par, Inc.
Patent Citations (15), Non-Patent Citations (6), Referenced by (25), Classifications (13), Legal Events (5)
Time and space efficient technique for creating virtual volume copies
US 7743031 B1
A snapshot tree structure includes a base volume storing a current user data at a current time, a first read-only snapshot descending from the base volume, and a second read-only snapshot descending from the first read-only snapshot. The first read-only snapshot is created at a first time earlier than the current time. The first read-only snapshot stores a first data of the base volume at the first time before the first data is modified in the base volume. The second read-only snapshot is created at a second time earlier than the first time. The second read-only snapshot stores a second data of the base volume at the second time before the second data is modified in the base volume.
1. A non-transitory computer readable medium for a data storage device encoded with a snapshot tree structure and code for managing the snapshot tree structure to provide point-in-time backups of a base volume, wherein:
the snapshot tree structure comprises:
a first branch, comprising:
the base volume storing a current user data;
a first read-only snapshot descending from the base volume, the first read-only snapshot being created at a first time, the first read-only snapshot storing a first data of the base volume at the first time before the first data is modified in the base volume; and
a second read-only snapshot descending from the first read-only snapshot, the second read-only snapshot being created at a second time earlier than the first time, the second read-only snapshot storing a second data of the base volume at the second time before the second data is modified in the base volume; and
the code comprises instructions to retrieve data from the snapshot tree structure and transmitting the retrieved data to a host device.
2. The non-transitory computer readable medium of claim 1, wherein the snapshot tree structure further comprises:
a second branch, comprising a first read-write snapshot descending from one of the first and the second read-only snapshots.
3. The non-transitory computer readable medium of claim 2, wherein the second branch further comprises a third read-only snapshot descending from the first read-write snapshot, the third read-only snapshot being created at a third time, the third read-only snapshot storing a third data of the first read-write snapshot at the third time before the third data is modified in the first read-write snapshot.
4. The non-transitory computer readable medium of claim 3, wherein the snapshot tree structure further comprises:
a third branch, comprising a second read-write snapshot descending from the third read-only snapshot.
5. The non-transitory computer readable medium of claim 1, wherein the third branch further comprises a fourth read-only snapshot descending from the second read-write snapshot, the fourth read-only snapshot being created at a fourth time, the fourth read-only snapshot storing a fourth data of the second read-write snapshot at the fourth time before the fourth data is modified in the second read read-write snapshot.
6. A method for a data storage device to store snapshots that provide point-in-time backups of a base volume using a snapshot tree structure, the method comprising:
creating a first branch, comprising:
creating the base volume storing a current user data;
creating a first read-only snapshot descending from the base volume, the first read-only snapshot being created at a first time;
storing in the first read-only snapshot a first data of the base volume at the first time before the first data is modified in the base volume;
creating a second read-only snapshot descending from the base volume, the second read-only snapshot being created at a second time later than the first time;
storing in the second read-only snapshot a second data of the base volume at the second time before the second data is modified in the base volume; and
inserting the second read-only snapshot between the base volume and the first read-only snapshot, wherein the first read-only snapshot now descends from the second read-only snapshot; and
retrieving data from the snapshot tree structure and transmitting the retrieved data to a host device.
creating a second branch, comprising creating a first read-write snapshot descending from one of the first and the second read-only snapshots.
8. The method of claim 7, wherein said creating a second branch further comprises creating a third read-only snapshot descending from the first read-write snapshot, the third read-only snapshot being created at a third time, the third read-only snapshot storing a third data of the first read-write snapshot at the third time before the third data is modified in the first read-write snapshot.
creating a third branch, comprising creating a second read-write snapshot descending from the third read-only snapshot.
10. The method of claim 9, wherein said creating a third branch further comprises creating a fourth read-only snapshot descending from the second read-write snapshot, the fourth read-only snapshot being created at a fourth time, the fourth read-only snapshot storing a fourth data of the second read-write snapshot at the fourth time before the fourth data is modified in the second read read-write snapshot.
11. A method for a data storage device to retrieve a point-in-time backup of a base volume by reading a value of a data block from a snapshot tree structure having the base volume, a first snapshot descending from the base volume, and a second snapshot descending from the first snapshot, the method comprising:
searching for the data block in the second snapshot;
if the data block is not found in the second snapshot:
following a link in the second snapshot to the first snapshot; and
searching for the data block in the first snapshot; and
transmitting the data block to a host device after the data block is found.
12. The method of claim 11, wherein the first and the second snapshots are read-only snapshots.
13. The method of claim 11, wherein the first snapshot is a read-only snapshot and the second snapshot is a read-write snapshot.
if the data block is not found in the first snapshot:
following another link in the first snapshot to the base volume; and
reading the data block from the base volume.
This application claims the benefit of U.S. Provisional Application Nos. 60/408,735 and 60/409,311, both filed Sep. 6, 2002, which are incorporated herein by this reference.
The present invention relates generally to data storage systems and, more particularly, to snapshots.
Storage systems can be made up of multiple interconnected storage devices connected to one or more servers to increase performance in terms of storage capacity, reliability, scalability, and availability. System storage performance can be enhanced by using system management operations including management of data communication and management of data placement. Data system management has multiple aspects including techniques for data storage, storage device mapping, data recovery, data integrity, backup operations, and storage element utilization.
Virtualization of memory facilitates the management of data storage systems. Virtualization yields a “virtual volume” which is an abstraction of the various data storage devices in the systems. According to previously developed techniques, a virtual volume of memory can be managed by maintaining a “change log” or a “dirty block list” for tracking which blocks of data on a virtual volume have changed over time. Such techniques were disadvantageous in that the change logs or dirty block lists were additional data structures that needed to be defined and maintained by the data storage systems.
Disadvantages and problems associated with previously developed systems and methods for data storage have been substantially reduced or eliminated with various embodiments of the present invention.
In one embodiment, a snapshot tree structure includes a base volume storing a current user data at a current time, a first read-only snapshot descending from the base volume, and a second read-only snapshot descending from the first read-only snapshot. The first read-only snapshot is created at a first time earlier than the current time. The first read-only snapshot stores a first data of the base volume at the first time before the first data is modified in the base volume. The second read-only snapshot is created at a second time earlier than the first time. The second read-only snapshot stores a second data of the base volume at the second time before the second data is modified in the base volume.
Embodiments of the invention may best be understood by referring to the following description and accompanying drawings, in which:
FIG. 6A illustrates one view of storage volumes for the data structures of FIG. 5.
The preferred embodiments for the present invention and their advantages are best understood by referring to FIGS. 1-10 of the drawings. Like numerals are used for like and corresponding parts of the various drawings.
In accordance with embodiments of the present invention, systems and methods are provided for creating a snapshot tree structure. The data and information for the snapshots may be captured or reflected in one or more exception tables. Using these exception tables, the methods and systems quickly and efficiently determine which blocks of data on the memory volume have changed over time. In some embodiments, the systems and methods determine differences between two snapshot volumes in the snapshot tree, which identifies modified pages of data. The methods and systems advantageously support or facilitate rapid synchronization of various backup copies for the memory volume.
Scalable cluster data handling system 10 can be incorporated or used in a data storage system to provide mass storage for data and information routed, generated, manipulated, processed, or otherwise operated upon, by various host devices 18. These host devices 18 can include various processing devices, such as, for example, server clusters, personal computers, mainframes, and server towers. Host devices 18 may also include various peripheral devices, such as, for example, printers, modems, and routers. Each of these host devices 18 is connected to scalable cluster data handling system 10. As used herein, the terms “connected” or “coupled” mean any connection or coupling, either direct or indirect, between two or more elements; such connection or coupling can be physical or logical. The data storage system (in which scalable cluster data handling system 10 may be incorporated) also includes a number of storage devices 20. These storage devices 20 can be implemented with any suitable mass storage resource, such as tape or disk storage. In one embodiment, the storage devices 20 may be one or more JBOD (Just a Bunch of Disks) facilities comprising a plurality of disk drives. The disk drives can be mounted in a rack-mountable storage shelf having one or more hot-pluggable disk drive sleds. Each sled may accommodate four disk drives on a pair of fibre channel (FC) connections. The sleds can be configured in one of two possible ways: (1) all sleds on the same redundant FC connections, or (2) half of the sleds on one set of redundant FC connections and the other half of the sleds on another set of redundant FC connections. Scalable cluster data handling system 10 allows the host devices 18 to store and retrieve information from the storage devices 20.
Storage in the scalable cluster data handling software architecture 1000 also includes one or more virtual volumes 1026, logical disks 1028, and physical disk layers 1032. Associated with the virtual volumes 1026 are caches 1030. The physical disk layers 1032 include physical disk drivers 1034, which provide an interface for physical disk drives. Physical disks are logically divided into pieces called “chunklets” (described below in more detail). In an illustrative embodiment, chunklets are fixed-size, for example 256 MB contiguous segments of disk space. The logical disks 1028 are connected to the FC/SCSI target drivers 1010 as well as the file systems 1024. Logical disks 1028 comprise multiple chunklets organized into groups. A logical disk driver (not shown) controls operation so that the chunklets in a RAID group are arranged on different spindles and, if possible, on different Fibre channel strings. Some spindles may not be connected to a Fibre channel loop on the node. The disk caches 1030 can also be abstracted as logical disks 1028.
The virtual volume region table 104 is associated with a virtual volume 1026, which is a virtual representation of data storage. In a data storage system served by data storage management system 100, the virtual volume 1026 may represent the collective storage space of a number of hardware storage devices (e.g., physical disk drives 112). The virtual volume region table 104 includes entries 105 for a number of regions (e.g., REGION 0, REGION 1, REGION2, . . . , REGION N) of the virtual volume that correspond to particular storage spaces in the storage devices. In particular, the regions map to one or more logical disks 106 that provide access to a plurality of physical disks 112. The virtual volume region table 104 may be used to record and manage the ownership of regions in a storage structure, such as the virtual volumes 1026, by a one or more nodes 12. In one embodiment, each virtual volume 1026 in a network is associated with its own ownership table.
The virtual volume 1026 associated with region table 104 may have a total virtual volume size that is substantially equal to sum of the storage capacity of the hardware storage devices represented. The regions of the virtual volume 1026 (e.g., REGION 0, REGION 1, REGION2, . . . , REGION N) may each correspond to particular storage space. Each region may be the same or different size. In one embodiment, the number of regions in the virtual volume 1026 is equal to the total virtual volume size (e.g., 1 Terabyte) divided by the region size (e.g., 16 Megabytes) divided by the number of nodes (e.g., 8 nodes). Each region of the virtual volume 1026 may be associated with one or more logical disks 106 which, in turn, may be associated with one or more physical disks 112.
The virtual volume region table can be accessed by a host device 18. Furthermore, the virtual volume region table 104 may be accessible, via a volume manager 102, to a user interface 120 or an operating system 122. The user interface can be a graphical user interface (GUI) or a command line interface (CLI). The operating system 122 is local to a scalable cluster data handling system 10 or a node contained therein. This allows files of the virtual volume to be exported/imported using standard network file systems (e.g., Sun Microsystem's Network File System (NFS) and Microsoft's Common Internet File Service (CIFS)) associated with the operating system 122, or as web pages using hypertext transfer protocol (HTTP).
The volume manager 102 creates, configures, and manages the virtual volume (also called a “virtual disk”) that is associated with virtual volume region table 104. To accomplish this, the volume manager 102 may create, modify, and delete entries of the virtual volume region table 104. The volume manager 102 may operate in Fibre Channel, small computer serial interface (SCSI), or other suitable interface, bus, or communication standard environments. In one embodiment, each node 12 in a scalable cluster data handling system 10 has its own separate volume manager 102. In another embodiment, a plurality of these nodes share one or more volume managers 102. In an illustrative example, the volume manager 102 presents the virtual volume (for example, over Fibre Channel) to one or more hosts 120.
Virtual volume mapping enables additional storage functionality including creation of a “virtual volume clone” at another node or at another cluster data handling system. A “virtual volume clone” may be a copy of a virtual volume's mapping, and can be both read and written. In one embodiment, when a virtual volume clone is first created, the virtual volume clone only includes a copy of the original virtual volume's mapping, which is a small record that is quickly created and consumes almost no additional storage space. Accordingly, data of the virtual volume clone is accessed indirectly from the original virtual volume. When data is written to the original virtual volume or the virtual volume clone, new physical storage blocks are allocated for the virtual volume clone. The mapping is changed only when particular disk blocks are written in either the virtual volume clone or the original virtual volume. If only a small fraction of total virtual volume size is written, then the additional memory space used by the clone is small.
In an illustrative embodiment, data can be written to a virtual volume by indexing into the respective virtual volume region table 104 to determine which nodes 12 are the owning and replicants node for the virtual volume. The write operation is executed and a copy of the data is sent to the owning and replicant nodes. The virtual volume region table 104 can be used to determine the replicant node so that, in case a block write operation fails, the redundant copy of the data can be accessed. In an illustrative embodiment, each of the nodes 12 in a system has a copy of the virtual volume region table 104 for other nodes and tracks the replicant nodes for various data blocks.
Backup copies (which may be referred to as “backup volumes”) of the virtual volume may be stored or managed in the owning and replicant nodes 12. Each backup volume may comprise a complete copy of the virtual volume at a particular point in time. The backup volumes can be used in the event that the associated base virtual volume becomes inaccessible. This may be the case, for example, when there is a system failure in the owning node that requires disaster recovery.
In one embodiment, the nodes 12 may use their virtual volume region tables 104 as “hash” tables to perform a hashing operation. That is, a virtual volume region table 104 may implement a hash function, such as a transformation h from an input index m to a fixed-size string H(m). Hash functions can have a variety of general computational uses, and may be used to identify data owner nodes and data replicant nodes, for example in a cache lookup operation. Each node 12 may be designated as an owner node or a replicant node for a set of storage devices (e.g., disk drives). The virtual volume region table 104 may hold an array of control indices or virtual volume offsets that map data to physical storage locations, such as the physical disks 112. Entries in a virtual volume region table 104 may identify nodes 12 that control and store owner and replicant tags that define a location of data storage on physical disks 112 and redundant paths for accessing the data.
As data and information is stored into the various virtual volumes 1026 in the storage system supported by data management system 100, one or more “snapshots” may be taken of each virtual volume 1026 to record the history of what has been stored in that virtual volume 1026. A snapshot can be a point-in-time picture of the virtual volume at the time that the snapshot is taken. A snapshot can record the state of saved memory including the contents of all memory bytes. Snapshots of the virtual volume 1026 may be used to restore the data storage system in the event of failure. For example, snapshots enable previous versions of files to be brought back for review or to be placed back into use. Snapshots of the virtual volume 1026 can be taken at regular intervals, or based upon particular triggering events (e.g., upon some indication that the system is about to crash).
In one embodiment, a copy-on-write (COW) technique can be used in conjunction with the snapshots. In a COW technique, a data page or block is copied to a snapshot before that data block is modified by any write operations. Generally, only the first write operation to a given data block causes a COW operation (“a COW push”) to a snapshot. Subsequent write operations to that data block are allowed to directly change a base virtual volume. Alternatively, a complete copy of all the data blocks is made to the snapshot. After the complete copy, all of the data blocks can be modified.
The tables 666, 668, and 670 may be used to track any data changed or written to the base virtual volume 654 for one or more snapshots. As depicted, four write operations are made to write data (e.g., W1, W2, W3, and W4) into various parts of the base virtual volume 654. In the illustrative example, each of these, write operations to the base virtual volume 654 cause the data which was modified to be captured in a snapshot, which can be the same or different snapshots for the various write operations. Data for the various snapshots is stored in data storage areas 602, 604, 606, 608, which can be in physical storage devices (e.g., physical disks 112) or in virtual volume memory. Each data storage area 602, 604, 606, or 608 can be a page of data which, in one embodiment, may comprise one or more disk or data blocks. A data block can be the minimum size or region of data accessible from a physical storage device. Taken together, the tables at the various levels and the data storage areas may provide a snapshot of data written to multiple physical disks using virtualized disk operations. In some embodiments, creation and modification of the tables 666, 668, and 670 may be controlled by a “master” node 12, which has a backup master node in case the master node malfunctions or is inaccessible.
In an illustrative embodiment, Level 1 (or L1) table 666 a is a first level mapping structure. The table 666 a comprises a plurality of entries (e.g., 1024). Each entry in the Level 1 table 666 a addresses a range of memory locations (or segments) of the entire base virtual volume 654. Each segment may, for example, comprise 1000 memory locations of the entire base virtual volume 654. Assuming that there are 10 entries in the Level 1 table 666 a, a first entry (entry 0) addresses locations 0-99 of the base virtual volume 654 (which may correspond to a first Level 2 table), a second entry (entry1) addresses locations 100-199 (which may correspond to a second Level 2 table), and so on. Each Level 2 table 668 a, 668 b may comprise a plurality of entries (e.g., 10), each of which corresponds to a particular range of memory locations within the segment of the Level 1 entry pointing to that Level 2 table. For example, a first entry of a Level 2 table may address locations 0-9 of the base virtual volume 654 (which may correspond to a first Level 3 table), a second entry of the same table may address locations 10-19 (which may correspond to a second Level 3 table), and so on. Each Level 3 table may also comprise a number of entries (e.g., 10), each of which points to a particular storage area (e.g., 602, 604, 606, or 608) storing data that was changed or written. In one embodiment, each Level 2 table is controlled by a specific node 12, which may also control the Level 3 tables associated with that Level 2 table.
This can be accomplished by the volume manager accessing and attempting to check entries in the tables 666, 668, and 670 to determine whether a particular physical block has previously been written. For example, in an illustrative embodiment, if data is written to a storage location of the base virtual volume 654 that falls within a particular segment, the volume manager 102 first reads the entry of the Level 1 table 666 that corresponds to the target physical storage. If the entry is null/empty, thus indicating no previous writes to that location, the volume manager 102 sets a pointer in the corresponding entry of the Level 1 table 666 a and creates a Level 2 table 668. The pointer in the Level 1 table 666 a points to an entry in the Level 2 table (e.g., table 668 a or 668 b) for further specifying the specific location of the base virtual memory 654. Tables and corresponding entries for other levels (e.g., Level 3 table 670) are generated and made. An entry in the final level table specifies the storage location, which may be in a virtual volume 1028. With the entries, pointers are set in the various tables, and a page of data is written to the physical storage area. Alternatively, if the entry of the Level 1 table 666 is not null/empty, the volume manager 102 designates or creates a pointer to an existing element of a Level 2 table (e.g., table 668 a or 668 b). The volume manager 102 reads the element of the Level 2 table 668 that corresponds to the target physical storage. If this entry is null/empty, the volume manager 102 creates a new Level 3 table 670; otherwise, the volume manager 102 uses the element as a pointer to an existing Level 3 table. This is continued for all level until a page of data is written to the physical storage area.
In one embodiment, snapshot techniques can be used in conjunction with cloning techniques in the data storage system. The data storage management system 100 may generate remote mirror copies or “clones” of data on virtual volumes 1026 and logical disks 106 in the multiple nodes 12. The system 100 manages remote mirror cloning of data segments of a virtual volume 1026 by creating local and remote mirror data structures (which may include various level tables and snapshot data). When a clone is first created, the system allocates storage space for a clone structure resident on or controlled by a remote node 12 that corresponds to the data structure in the local node 12. The system stores header or management information that defines the local and remote structures as mirror copies. When data is subsequently written to the storage structures of one of the local or remote nodes 12, information is transferred to the other node 12 so that the same data is written to the clone.
The base virtual volume 654 may be the most current version of a virtual volume 1026. Thus, the base virtual volume 654 may comprises data stored in the virtual volume at some initial point in time, such as time X (or time 0), and any data that has been subsequently written by a host after time X. The base virtual volume 654 is associated with a virtual volume region table (e.g., virtual volume region table 104) that maps regions of the base virtual volume 654 to physical storage devices (e.g., physical disks 112). The base virtual volume 654 may specify or include virtual data structures of all physical storage devices in communication with a plurality of nodes 12 in a data handling system 10. As an example, a base virtual volume 654 of a multi-node system may comprise 1 Terabyte (“1T”) of data. As data in the base virtual volume 654 is changed or modified over time, various snapshots can be taken to provide a history of what has been stored in that virtual volume at different moments.
Snapshot data volume 658 stores data for each snapshot—i.e., data that has been written/changed in the base virtual volume 654 from an initial point in time to when a snapshot is taken. As depicted, separate data may be stored for each snapshot of the virtual volume. The snapshot administration volume 656 stores a number of tables 666, 668, and 670 in a hierarchy with multiple levels (e.g., Level 1, Level 2, and Level 3). The different levels of tables may map the data of a snapshot back to a particular location of the virtual volume (as described with reference to FIG. 5), so that the state of the base virtual volume at previous point in time can be re-created.
Additional details regarding the scalable cluster data handling system, its nodes, virtual volume management, and snapshots are provided in U.S. patent application Ser. No. 09/633,088, now U.S. Pat. No. 6,658,478, entitled “Data Storage System,” filed on Aug. 4, 2000; U.S. patent application Ser. No. 09/883,681, entitled “Node Controller For A Data Storage System,” filed on Jun. 18, 2001; and concurrently filed U.S. patent application Ser. No. 10/655,963, now U.S. Pat. No. 7,191,304, entitled “Efficient And Reliable Virtual Volume Mapping.” These applications are assigned to the same Assignee as the present application and are hereby incorporated by reference in their entireties.
Base virtual volume 2200 can be written into and read from by a user or host device 18. The base virtual volume 2200 may be the most current version of the respective virtual volume 1026, and most reads and writes of data are performed on the base virtual volume. From another perspective, base virtual volume 2200 comprises data initially stored at a point in time, such as time X (or time 0), and any data that has been subsequently written by a host device or user after time X. Base virtual volume 2200 may serve as a “root” for the snapshot tree 2000.
Each snapshot volume maintains data and tables for an associated snapshot of the base virtual volume. As such, for snapshot tree 2000, the snapshot volumes may be considered to “descend” from a base virtual volume 2200. Any of the snapshot volumes can be accessed to obtain data that was written at a prior time. A snapshot volume can be either a read-only (R/O) snapshot volume (or ROSS) or a read/write (R/W) snapshot volume (or RWSS). A ROSS presents a constant view of the data in a virtual volume at a specific time. After creation of a ROSS, data can be read from but not written into the ROSS. A RWSS descends from a ROSS (e.g., a parent snapshot volume) and may serve to hold modifications to the parent ROSS. A RWSS can be read and written like a base virtual volume. As such, a RWSS can be viewed as a writable/modifiable version of its parent ROSS. As shown, snapshot volumes 2106, 2204, 2210, 2212, 2206, 2308, and 2310 are ROSSes, and snapshot volumes 2104, 2304, and 2306 are RWSSes. Each of the RWSSes may have one or more descending ROSSes. As can be seen, for example, a RWSS 2306 can descend from a ROSS 2308 of another RWSS 2304.
Additional details regarding the tree-like data structure and its advantages are provided in U.S. patent application Ser. No. 10/655,961, now U.S. Pat. No. 7,165,156, entitled “Read-Write Snapshots,” filed concurrently. Such application is assigned to the same Assignee as the present application and is hereby incorporated by reference in its entirety.
FIG. 9 is a flowchart of an exemplary method 500 for determining differences between two snapshot volumes, where one of the snapshot volumes is directly ascended from the other in the snapshot tree (i.e., one snapshot volume is “up the tree” from the other snapshot volume). This would be the case for: (1) two snapshot volumes on the same branch of the snapshot tree; or (2) two snapshot volumes on different branches, where one branch is an offshoot of the other (main) branch and the snapshot volume on the main branch appears on that branch at a point prior to the offshoot.
Thus, with method 500, if there are any snapshot volumes (including the two snapshot volumes under consideration) that do not have any exceptions, such snapshot volumes are ignored. As such, differences between two snapshot volumes can be readily and quickly identified. In turn, backup copies of the virtual volume made using the different snapshot volumes can be rapidly and more efficiently synchronized. This differs from previously developed techniques for determining which blocks of data on a virtual volume have changed over time. These previously developed techniques involved maintaining a “change log” or a “dirty block list” for the virtual volume, thus requiring maintaining extra structures in addition to the structures needed to maintain a snapshot.
FIG. 10 is a flowchart of an exemplary method 550 for determining differences between two snapshot volumes which are not directly ascended (i.e., neither snapshot volume is “up the tree” from the other snapshot volume). This would be the case for two snapshot volumes on different branches, where one branch is an offshoot of the other branch and the two snapshot volumes appear on their respective branches at a point after the offshoot.
An illustrative example of two such snapshot volumes would be snapshot volumes 2206 and 2308 in FIG. 8, which are on different branches. Snapshot volume 2206 is on the branch comprising snapshot volumes 2206, 2212, 2210, and 2204, while snapshot volume 2308 is on the branch comprising snapshot volumes 2310, 2308, and 2304. Snapshot volume 2206 appears at a point in the first branch of snapshot tree after it divides into the second branch. Thus, neither snapshot 2206 or 2308 is “up the tree” from the other snapshot.
Otherwise, if there are exceptions in found in one or both branches, the node 12 compares the first exception that was found on the one branch with the first exception found on the other branch (if any), and determines at step 564 if the first exceptions in each branch point to the same location or area of data storage. If the first exceptions in each branch do point to the same area of data storage, there are no differences between the snapshot volumes 2308 and 2206 under consideration. Thus, method 550 moves to step 562 where the node 12 ignores the snapshot volumes, after which method 550 ends. Else, if at step 564 it is determined that the exceptions in the two branches do not point to the same location, then at step 566 the node 12 processes for these exceptions, after which method 550 ends.
US6823376 Apr 26, 1999 Nov 23, 2004 International Business Machines Corporation Method and system for capturing and storing system changes for application to multiple users and systems in a heterogeneous server environment
US6850945 * Feb 28, 2002 Feb 1, 2005 Veritas Operating Corporation Systems, methods and apparatus for creating stable disk images
1 "Snapshot Feature", LSI Logic Storage Systems, SANtricity brochure, 2 pages.
2 "The Enterprise Challenge Served by Snapshot", Whitepaper, LSI Logic Storage Systems, pp. 1-8.
3 * Hitz, Dave et al., "File System Design for an NFS File Server Appliance", Technical Report 3002, In Proceedings of the USENIX Winter Technical Conference, San Francisco, California, Jan. 19, 1994, pp. 1-23.
4 Suresh B. Siddha et al., "A Persistent Snapshot Device Driver for Linux", Proceedings of the 5th Annual Linux Showcase & Conference, Oakland, CA, USA, Nov. 5-10, 2001.
5 Suresh B. Siddha et al., "A Persistent Snapshot Device Driver for Linux", published Sep. 13, 2001, downloaded from http://www.linuxshowcase.org/full-papers/siddha/siddha-html/index.html on May 15, 2002. 4 pages.
6 Suresh B. Siddha et al., "A Persistent Snapshot Device Driver for Linux", published Sep. 13, 2001, downloaded from http://www.linuxshowcase.org/full—papers/siddha/siddha—html/index.html on May 15, 2002. 4 pages.
US8117410 * Nov 13, 2009 Feb 14, 2012 Vmware, Inc. Tracking block-level changes using snapshots
US8364639 * Oct 10, 2008 Jan 29, 2013 Parallels IP Holdings GmbH Method and system for creation, analysis and navigation of virtual snapshots
US8615489 Nov 12, 2009 Dec 24, 2013 Vmware, Inc. Storing block-level tracking information in the file system on the same block device
US8615495 * Aug 13, 2008 Dec 24, 2013 Symantec Corporation Techniques for providing a differential backup from a storage image
US8725689 * Jan 15, 2013 May 13, 2014 Parallels IP Holdings GmbH Method and system for creation, analysis and navigation of virtual snapshots
US8959055 * Apr 22, 2014 Feb 17, 2015 Parallels IP Holdings GmbH Method and system for creation, analysis and navigation of virtual snapshots
US9026753 * Feb 16, 2012 May 5, 2015 Hitachi, Ltd. Snapshot volume generational management for snapshot copy operations using differential data
US9135260 Feb 17, 2015 Sep 15, 2015 Parallels IP Holdings GmbH Method and system for creation, analysis and navigation of virtual snapshots
US20100076934 * Nov 12, 2009 Mar 25, 2010 Vmware, Inc. Storing Block-Level Tracking Information in the File System on the Same Block Device
US20100077165 * Nov 13, 2009 Mar 25, 2010 Vmware, Inc. Tracking Block-Level Changes Using Snapshots
US20130219138 * Feb 16, 2012 Aug 22, 2013 Hitachi, Ltd. Storage system, management server, storage apparatus, and data management method
US20150113218 * Dec 30, 2014 Apr 23, 2015 Huawei Technologies Co., Ltd. Distributed Data Processing Method and Apparatus
US20150244802 * Feb 25, 2014 Aug 27, 2015 Red Hat, Inc. Importing and exporting virtual disk images
CN103180852A * Aug 9, 2012 Jun 26, 2013 华为技术有限公司 Distributed data processing method and apparatus
CN103180852B * Aug 9, 2012 Feb 22, 2017 华为技术有限公司 分布式数据处理方法及装置
EP2821925A4 * Aug 9, 2012 Jun 10, 2015 Huawei Tech Co Ltd Distributed data processing method and apparatus
WO2013121465A1 * Feb 16, 2012 Aug 22, 2013 Hitachi, Ltd. Storage system, management server, storage apparatus, and data management method
WO2015047310A1 * Sep 27, 2013 Apr 2, 2015 Hewlett-Packard Development Company, L.P. Excluding file system objects from raw image backups
U.S. Classification 707/649, 707/651
Cooperative Classification G06F11/1458, G06F3/065, G06F2201/84, G06F3/0611, G06F3/0689, G06F11/2094
European Classification G06F11/14A, G06F3/06A2P2, G06F3/06A6L4R, G06F3/06A4H4
Owner name: 3PARDATA, INC.,CALIFORNIA
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CAMERON, GEORGE R.;HUANG, HUEICHIAN;REEL/FRAME:014316/0685
Owner name: 3PAR INC.,CALIFORNIA

type: global

value: This website is a search engine provided by Google. Handling over 3.5 billion searches per day, it has a 92% share of the global search engine market.


text:
",0); _.ie=function(a,b){b=b instanceof _.Xd?b:_.be(b);a.href=_.Yd(b)};_.ne=function(a,b){a.src=_.Rd(b)};_.oe=function(a,b){b=b instanceof _.Xd?b:_.be(b);a.href=_.Yd(b)};_.re=function(a,b,c){return _.he(b,c||null)};_.se=function(a,b,c){return a+c*(b-a)};_.te=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};_.ue=function(a,b){this.x=_.Sa(a)?a:0;this.y=_.Sa(b)?b:0};_.ue.prototype.clone=function(){return new _.ue(this.x,this.y)};_.ue.prototype.KS=_.ba(3);_.ve=function(a,b){return new _.ue(a.x-b.x,a.y-b.y)};_.g=_.ue.prototype;_.g.ceil=function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this};_.g.floor=function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this};_.g.round=function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this}; _.g.translate=function(a,b){a instanceof _.ue?(this.x+=a.x,this.y+=a.y):(this.x+=Number(a),_.Wa(b)&&(this.y+=b));return this};_.g.scale=function(a,b){b=_.Wa(b)?b:a;this.x*=a;this.y*=b;return this}; _.we=function(a,b){this.width=a;this.height=b};_.xe=function(a,b){return a==b?!0:a&&b?a.width==b.width&&a.height==b.height:!1};_.g=_.we.prototype;_.g.clone=function(){return new _.we(this.width,this.height)};_.g.Yda=function(){return this.width*this.height};_.g.aspectRatio=function(){return this.width/this.height};_.g.Ee=function(){return!this.Yda()};_.g.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this}; _.g.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};_.g.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};_.g.scale=function(a,b){b=_.Wa(b)?b:a;this.width*=a;this.height*=b;return this}; var mca,pca,uca,vca,qca,ff;_.Ae=function(a){return a?new _.ye(_.ze(a)):bba||(bba=new _.ye)};_.He=function(a,b){return _.Ta(b)?a.getElementById(b):b};_.Ie=function(a,b){return(b||window.document).getElementsByTagName(String(a))}; _.Je=function(a,b,c,d){a=d||a;b=b&&"*"!=b?String(b).toUpperCase():"";if(a.querySelectorAll&&a.querySelector&&(b||c))return a.querySelectorAll(b+(c?"."+c:""));if(c&&a.getElementsByClassName){a=a.getElementsByClassName(c);if(b){d={};for(var e=0,f=0,k;k=a[f];f++)b==k.nodeName&&(d[e++]=k);d.length=e;return d}return a}a=a.getElementsByTagName(b||"*");if(c){d={};for(f=e=0;k=a[f];f++)b=k.className,"function"==typeof b.split&&_.Cb(b.split(/\s+/),c)&&(d[e++]=k);d.length=e;return d}return a}; _.nca=function(a,b){_.wc(b,function(b,d){b&&b.Mq&&(b=b.Jj());"style"==d?a.style.cssText=b:"class"==d?a.className=b:"for"==d?a.htmlFor=b:mca.hasOwnProperty(d)?a.setAttribute(mca[d],b):_.Vb(d,"aria-")||_.Vb(d,"data-")?a.setAttribute(d,b):a[d]=b})};mca={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"}; _.Le=function(a){a=(a||window).document;a=_.Ke(a)?a.documentElement:a.body;return new _.we(a.clientWidth,a.clientHeight)};_.Ne=function(a){var b=_.Me(a);a=a.parentWindow||a.defaultView;return _.ld&&_.Gd("10")&&a.pageYOffset!=b.scrollTop?new _.ue(b.scrollLeft,b.scrollTop):new _.ue(a.pageXOffset||b.scrollLeft,a.pageYOffset||b.scrollTop)};_.Me=function(a){return a.scrollingElement?a.scrollingElement:!_.ud&&_.Ke(a)?a.documentElement:a.body||a.documentElement}; _.Oe=function(a){return a?a.parentWindow||a.defaultView:window};_.Pe=function(a,b,c){return _.oca(window.document,arguments)};_.oca=function(a,b){var c=String(b[0]),d=b[1];if(!Uba&&d&&(d.name||d.type)){c=["<",c];d.name&&c.push(' name="',_.cc(d.name),'"');if(d.type){c.push(' type="',_.cc(d.type),'"');var e={};_.v(e,d);delete e.type;d=e}c.push(">");c=c.join("")}c=a.createElement(c);d&&(_.Ta(d)?c.className=d:_.cb(d)?c.className=d.join(" "):_.nca(c,d));2this.R&&(this.R++,a.next=this.H,this.H=a)}; var kf,lf,Ica,Jca;kf=[];lf=[];Ica=!1;_.mf=function(a){kf[kf.length]=a;if(Ica)for(var b=0;b=b)return a}return null};_.If=function(a){return a?a.__owner?a.__owner:a.parentNode&&11===a.parentNode.nodeType?a.parentNode.host:_.af(a):null};_.pda=function(a,b,c,d){for(c||(a=_.oda(a,d));a;){if(b(a))return a;a=_.oda(a,d)}return null}; var qda=function(a,b,c){this.action=a;this.target=b||null;this.Uf=c||null},rda=function(){this.H=[]},sda=/^\.?(\w+)(?:\(([\w|=]+)\))?$/,tda={},uda=function(a){var b=tda[a];if(b)return b;b=a.split(",");for(var c=new rda,d=0;d2*this.Ie&&jg(this),!0):!1}; var jg=function(a){if(a.Ie!=a.H.length){for(var b=0,c=0;b=d.H.length)throw _.gg;var e=d.H[b++];return a?e:d.R[e]};return e};var kg=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)}; _.Eda=function(){return _.ud?"Webkit":_.td?"Moz":_.ld?"ms":_.ed?"O":null};_.mg=function(a,b,c,d){this.top=a;this.right=b;this.bottom=c;this.left=d};_.g=_.mg.prototype;_.g.zc=function(){return this.right-this.left};_.g.getHeight=function(){return this.bottom-this.top};_.g.clone=function(){return new _.mg(this.top,this.right,this.bottom,this.left)};_.g.contains=function(a){return this&&a?a instanceof _.mg?a.left>=this.left&&a.right<=this.right&&a.top>=this.top&&a.bottom<=this.bottom:a.x>=this.left&&a.x<=this.right&&a.y>=this.top&&a.y<=this.bottom:!1}; _.g.ceil=function(){this.top=Math.ceil(this.top);this.right=Math.ceil(this.right);this.bottom=Math.ceil(this.bottom);this.left=Math.ceil(this.left);return this};_.g.floor=function(){this.top=Math.floor(this.top);this.right=Math.floor(this.right);this.bottom=Math.floor(this.bottom);this.left=Math.floor(this.left);return this};_.g.round=function(){this.top=Math.round(this.top);this.right=Math.round(this.right);this.bottom=Math.round(this.bottom);this.left=Math.round(this.left);return this}; _.g.translate=function(a,b){a instanceof _.ue?(this.left+=a.x,this.right+=a.x,this.top+=a.y,this.bottom+=a.y):(this.left+=a,this.right+=a,_.Wa(b)&&(this.top+=b,this.bottom+=b));return this};_.g.scale=function(a,b){b=_.Wa(b)?b:a;this.left*=a;this.right*=a;this.top*=b;this.bottom*=b;return this}; _.ng=function(a,b,c,d){this.left=a;this.top=b;this.width=c;this.height=d};_.ng.prototype.clone=function(){return new _.ng(this.left,this.top,this.width,this.height)};_.ng.prototype.contains=function(a){return a instanceof _.ue?a.x>=this.left&&a.x<=this.left+this.width&&a.y>=this.top&&a.y<=this.top+this.height:this.left<=a.left&&this.left+this.width>=a.left+a.width&&this.top<=a.top&&this.top+this.height>=a.top+a.height};_.ng.prototype.cy=_.ba(5); _.ng.prototype.Rd=function(){return new _.we(this.width,this.height)};_.og=function(a){return new _.ue(a.left,a.top)};_.g=_.ng.prototype;_.g.ceil=function(){this.left=Math.ceil(this.left);this.top=Math.ceil(this.top);this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};_.g.floor=function(){this.left=Math.floor(this.left);this.top=Math.floor(this.top);this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this}; _.g.round=function(){this.left=Math.round(this.left);this.top=Math.round(this.top);this.width=Math.round(this.width);this.height=Math.round(this.height);return this};_.g.translate=function(a,b){a instanceof _.ue?(this.left+=a.x,this.top+=a.y):(this.left+=a,_.Wa(b)&&(this.top+=b));return this};_.g.scale=function(a,b){b=_.Wa(b)?b:a;this.left*=a;this.width*=a;this.top*=b;this.height*=b;return this}; var Gda,Fda,Jda,Nda,Dg,Oda,Eg;_.pg=function(a,b,c){if(_.Ta(b))(b=Fda(a,b))&&(a.style[b]=c);else for(var d in b){c=a;var e=b[d],f=Fda(c,d);f&&(c.style[f]=e)}};Gda={};Fda=function(a,b){var c=Gda[b];if(!c){var d=qba(b);c=d;void 0===a.style[d]&&(d=_.Eda()+_.rba(d),void 0!==a.style[d]&&(c=d));Gda[b]=c}return c};_.Hda=function(a,b){var c=a.style[qba(b)];return"undefined"!==typeof c?c:a.style[Fda(a,b)]||""}; _.qg=function(a,b){var c=_.ze(a);return c.defaultView&&c.defaultView.getComputedStyle&&(a=c.defaultView.getComputedStyle(a,null))?a[b]||a.getPropertyValue(b)||"":""};_.rg=function(a,b){return _.qg(a,b)||(a.currentStyle?a.currentStyle[b]:null)||a.style&&a.style[b]};_.sg=function(a){return _.rg(a,"position")};_.ug=function(a,b,c){if(b instanceof _.ue){var d=b.x;b=b.y}else d=b,b=c;a.style.left=_.tg(d,!1);a.style.top=_.tg(b,!1)}; _.Ida=function(a){a=a?_.ze(a):window.document;return!_.ld||_.Hd(9)||_.Ke(_.Ae(a).H)?a.documentElement:a.body};Jda=function(a){try{var b=a.getBoundingClientRect()}catch(c){return{left:0,top:0,right:0,bottom:0}}_.ld&&a.ownerDocument.body&&(a=a.ownerDocument,b.left-=a.documentElement.clientLeft+a.body.clientLeft,b.top-=a.documentElement.clientTop+a.body.clientTop);return b}; _.vg=function(a){var b=_.ze(a),c=new _.ue(0,0),d=_.Ida(b);if(a==d)return c;a=Jda(a);b=_.Ne(_.Ae(b).H);c.x=a.left+b.x;c.y=a.top+b.y;return c};_.xg=function(a,b){a=_.wg(a);b=_.wg(b);return new _.ue(a.x-b.x,a.y-b.y)};_.Kda=function(a){a=Jda(a);return new _.ue(a.left,a.top)};_.wg=function(a){if(1==a.nodeType)return _.Kda(a);a=a.changedTouches?a.changedTouches[0]:a;return new _.ue(a.clientX,a.clientY)};_.tg=function(a,b){"number"==typeof a&&(a=(b?Math.round(a):a)+"px");return a}; _.yg=function(a){var b=_.Lda;if("none"!=_.rg(a,"display"))return b(a);var c=a.style,d=c.display,e=c.visibility,f=c.position;c.visibility="hidden";c.position="absolute";c.display="inline";a=b(a);c.display=d;c.position=f;c.visibility=e;return a};_.Lda=function(a){var b=a.offsetWidth,c=a.offsetHeight,d=_.ud&&!b&&!c;return _.Sa(b)&&!d||!a.getBoundingClientRect?new _.we(b,c):(a=Jda(a),new _.we(a.right-a.left,a.bottom-a.top))};_.zg=function(a){var b=_.vg(a);a=_.yg(a);return new _.ng(b.x,b.y,a.width,a.height)}; _.Ag=function(a,b){a.style.display=b?"":"none"};_.Cg=function(a,b){var c=_.Ke(_.Ae(_.ze(a)).H);if(!_.ld||_.Gd("10")||c&&_.Gd("8")){var d=a.style;_.td?d.MozBoxSizing="border-box":_.ud?d.WebkitBoxSizing="border-box":d.boxSizing="border-box";d.width=Math.max(b.width,0)+"px";d.height=Math.max(b.height,0)+"px"}else d=a.style,c?(c=_.Mda(a,"padding"),a=_.Bg(a),d.pixelWidth=b.width-a.left-c.left-c.right-a.right,d.pixelHeight=b.height-a.top-c.top-c.bottom-a.bottom):(d.pixelWidth=b.width,d.pixelHeight=b.height)}; Nda=function(a,b){if(/^\d+px?$/.test(b))return(0,window.parseInt)(b,10);var c=a.style.left,d=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;a.style.left=b;b=a.style.pixelLeft;a.style.left=c;a.runtimeStyle.left=d;return+b};Dg=function(a,b){return(b=a.currentStyle?a.currentStyle[b]:null)?Nda(a,b):0}; _.Mda=function(a,b){if(_.ld){var c=Dg(a,b+"Left"),d=Dg(a,b+"Right"),e=Dg(a,b+"Top");a=Dg(a,b+"Bottom");return new _.mg(e,d,a,c)}c=_.qg(a,b+"Left");d=_.qg(a,b+"Right");e=_.qg(a,b+"Top");a=_.qg(a,b+"Bottom");return new _.mg((0,window.parseFloat)(e),(0,window.parseFloat)(d),(0,window.parseFloat)(a),(0,window.parseFloat)(c))};Oda={thin:2,medium:4,thick:6}; Eg=function(a,b){if("none"==(a.currentStyle?a.currentStyle[b+"Style"]:null))return 0;b=a.currentStyle?a.currentStyle[b+"Width"]:null;return b in Oda?Oda[b]:Nda(a,b)}; _.Bg=function(a){if(_.ld&&!_.Hd(9)){var b=Eg(a,"borderLeft"),c=Eg(a,"borderRight"),d=Eg(a,"borderTop");a=Eg(a,"borderBottom");return new _.mg(d,c,a,b)}b=_.qg(a,"borderLeftWidth");c=_.qg(a,"borderRightWidth");d=_.qg(a,"borderTopWidth");a=_.qg(a,"borderBottomWidth");return new _.mg((0,window.parseFloat)(d),(0,window.parseFloat)(c),(0,window.parseFloat)(a),(0,window.parseFloat)(b))}; /* Portions of this code are from MochiKit, received by The Closure Authors under the MIT license. All other code is Copyright 2005-2009 The Closure Authors. All Rights Reserved. */ var Sda,Tda,Qda,Vda,Hg;_.Fg=function(a,b){this.ta=[];this.kb=a;this.hb=b||null;this.V=this.H=!1;this.T=void 0;this.Ba=this.Bb=this.wa=!1;this.ra=0;this.R=null;this.ka=0};_.Fg.prototype.cancel=function(a){if(this.H)this.T instanceof _.Fg&&this.T.cancel();else{if(this.R){var b=this.R;delete this.R;a?b.cancel(a):(b.ka--,0>=b.ka&&b.cancel())}this.kb?this.kb.call(this.hb,this):this.Ba=!0;this.H||this.Ch(new _.Gg(this))}};_.Fg.prototype.Fa=function(a,b){this.wa=!1;Pda(this,a,b)}; var Pda=function(a,b,c){a.H=!0;a.T=c;a.V=!b;Qda(a)},Rda=function(a){if(a.H){if(!a.Ba)throw new Hg(a);a.Ba=!1}};_.Fg.prototype.callback=function(a){Rda(this);Pda(this,!0,a)};_.Fg.prototype.Ch=function(a){Rda(this);Pda(this,!1,a)};_.Jg=function(a,b,c){return _.Ig(a,b,null,c)};_.Kg=function(a,b,c){return _.Ig(a,null,b,c)};Sda=function(a,b,c){_.Ig(a,b,b,c)};_.Ig=function(a,b,c,d){a.ta.push([b,c,d]);a.H&&Qda(a);return a}; _.Fg.prototype.then=function(a,b,c){var d,e,f=new _.xf(function(a,b){d=a;e=b});_.Ig(this,d,function(a){a instanceof _.Gg?f.cancel():e(a)});return f.then(a,b,c)};_.Wca(_.Fg);_.Lg=function(a,b){b instanceof _.Fg?_.Jg(a,(0,_.q)(b.Ye,b)):_.Jg(a,function(){return b})};_.Fg.prototype.Ye=function(a){var b=new _.Fg;_.Ig(this,b.callback,b.Ch,b);a&&(b.R=this,this.ka++);return b};_.Fg.prototype.isError=function(a){return a instanceof Error};Tda=function(a){return(0,_.xb)(a.ta,function(a){return _.eb(a[1])})}; Qda=function(a){if(a.ra&&a.H&&Tda(a)){var b=a.ra,c=Mg[b];c&&(_.Qa.clearTimeout(c.H),delete Mg[b]);a.ra=0}a.R&&(a.R.ka--,delete a.R);b=a.T;for(var d=c=!1;a.ta.length&&!a.wa;){var e=a.ta.shift(),f=e[0],k=e[1];e=e[2];if(f=a.V?k:f)try{var l=f.call(e||a.hb,b);_.Sa(l)&&(a.V=a.V&&(l==b||a.isError(l)),a.T=b=l);if(Xca(b)||"function"===typeof _.Qa.Promise&&b instanceof _.Qa.Promise)d=!0,a.wa=!0}catch(p){b=p,a.V=!0,Tda(a)||(c=!0)}}a.T=b;d&&(l=(0,_.q)(a.Fa,a,!0),d=(0,_.q)(a.Fa,a,!1),b instanceof _.Fg?(_.Ig(b, l,d),b.Bb=!0):b.then(l,d));c&&(b=new Uda(b),Mg[b.H]=b,a.ra=b.H)};_.Ng=function(a){var b=new _.Fg;b.callback(a);return b};Vda=function(a){var b=new _.Fg;a.then(function(a){b.callback(a)},function(a){b.Ch(a)});return b};_.Og=function(a){var b=new _.Fg;b.Ch(a);return b};Hg=function(a){_.lb.call(this);this.Wf=a};_.r(Hg,_.lb);Hg.prototype.message="Deferred has already fired";Hg.prototype.name="AlreadyCalledError";_.Gg=function(a){_.lb.call(this);this.Wf=a};_.r(_.Gg,_.lb);_.Gg.prototype.message="Deferred was canceled"; _.Gg.prototype.name="CanceledError";var Uda=function(a){this.H=_.Qa.setTimeout((0,_.q)(this.T,this),0);this.R=a};Uda.prototype.T=function(){delete Mg[this.H];throw this.R;};var Mg={}; var cea,Wda,Yda;_.Pg=function(a){a instanceof _.Pg?a=a.Ue:a[0]instanceof _.Pg&&(a=(0,_.wb)(a,function(a,c){return _.Kb(a,c.Ue)},[]),_.Rb(a));this.Ue=_.Nb(a)};_.g=_.Pg.prototype;_.g.qd=function(a,b){(0,_.pb)(this.Ue,a,b);return this};_.g.size=function(){return this.Ue.length};_.g.get=function(a){return this.Ue[a]};_.g.Aa=function(){return this.Ue[0]||null};_.g.vd=function(){return this.Ue.slice()};_.g.map=function(a,b){return(0,_.sb)(this.Ue,a,b)};_.g.Ic=_.ba(7);_.g.Hc=_.ba(9); _.g.find=function(a){var b=[];this.qd(function(c){c=c.querySelectorAll(String(a));for(var d=0;d<"+this.R+">: "+this.H+"-"+typeof this.H);};_.Rg.prototype.$b=_.ba(14); _.Rg.prototype.Dc=function(a){if(null==this.H)return 0==arguments.length&&_.Zda(this),a;if(_.Wa(this.H))return this.H;if(_.Ta(this.H)){var b=Number(this.H);if(!(0,window.isNaN)(b)&&!_.Yb(this.H))return b}throw new TypeError("Invalid numeric data <"+this.R+">: "+this.H+"-"+typeof this.H);};_.Xg=function(a){return null!=a.H};_.Rg.prototype.toString=function(){return this.Wa()};_.aea=function(){var a=_.Yg("zChJod"),b=$da;if(null==a.H)throw Error("C`"+a.R);a=a.Wa();return _.Gf(a,b)}; _.bea=function(a,b,c){if(null==a.H)return c;a=a.Wa();return _.Gf(a,b)};_.Rg.prototype.V=_.ba(15);_.Rg.prototype.T=_.ba(16);cea=/^\[([a-z0-9-]+)(="([^\\"]*)")?]$/;Wda=function(a){if("string"==typeof a){if("."==a.charAt(0))return _.Zg(a.substr(1));if("["==a.charAt(0)){var b=cea.exec(a);a=-1==a.indexOf("=")?void 0:b[3];return _.$g(b[1],a)}return _.dea(a)}return a};_.Zg=function(a){return function(b){return b.getAttribute&&_.Rf(b,a)}}; _.$g=function(a,b){return function(c){return _.Sa(b)?c.getAttribute&&c.getAttribute(a)==b:c.hasAttribute&&c.hasAttribute(a)}};_.dea=function(a){a=a.toUpperCase();return function(b){return(b=b.tagName)&&b.toUpperCase()==a}};Yda=function(){return!0}; _.Yg=function(a){var b=window.WIZ_global_data;return b&&a in b?new _.Rg(a,b[a]):new _.Rg(a,null)};_.eea=function(a){for(var b=[],c=0,d=0;d>=8);b[c++]=e}return b};var ah,fea;ah=null;_.bh=null;fea=null;_.ch=function(a,b){_.gea();b=b?fea:ah;for(var c=[],d=0;d>2;e=(e&3)<<4|k>>4;k=(k&15)<<2|p>>6;p&=63;l||(p=64,f||(k=64));c.push(b[t],b[e],b[k],b[p])}return c.join("")}; _.gea=function(){if(!ah){ah={};_.bh={};fea={};for(var a=0;65>a;a++)ah[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),_.bh[ah[a]]=a,fea[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),62<=a&&(_.bh["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a)]=a)}}; var dh,eh,hea,iea,kea,lea,oea,pea,nea,qea;_.x=function(a,b){this.nh=a;this.wb=b};_.z=function(){};dh="function"==typeof window.Uint8Array; _.A=function(a,b,c,d,e,f){a.H=null;b||(b=c?[c]:[]);a.Na=c?String(c):void 0;a.ta=0===c?-1:0;a.T=b;a:{if(a.T.length&&(b=a.T.length-1,(c=a.T[b])&&"object"==typeof c&&!_.cb(c)&&!(dh&&c instanceof window.Uint8Array))){a.ra=b-a.ta;a.R=c;break a}-1<=d){b.push("[...long stack...]");break}}a&&d>=a?b.push("[...reached max depth limit...]"): b.push("[end]");return b.join("")},yea=function(a){var b=Error();if(Error.captureStackTrace)return Error.captureStackTrace(b,a),String(b.stack);try{throw b;}catch(c){b=c}return(a=b.stack)?String(a):null},Bea=function(a){var b;(b=yea(a||Bea))||(b=Cea(a||arguments.callee.caller,[]));return b},Cea=function(a,b){var c=[];if(_.Cb(b,a))c.push("[...circular reference...]");else if(a&&50>b.length){c.push(Aea(a)+"(");for(var d=a.arguments,e=0;d&&e=a.keyCode)a.keyCode=-1}catch(b){}}; _.yh.prototype.E3=_.ba(17); var Fea;_.zh="closure_listenable_"+(1E6*Math.random()|0);_.Ah=function(a){return!(!a||!a[_.zh])};Fea=0;var Gea=function(a,b,c,d,e){this.listener=a;this.H=null;this.src=b;this.type=c;this.capture=!!d;this.Vm=e;this.key=++Fea;this.Iz=this.vI=!1},Bh=function(a){a.Iz=!0;a.listener=null;a.H=null;a.src=null;a.Vm=null};var Ch=function(a){this.src=a;this.H={};this.R=0};Ch.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.H[f];a||(a=this.H[f]=[],this.R++);var k=Hea(a,b,d,e);-1c.keyCode||void 0!=c.returnValue)){a:{var e=!1;if(0==c.keyCode)try{c.keyCode=-1;break a}catch(k){e=!0}if(e||void 0==c.returnValue)c.returnValue=!0}c=[];for(e=b.currentTarget;e;e=e.parentNode)c.push(e);a=a.type;for(e=c.length-1;!b.Ow&&0<=e;e--){b.currentTarget=c[e];var f=Rea(c[e],a,!0,b);d=d&&f}for(e=0;!b.Ow&&e>>0);Fh=function(a){if(_.eb(a))return a;a[Sea]||(a[Sea]=function(b){return a.handleEvent(b)});return a[Sea]};_.mf(function(a){Pea=a(Pea)}); _.Jh=function(){_.rh.call(this);this.Nr=new Ch(this);this.nda=this;this.vW=null};_.r(_.Jh,_.rh);_.Jh.prototype[_.zh]=!0;_.g=_.Jh.prototype;_.g.YC=function(){return this.vW};_.g.Uz=function(a){this.vW=a};_.g.addEventListener=function(a,b,c,d){_.Eh(this,a,b,c,d)};_.g.removeEventListener=function(a,b,c,d){_.Hh(this,a,b,c,d)}; _.g.dispatchEvent=function(a){var b,c=this.YC();if(c)for(b=[];c;c=c.YC())b.push(c);c=this.nda;var d=a.type||a;if(_.Ta(a))a=new _.xh(a,c);else if(a instanceof _.xh)a.target=a.target||c;else{var e=a;a=new _.xh(d,c);_.v(a,e)}e=!0;if(b)for(var f=b.length-1;!a.Ow&&0<=f;f--){var k=a.currentTarget=b[f];e=k.wC(d,!0,a)&&e}a.Ow||(k=a.currentTarget=c,e=k.wC(d,!0,a)&&e,a.Ow||(e=k.wC(d,!1,a)&&e));if(b)for(f=0;!a.Ow&&fb?null:a.substr(b+1)};_.Wh=function(a){a=a.match(_.Qh);return _.Ph(a[1],a[2],a[3],a[4])};_.Tea=function(a,b){if(a){a=a.split("&");for(var c=0;cc&&(c=a.length);var d=a.indexOf("?");if(0>d||d>c){d=c;var e=""}else e=a.substring(d+1,c);a=[a.substr(0,d),e,a.substr(c)];c=a[1];a[1]=b?c?c+"&"+b:b:c;return a[0]+(a[1]?"?"+a[1]:"")+a[2]};Vea=function(a,b,c){if(_.cb(b))for(var d=0;dd)return null;var e=a.indexOf("&",d);if(0>e||e>c)e=c;d+=b.length+1;return(0,window.decodeURIComponent)(a.substr(d,e-d).replace(/\+/g," "))};Yea=/[?&]($|#)/;_.bi=function(a,b){for(var c=a.search(_.$h),d=0,e,f=[];0<=(e=_.Zh(a,d,b,c));)f.push(a.substring(d,e)),d=Math.min(a.indexOf("&",e)+1||c,c);f.push(a.substr(d));return f.join("").replace(Yea,"$1")}; var Zea="gpcaz tab gpsrc gpsls wwc plsa plsatok prsrc apisrc vnl socpid socfid phselids plus_info ppsu _rmrp".split(" "),afa=function(){var a=$ea;(0,_.pb)(Zea,function(b){a=_.bi(a,b)});return a},bfa=function(a){var b=window;return new _.xf(function(c,d){var e=b.document.documentElement,f=e.style.pointerEvents;e.style.pointerEvents="none";var k=_.Nh(4E3).then(function(){d("Origin check taking too long.")}),l=function(p){var t=p.origin;p.source==b.parent&&"verify-origin-reply"==p.data&&(t==a?(k.cancel(), e.style.pointerEvents=f,b.removeEventListener("message",l),c()):d("Claimed origin "+a+" did not match parent origin: "+t))};b.addEventListener("message",l);b.parent.postMessage("verify-origin",a)})},cfa=function(a){var b=window;return b.location.origin&&b.location.ancestorOrigins?(0,_.zb)(b.location.ancestorOrigins,function(c){return c==a||c==b.location.origin}):!1}; (function(){var a;if(window!=window.top&&(!_.Pc()||window.frames!=window.top))if(_.B(_.nh,4)){if(_.Pc()&&0<=_.pc(_.Aba(),9)||_.Sc()&&0<=_.pc(_.Aba(),33))return;var b=_.Yg("liWUH").Wa(null);b&&(window.location.origin&&window.location.ancestorOrigins?cfa(b)||(a="Claimed origin "+b+"did not match location.ancestorOrigins."):_.Df(bfa(b),function(b){a="Origin check failed. "+b;_.oe(window.location,cca);return!0}))}else a="Attempting to iframe without @AllowFraming annotation.";a&&_.oe(window.location, cca)})();var $ea=window.location.href;window.BOQ_originalHref=$ea;if(window.history.replaceState){var dfa=afa();dfa!=$ea&&window.history.replaceState(null,window.document.title||"",dfa)}; _.ci={};_.di={};_.ei={};_.fi={};_.gi=function(a){_.A(this,a,0,-1,null,null)};_.r(_.gi,_.z);_.efa=new _.x(90848875,_.gi);_.ffa=function(a){_.A(this,a,0,-1,null,null)};_.r(_.ffa,_.z);_.gfa=new _.x(154852854,_.ffa);_.hi=function(a,b,c){this.R=a;this.tm=b||null;this.H=c||[]};_.hi.prototype.toString=function(){return this.R};_.Hf.R={};_.Hf.R.fP="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";_.Hf.R.YO=_.Hf.R.fP+"0123456789";_.Hf.R.gP=_.Hf.R.fP.length;_.Hf.R.dP=_.Hf.R.YO.length;_.Hf.R.O_=-2147483648;_.Hf.R.HTa=function(a){for(var b=0,c=a.length-1;0<=c;c--){var d=_.Hf.R.YO.indexOf(a.charAt(c));b=b*(0==c?_.Hf.R.gP:_.Hf.R.dP)+d}return b+_.Hf.R.O_}; _.Hf.R.toString=function(a){var b=[],c=0;a-=_.Hf.R.O_;b[c++]=_.Hf.R.fP.charAt(a%_.Hf.R.gP);for(a=Math.floor(a/_.Hf.R.gP);0>>13;c-=d;c-=b;c^=b<<8;d-=b;d-=c;d^=c>>>13;b-=c;b-=d;b^=d>>>12;c-=d;c-=b;c^=b<<16;d-=b;d-=c;d^=c>>>5;b-=c;b-=d;b^=d>>>3;c-=d;c-=b;c^=b<<10;d-=b;d-=c;d^=c>>>15};12<=f;f-=12,k+=12)b+=_.Hf.H.Fv(a,k),c+=_.Hf.H.Fv(a,k+4),d+=_.Hf.H.Fv(a,k+8),l();d+=e;switch(f){case 11:d+=a[k+10]<<24;case 10:d+=a[k+9]<<16;case 9:d+=a[k+8]<<8;case 8:c+=a[k+7]<<24;case 7:c+=a[k+6]<<16;case 6:c+= a[k+5]<<8;case 5:c+=a[k+4];case 4:b+=a[k+3]<<24;case 3:b+=a[k+2]<<16;case 2:b+=a[k+1]<<8;case 1:b+=a[k]}l();return _.Hf.R.toString(d)};_.Hf.H.gr=function(a){return a};_.Hf.H.nJa=function(a){for(var b=[],c=0;c<<8)+(a[b+2]<<16)+(a[b+3]<<24)}; var ifa;_.hfa=new _.hi("yRRtR");ifa=new _.hi("pVbxBc");_.ii=new _.hi("n73qwf");_.ji=new _.hi("GHAeAc",_.Hf.H.gr("GHAeAc"));_.ki=new _.hi("Wt6vjf");_.jfa=new _.hi("byfTOb");_.li=new _.hi("LEikZe");_.kfa=new _.hi("rJmJrc");_.F=new _.hi("MpJwZc");_.mi=new _.hi("UUJqVe");_.lfa=new _.hi("lsjVmc"); _.ni=new _.hi("gychg",void 0,[_.li]);_.oi=new _.hi("xUdipf");_.pi=new _.hi("Ulmmrd",void 0,[_.ni]);_.qi=new _.hi("NwH0H",void 0,[_.oi]);var ri,si,nfa,mfa;ri={};si={};nfa=function(a,b){var c=b?ri:si,d=c[a.toString()];d||(mfa(b),d=c[a.toString()]);return d};mfa=function(a){var b=a?_.ci:_.ei;a=a?ri:si;for(var c in b){var d=b[(0,window.parseInt)(c,10)],e=d.wb.prototype.Va;e&&(a[e]=d.nh)}};_.ofa=function(a){var b=nfa(a.Va,!0);return{rb:_.di[b],Fc:_.ci[b],request:a}};_.pfa=function(a){var b=nfa(a.Va,!1);return{rb:_.fi[b],ac:_.ei[b],Ub:a}}; _.qfa={};_.ti=function(a,b){this.H=a;this.Zc=b;a.prototype.Va&&(_.qfa[a.prototype.Va]=this)};_.ti.prototype.Kb=function(a){return new this.H(a)};_.ui=function(a){var b;a instanceof _.z?b=a.Va:a instanceof _.ti?b=a.H.prototype.Va:b=a.prototype.Va;return b}; _.vi=function(a,b,c){this.H=a;this.Ig=b;this.ox=c||{}};_.vi.prototype.wg=function(){return this.H};_.vi.prototype.A4=_.ba(18);_.H=function(a,b,c){this.R=a;this.Yw=b;this.oN=c;this.H=(0,window.parseInt)(a,10)||null};_.H.prototype.toString=function(){return this.R};_.H.prototype.Kb=function(a){return new _.vi(this,a)};_.H.prototype.ka=_.ba(20);_.H.prototype.matches=function(a){return this.R==a.R||this.H&&this.H.toString()==a.R||a.H&&a.H.toString()==this.R?!0:!1}; _.rfa=function(a){return!(_.fb(a)&&(!_.Sa(a.Fc)||a.Fc instanceof _.x)&&a.rb instanceof _.x)||_.Sa(a.request)&&!(a.request instanceof _.z)||_.Sa(a.Iv)&&!_.Va(a.Iv)||_.Sa(a.ow)&&(!_.Wa(a.ow)||0>a.ow)?!1:!0}; _.wi=function(a){if(_.eb(a.wg))return a.wg();var b=-1;if(a instanceof _.z){var c=a.Va;var d=ri[c.toString()];d||(mfa(!0),d=ri[c.toString()]);d?c=!0:(d=si[c.toString()],d||(mfa(!1),d=si[c.toString()]),c=d?!1:void 0);a=c?_.ofa(a):_.pfa(a)}a instanceof _.x?b=a.nh:a.Fc?b=a.Fc.nh:a.ac?b=a.ac.nh:a.rb&&(b=a.rb.nh);d=_.ci[b]||_.ei[b];a=_.di[b]||_.fi[b];c=_.Za;d&&(c=d.wb);d=_.Za;a&&(d=a.wb);return new _.H(b+"",d,c)};_.xi=function(a,b){return new _.H(a.nh+"",a.wb,b?b.wb:_.Za)}; _.yi=function(a){var b=a.wg().H;if(null==b||0>b)return null;var c=_.di[b];if(c){var d=a.ox[_.efa.nh],e=a.ox[_.gfa.nh];a={rb:c,Fc:_.ci[b],request:a.Ig,Iv:d&&_.B(d,1)};e&&_.B(e,1)&&(a.ow=_.B(e,1));return a}return(e=_.ei[b])?a={rb:_.fi[b],ac:e,Ub:a.Ig}:null}; _.zi=_.w("wZVHld");_.Ai=_.w("nDa8ic");_.sfa=_.w("o07HZc");_.Bi=_.w("UjQMac");var Hi,Ii;_.tfa=_.w("ti6hGc");_.Ci=_.w("ZYIfFd");_.ufa=_.w("eQsQB");_.vfa=_.w("O1htCb");_.wfa=_.w("g6cJHd");_.xfa=_.w("otb29e");_.Di=_.w("AHmuwe");_.yfa=_.w("O22p3e");_.Fi=_.w("JIbuQc");_.zfa=_.w("ih4XEb");_.Gi=_.w("GvneHb");Hi=_.w("rcuQ6b");Ii=_.w("dyRcpb"); var Afa=function(a){var b={},c={},d=[],e=[],f=function(a){if(!c[a]){var e=a instanceof _.hi?a.H:[];c[a]=_.Nb(e);(0,_.pb)(e,function(c){b[c]=b[c]||[];b[c].push(a)});e.length||d.push(a);(0,_.pb)(e,f)}};for((0,_.pb)(a,f);d.length;){var k=d.shift();e.push(k);b[k]&&(0,_.pb)(b[k],function(a){_.Gb(c[a],k);c[a].length||d.push(a)})}var l={},p=[];(0,_.pb)(e,function(a){a instanceof _.hi&&(a=a.tm,null==a||l[a]||(l[a]=!0,p.push(a)))});return{OGa:e,oua:p}}; var Ji=function(){_.rh.call(this)};_.r(Ji,_.rh);Ji.prototype.Pe=function(){};var Ki=function(a,b){this.H=a;this.R=b};Ki.prototype.execute=function(a){this.H&&(this.H.call(this.R||null,a),this.H=this.R=null)};Ki.prototype.abort=function(){this.R=this.H=null};_.mf(function(a){Ki.prototype.execute=a(Ki.prototype.execute)});_.Li=function(a,b){_.rh.call(this);this.ta=a;this.ra=b;this.ka=[];this.V=[];this.H=[]};_.r(_.Li,_.rh);_.Li.prototype.R=Ji;_.Li.prototype.T=null;_.Li.prototype.getId=function(){return this.ra};var Bfa=function(a,b){a.V.push(new Ki(b,void 0))};_.Li.prototype.Qe=function(){return!!this.T};var Dfa=function(a,b){var c=new a.R;c.Pe(b());a.T=c;c=(c=!!Cfa(a.H,b()))||!!Cfa(a.ka,b());c||(a.V.length=0);return c}; _.Li.prototype.Ca=function(a){(a=Cfa(this.V,a))&&window.setTimeout(_.rf("Module errback failures: "+a),0);this.H.length=0;this.ka.length=0};var Cfa=function(a,b){for(var c=[],d=0;d<"+b+"> but the service was not registered in that module.")}; var K,$i,Sfa,Tfa;_.Yi=function(a,b,c){return new _.hi(a,b,c)};K=function(a,b,c){b=_.Yi(a,b,c);_.Zi[a]=b;_.Hf.H.gr(String(b));return b};$i=function(a,b){Sfa(b).push(a)};Sfa=function(a){a=a.toString();return Tfa[a]=Tfa[a]||[]};Tfa={};_.Zi={};_.aj=function(a){_.rh.call(this);this.V=a;this.H={}};_.r(_.aj,_.rh);var Ufa=[];_.aj.prototype.listen=function(a,b,c,d){return _.bj(this,a,b,c,d)};_.bj=function(a,b,c,d,e,f){_.cb(c)||(c&&(Ufa[0]=c.toString()),c=Ufa);for(var k=0;kthis.ab&&(this.ab=c);for(var d=c-this.Ca,e=this.Na.length;0d;)e--;_.Qb(this.Na,e,0,[a,d,b.Yia]);this.hb[a]=c}; _.g.done=function(a,b,c){this.R||!this.H[a]?lj(this,"done",a,b):(b&&this.wh(b,c),this.H[a]--,0==this.H[a]&&delete this.H[a],_.Ic(this.H)&&qga(this)&&(this.R=!0,_.Gb(oga,this),this.Nf=this.ra=null,this.Fd()))};_.g.Ye=function(a,b,c){this.R&&lj(this,"branch",a,b);b&&this.wh(b,c);this.H[a]?this.H[a]++:this.H[a]=1}; var qga=function(a){if(!_.jj)return!0;if(a.Ta){var b=new _.ij("abandoned",a);a.dispatchEvent(b);_.jj.dispatchEvent(b);return!0}0Math.random(); aha=function(a){var b=[];a=Fj(a);var c;a.Mp[_.ii]&&(c=a.Mp[_.ii][0]);c&&b.push(c);a=a.V||[];for(var d=0;dc.H.length&&c.H.push([a,b]))};pha=function(a){a.H&&((0,_.pb)(a.H,function(a){rha(this.R,a[1],a[0])},a),a.H=null)};oha=new nha;sha=function(a){_.Kj(null,a)}; var tha=function(){var a=window;if(!a.location)try{(0,_.hf)(a)}catch(c){}var b=a.location&&a.location.ancestorOrigins;if(_.Sa(b))return b&&b.length?b[b.length-1]==a.location.origin:!0;try{return _.Sa(a.top.location.href)}catch(c){return!1}};var Lj={},uha=function(){var a={};a.location=window.document.location.toString();if(tha())try{a["top.location"]=window.top.location.toString()}catch(c){a["top.location"]="[external]"}else a["top.location"]="[external]";for(var b in Lj)try{a[b]=Lj[b].call()}catch(c){a[b]="[error] "+c.message}return a}; var vha=function(a){this.H=a;this.T={};this.R=[]},rha=function(a,b,c){var d=uha();d["call-stack"]=Bea();c&&(d.message=c);var e;b instanceof Error?e=b:e=b||"";b="";if(e){b=e.message||"unknown";for(var f=c=0;f>>0;b=c}c="";for(k in d)c=c+k+":"+d[k]+":";var k=b+"::"+c;b=a.T[k];b||(b={time:0,count:0},a.T[k]=b);if(1E4>(0,_.jb)()-b.time)b.count++,1==b.count&&(d=uha(),d.message="Throttling: "+k,a.H.R(e,d));else{b.count&&(d["dropped-instances"]=b.count);b.time=(0,_.jb)(); for(k=b.count=0;k<_.Vj(this)?this.H.status:-1}catch(a){return-1}};_.Rj.prototype.th=function(){try{return this.H?this.H.responseText:""}catch(a){return""}};_.Rj.prototype.ka=_.ba(19);_.Rj.prototype.getAllResponseHeaders=function(){return this.H&&4==_.Vj(this)?this.H.getAllResponseHeaders():""};_.mf(function(a){_.Rj.prototype.kb=a(_.Rj.prototype.kb)}); var Wj=function(a,b,c){_.Jh.call(this);this.V=b||null;this.T={};this.ta=Lha;this.ka=a;c||(this.H=null,_.ld&&!_.Gd("10")?xea((0,_.q)(this.R,this),!1,null):(this.H=new Mj((0,_.q)(this.R,this)),Oj(this.H,"setTimeout"),Oj(this.H,"setInterval"),zha(this.H),Jca(this.H)))};_.r(Wj,_.Jh);var Mha=function(a,b){_.xh.call(this,"c");this.error=a;this.context=b};_.r(Mha,_.xh);var Lha=function(a,b,c,d){_.Tj(a,null,b,c,d)}; Wj.prototype.R=function(a,b){a=a.error||a;b=b?_.Lc(b):{};a instanceof Error&&_.v(b,a.__closure__error__context__984382||{});var c=_.Ya("window.location.href");if(_.Ta(a))var d={message:a,name:"Unknown error",lineNumber:"Not available",fileName:c,stack:"Not available"};else{var e=!1;try{d=a.lineNumber||a.line||"Not available"}catch(y){d="Not available",e=!0}try{var f=a.fileName||a.filename||a.sourceURL||_.Qa.$googDebugFname||c}catch(y){f="Not available",e=!0}d=!e&&a.lineNumber&&a.fileName&&a.stack&& a.message&&a.name?a:{message:a.message||"Not available",name:a.name||"UnknownError",lineNumber:d,fileName:f,stack:a.stack||"Not available"}}if(this.V)try{this.V(d,b)}catch(y){}f=d.message.substring(0,1900);if(!(a instanceof _.lb)||a.H){a=d.fileName;c=d.lineNumber;e=d.stack;try{var k=_.Xh(this.ka,"script",a,"error",f,"line",c);if(!_.Ic(this.T)){var l=k,p=_.Xea(this.T);k=Uea(l,p)}p={};p.trace=e;if(b)for(var t in b)p["context."+t]=b[t];var u=_.Xea(p);_.Wa(null)&&(u=u.substring(0,null));this.ta(k,"POST", u,this.ra)}catch(y){_.nba("Error occurred in sending an error report.\n\n","script:",a,"\n","line:",c,"\n","error:",f,"\n","trace:",e)}}try{this.dispatchEvent(new Mha(d,b))}catch(y){}};Wj.prototype.Ac=function(){_.th(this.H);Wj.Oa.Ac.call(this)}; var Oha=function(a){oha.init();a&&(a=new Wj(a,void 0,!0),qha(new vha(a)));var b=null;a=function(a){_.Qa.$googDebugFname&&a&&a.message&&!a.fileName&&(a.message+=" in "+_.Qa.$googDebugFname);b?a&&a.message&&(a.message+=" [Possibly caused by: "+b+"]"):b=String(a);_.Kj(null,a)};_.Xa("_DumpException",a,void 0);_.Xa("_B_err",a,void 0);(0,_.pb)([_.Qa].concat([]),_.ib(xea,_.ib(Nha,!0),!0));if(!_.ld||_.Gd(10))a=new Mj(sha),a.R=!0,a.H=!0,zha(a),Oj(a,"setTimeout"),Oj(a,"setInterval"),Jca(a)},Nha=function(a, b){_.ec(b.message,"Error in protected function: ")||(b.error&&b.error.stack?_.Kj(null,b.error):a||_.Kj(null,b))}; var Pha=function(a,b){b=b||_.Ae();var c=b.Jc(),d=b.createElement("STYLE");d.type="text/css";b.getElementsByTagName("HEAD")[0].appendChild(d);d.styleSheet?d.styleSheet.cssText=a:d.appendChild(c.createTextNode(a));return d};var Qha=function(a,b){var c=b.styleSheets.length,d=Pha(a,new _.ye(b));d.setAttribute("data-late-css","");b.styleSheets.length==c+1&&_.Ab(b.styleSheets,function(a){return(a.ownerNode||a.owningElement)==d})},Rha=function(a){return(0,_.sb)(aha(a),function(a){return a.T})};_.Xa("_F_installCss",function(a){if(a&&"sentinel{}"!=a){var b=_.J().Na;if(b)if(b=Rha(b),0==b.length)Qha(a,window.document);else for(var c=0;c=y.length){if(u=fia(a,u,f))k.push(u),_.Lg(l,u.Wf)}else p=t(u,Math.ceil(y.length/2E3)).concat(p);u=p.shift()}var C=new _.Fg;bia(a,C);_.Jg(C,(0,_.q)(a.Na,a,b,k,c,d,e));_.Kg(C,function(){var a=new dk;a.R=!0;a.H=-1;this.Na(b,[a],c,d,e)},a);_.Jg(l,function(){C.callback()});l.callback()}, fia=function(a,b,c){var d=eia(a,b,!!c);a.Bb.push(d);if(a.Ta)a=_.Qe("SCRIPT"),_.ne(a,_.Yha(d)),a.type="text/javascript",window.document.body.appendChild(a);else{var e=new dk,f=new _.Rj(0a.H&&a.R.length;)hia(a,a.R.shift())},hia=function(a,b){a.H++;_.Jg(b(),function(){this.H--;gia(this)},a)},bk=function(a,b){return(a=a.match("/"+b+"=([^/]+)"))?a[1]:null}; var gk,jia;_.fk=[];gk=null;_.iia=function(a){(0,_.pb)(_.fk,function(b){_.ej(b,a)})};jia=function(){return(0,_.sb)(_.fk,function(a){return a.tm})};_.hk=function(){_.rh.call(this);this.H=null};_.r(_.hk,Ji);var ik={latency:"_latency",data:_.Hf.H.gr("ZxDaqc"),eia:"f_ldtf",ef:_.Hf.H.gr("OJUrvb"),request:_.Hf.H.gr("wmwg8b"),RFa:_.Hf.H.gr("YFefCe"),Xa:_.Hf.H.gr("dodICd"),Kd:_.Hf.H.gr("XAzchc"),SJa:_.Hf.H.gr("FCpbqb"),TJa:_.Hf.H.gr("WhJNk")}; _.hk.prototype.Pe=function(){var a=new Gj;this.H=a;var b=_.J();b.O$(!0);this.R();b.wY(a);a.Fa=b;b=_.Yg("Im6cmf").Wa()+"/jserror";Oha(b);b=_.nf(_.Yg("cfb2h").Wa());Lj.buildLabel=b;if(gk){b=gk.H;for(var c=0;c<_.fk.length;c++)b.push(_.fk[c])}b=window.BOQ_wizbind;var d=window.document;_.jj=null;c=b.trigger;b=b.bind;d=new cj(d,a);c=new rj(c,d,a);a&&(_.Ti.Kb(),_.uh(a,d));a=c.ta;b((0,_.q)(a.ka,a));d.R();a=c.ka;a=(0,_.q)(a.R,a);window.wiz_progress=a;xj(_.Aj.eq,_.Dj);_.tj({data:Vga,XQa:Vga,jE:Wga});_.tj({afdata_o:Vga}); _.tj({yb:Tga});_.tj({KSa:Uga});a();a=[_.li];_.ni.tm=ik.data;_.ni.H=a;_.pi.tm=ik.data;_.pi.H=a;_.oi.tm=ik.data;_.oi.H=a;_.hfa.tm=ik.eia;_.ii.tm=ik.Kd;_.ki.tm=ik.ef;_.ji.H=[_.ii];_.jfa.tm=ik.request;_.li.tm=ik.request;_.kfa.tm=ik.RFa;_.F.tm=ik.Xa;_.F.H=[_.ii];kia(this);window.top==window&&window.console&&((0,window.setTimeout)(window.console.log.bind(window.console,"%c%s","color: red; background: yellow; font-size: 24px;","WARNING!")),(0,window.setTimeout)(window.console.log.bind(window.console,"%c%s", "color: black; font-size: 18px;","Using this console may allow attackers to impersonate you and steal your information using an attack called Self-XSS.\nDo not enter or paste code that you do not understand.")))};var kia=function(a){function b(){var a=[ik.ef,ik.latency,ik.SJa,ik.TJa];gk||_.Ob(a,jia());Ofa(_.J(),a);gk||_.iia(c)}var c=a.H;_.Dh(window,"load",function(){window.ccTick&&window.ccTick("ol");window.setTimeout(b,0)})};_.J().a5(_.hk); _.hk.prototype.R=function(){var a=window.location.href,b="",c="";window&&window._F_cssRowKey&&(b=window._F_cssRowKey,window._F_combinedSignature&&(c=window._F_combinedSignature));if(b&&"function"!==typeof window._F_installCss)throw Error("V");var d,e=_.Qa._F_jsUrl;e&&(d=ek(e));!d&&(e=window.document.getElementById("base-js"))&&(d=e.src?e.src:e.getAttribute("href"),d=ek(d));d||(d=ek(a));d||(a=window.document.getElementsByTagName("script"),d=ek(a[a.length-1].src));if(!d)throw Error("W");a=new ck(d); b&&(a.Ca=b);c&&(a.ra=c);a.Ta=!1;b=_.J();b.ra=a;b.lY(!0);(b=window.document.getElementById("base-js"))&&(b.src?b.src:b.getAttribute("href")).match("http(s)?://www.gstatic.com/.*")&&_.J().ra.T.push("www.gstatic.com")};window.BOQ_loadedInitialJS=!0; var lia=function(a){_.A(this,a,0,-1,null,null)};_.r(lia,_.z);_.mia=function(){return!_.jk()&&(_.vc("iPod")||_.vc("iPhone")||_.vc("Android")||_.vc("IEMobile"))};_.jk=function(){return _.vc("iPad")||_.vc("Android")&&!_.vc("Mobile")||_.vc("Silk")};_.kk=function(){return!_.mia()&&!_.jk()};_.nia=function(){return _.Xc()||_.vc("iPod")?4:_.vc("iPad")?5:_.Wc()?_.jk()?3:2:_.kk()?1:0};_.oia=_.Yi("EAoStd","EAoStd",[_.ii]);_.lk=_.Yi("mI3LFb","mI3LFb",[]);_.mk=_.Yi("mdR7q","mdR7q",[_.ii,_.lk]);_.ok=_.Yi("MI6k7c","MI6k7c",[_.mk]);_.pk=_.Yi("kjKdXe","kjKdXe",[_.F,_.ii,_.mk,_.lk]);_.qk=_.Yi("XqvODd","XqvODd",[_.lk]);_.pia={};_.rk=function(a,b){var c=_.pia[a];c||(c=_.pia[a]=[]);c.push(b)};_.rk(_.lk,function(a){a.H=new lia;var b=a.H,c=_.nia();_.h(b,1,c);_.h(a.H,3,1);a.V=_.oh()});_.qia=null;_.sk=function(){};_.r(_.sk,_.rh);_.sk.prototype.H=_.ba(28);_.sk.prototype.R=_.ba(29);_.sk.prototype.T=_.ba(30);_.tk=function(){};_.r(_.tk,_.sk);_.tk.prototype.H=_.ba(27);_.J().Ml(function(a){_.Jg(_.vj(a,[_.li],!0)[_.li],function(a){a.tC(new _.tk)})});var $da=function(a){_.A(this,a,0,-1,null,null)};_.r($da,_.z);_.uk=function(a){_.A(this,a,0,26,ria,null)};_.r(_.uk,_.z);var ria=[3,20],sia=function(a){_.A(this,a,0,-1,null,null)};_.r(sia,_.z);_.tia=new _.x(175237375,sia);var uia;_.vk=function(a){_.A(this,a,0,-1,uia,null)};_.r(_.vk,_.z);uia=[4,2,3];_.wk=function(a){_.A(this,a,0,-1,null,null)};_.r(_.wk,_.z);_.wk.prototype.Fh=_.ba(33);_.wk.prototype.od=function(){return _.B(this,2)};_.vk.prototype.Fh=_.ba(32);_.xk={s:function(a,b,c){return(0,window.isNaN)(c)||""==c||a.length>=Number(c)?a:a=-1Number(a)?"-":0<=b.indexOf("+")?"+":0<=b.indexOf(" ")?" ":"";0<=Number(a)&&(d=f+d);if((0,window.isNaN)(c)||d.length>=Number(c))return d;d=(0,window.isNaN)(e)?Math.abs(Number(a)).toString():Math.abs(Number(a)).toFixed(e); a=Number(c)-d.length-f.length;0<=b.indexOf("-",0)?d=f+d+(0,_.jc)(" ",a):(b=0<=b.indexOf("0",0)?"0":" ",d=f+(0,_.jc)(b,a)+d);return d},d:function(a,b,c,d,e,f,k,l){return _.xk.f((0,window.parseInt)(a,10),b,c,d,0,f,k,l)}};_.xk.i=_.xk.d;_.xk.u=_.xk.d; _.yk=function(){};_.yk.prototype.H=_.ba(38);_.yk.prototype.T=_.ba(39);_.yk.prototype.R=_.ba(40);(function(a,b,c,d){var e=d||{};c&&_.qia===c||(_.rk(_.lk,function(d){var f=_.aea();d.T=!!_.B(f,1);null!=_.B(f,2)?d.R=_.B(f,2):e.KRa&&(d.R="https://www.google.com/log?format=json");d.eE=a;c&&_.h(d.H,2,c);d.ka=b;void 0!==e.Z5&&(d.Z5=e.Z5);void 0!==e.eL&&(d.eL=e.eL);void 0!==e.transport&&(d.transport=e.transport);void 0!==e.OO&&(d.OO=e.OO);void 0!==e.zu&&(d.zu=e.zu);void 0!==e.iO&&(d.iO=e.iO);void 0!=e.rJ&&(d.rJ=e.rJ);void 0!=e.gJ&&(d.gJ=e.gJ)}),c&&(_.qia=c))})(32,new _.yk,199); _.zk=_.Yi("ws9Tlc","ws9Tlc",[]);$i(_.zk,"wI7Sfc");_.Ak=_.Yi("wI7Sfc","wI7Sfc",[_.zk]);_.Bk=_.Yi("lwddkf","lwddkf",[_.li,_.Ak]);_.via=_.Yi("EFQ78c","EFQ78c",[_.li,_.Bk]);_.Ck=_.Yi("L1AAkb","L1AAkb",[]);_.wia=K("wGM7Jc","wGM7Jc",[]);_.xia=K("VBe3Tb","VBe3Tb",[]);_.Dk=_.Yi("O6y8ed","O6y8ed",[_.ii]);_.Ek=_.Yi("aW3pY","aW3pY",[_.Ck]);_.Fk=_.Yi("V3dDOb","V3dDOb",[]);_.Gk=_.Yi("v2P8cc","v2P8cc",[_.ii,_.Ek]);_.Hk=K("A4UTCb","A4UTCb",[]);_.yia=K("Fbbake","Fbbake",[_.Hk]); _.Ik=_.Yi("PrPYRd","PrPYRd",[_.zj]);_.Jk=K("hc6Ubd","hc6Ubd",[_.Ik]);_.zia=_.Yi("QIhFr","QIhFr",[_.Ik]);K("FEWD7","FEWD7",[_.Jk]);_.Kk=_.Yi("q0xTif","q0xTif",[_.Ik]);_.Lk=_.Yi("SpsfSb","SpsfSb",[_.Ik,_.Jk]);$i(_.Lk,"o02Jie");_.Aia=_.Yi("e5qFLc","e5qFLc",[]);_.Bia=_.Yi("pB6Zqd","pB6Zqd",[]);_.Cia=_.Yi("o02Jie","o02Jie",[_.Lk]);_.Mk=_.Yi("zbML3c","zbML3c",[_.Bia,_.Cia,_.F,_.ii]);$i(_.Mk,"zemu5");_.Dia=K("Uas9Hd","Uas9Hd",[_.Mk]); _.Nk=_.Yi("BVgquf","BVgquf",[_.Mk]);var Eia;_.Ok=_.Yi("PVlQOd","PVlQOd",[]);$i(_.Ok,"CBlRxf");_.Pk=_.Yi("XVMNvd","XVMNvd",[_.Ak]);$i(_.Pk,"doKs4c");Eia=_.Yi("CBlRxf","CBlRxf",[_.Ok]);_.Fia=_.Yi("doKs4c","doKs4c",[_.Pk]);_.Qk=_.Yi("SdcwHb","SdcwHb",[_.Pk]);$i(_.Qk,"CBlRxf");_.Gia=K("pjICDe","pjICDe",[_.ni,_.Lk,_.zk,_.Dj,_.Cj,_.Fk,_.Bj,_.zj,_.Bk,_.Qk,_.Ek,_.Nk,_.Mk,_.Ak,_.Dia]);$i(_.Gia,"L7Xww");_.Hia=function(){};_.wj(_.Hia,Eia,_.Ok);_.Rk=function(){};_.wj(_.Rk,_.Fia,_.Pk);_.Iia=_.Yi("duFQFc","duFQFc",[_.F,_.Ik,_.Ak]);$i(_.Iia,"iWP1Yb");_.Vk=_.Yi("GkRiKb","GkRiKb",[]);$i(_.Vk,"iWP1Yb");_.Jia=_.Yi("iWP1Yb","iWP1Yb",[_.Vk]);_.Wk=_.Yi("MdUzUe","MdUzUe",[_.Dk,_.Qk,_.Ik,_.Ek,_.Aia,_.Jia]);$i(_.Wk,"pB6Zqd");var Kia=function(){};_.wj(Kia,_.Bia);Kia.eq.B_||xj(Kia.eq,_.Wk);_.Lia=_.Yi("fFdwef","fFdwef",[_.Ak,_.zj]);_.Xk=_.Yi("I6YDgd","I6YDgd",[_.F,_.Dk,_.Ek]);_.Yk=_.Yi("Sk2cJ","Sk2cJ",[_.Mk,_.Qk,_.Ik,_.Ck,_.pk,_.Xk,_.Ak,_.F]);$i(_.Yk,"B3Avtd");_.Zk=K("vobgP","vobgP",[]);_.$k=K("fK89vb","fK89vb",[_.F,_.Zk]);_.al=_.Yi("D1i5N","D1i5N",[_.Yk]);_.Mia=_.Yi("qWNfQ","qWNfQ",[_.al]);var Nia;_.bl=function(){return"_"};_.cl={};_.Oia=function(a){a=_.dl(a);return Nia(a)};_.dl=function(a){if(!(a instanceof _.z))return""+a;var b=_.ui(a);return _.cl[b]?(0,_.cl[b])(a):"unsupported"};_.el=function(a){return null!=a?a:"-"};Nia=function(a){return a.replace(/[;\s\|\+]/g,function(a){return"|"+a.charCodeAt(0)+"+"})};_.fl=function(a){var b=_.ui(a);a=_.eb(a)?"":_.Oia(a);return{Va:b,id:a,wq:b+";"+a}}; _.gl=function(){this.H=[];this.R=[]};_.g=_.gl.prototype;_.g.ag=function(){return this.H.length+this.R.length};_.g.Ee=function(){return _.Db(this.H)&&_.Db(this.R)};_.g.clear=function(){this.H=[];this.R=[]};_.g.contains=function(a){return _.Cb(this.H,a)||_.Cb(this.R,a)};_.g.remove=function(a){var b=this.H;var c=(0,_.ob)(b,a);0<=c?(_.Fb(b,c),b=!0):b=!1;return b||_.Gb(this.R,a)}; _.g.If=function(){for(var a=[],b=this.H.length-1;0<=b;--b)a.push(this.H[b]);var c=this.R.length;for(b=0;bOffice de Tourisme de Briare - Google+
Office de Tourisme de Briare
Briare en image
Les dinosaures sont au Château de trousse-barrière en février!
Le 8° #salon #régional des #métiers #d'art se déroulera à #Briare les 20 et 21 mai 2017. Les professionnels et artisans d'art peuvent demander dès maintenant le dossier de candidature.
Remise de médailles!! La Présidente de l'office de tourisme a reçu, vendredi 4 novembre, 2 médailles : l'une pour "14 ans d'engagement bénévole" auprès de la ville de Briare , et l'autre par la Chambre des Métiers du Loiret pour son soutien aux professionnels des métiers d'art - échelon or§
c'est la quinzaine de la gastronomie sur notre territoire! n'hésitez pas à réserver votre table afin de découvrir le savoir-faire des restaurateurs!!!
Vous êtes intéressés au développement touristique du territoire...
Notez ce rendez-vous jeudi 3 novembre 2016 à 20h à l'auditorium jean Poulain - assemblée générale constitutive du futur office de tourisme TERRES DE LOIRE ET CANAUX
Un nouvelle exposition dans les locaux de l'office de tourisme à découvrir jusqu'au 27 ocotbre
Retrouvez les vidéos de l'office de tourisme sur notre chaine you tube
VUE à 360 ° du pont canal
Briare c'est....
18 Photos - View album
Samedi 27 et dimanche 28 août 2016, le #château# de La bussière vous invite aux "heures grand siècle" ! de nombres animations sont programmées ! A découvrir

value: This website .


text:
The Catholic Church in the Twentieth Century: Renewing and Reimaging the City of God (Theology): John Deedy: 9780814659472: Amazon.com: Books
Save: $16.56 (66%)
$8.39 + $3.59 shipping
Ships from and sold by centralkybooksupply.
Sold by: Paul Fortney Bookseller
The Catholic Church in the Twentieth Century: Renewing and Reimaging the City of God (Theology) Paperback – September, 2000
by John Deedy (Editor)
$8.39 8 Used from $4.00 7 New from $8.00 1 Collectible from $19.99
The Catholic Church in the twentieth century could prove to be one of the greatest since Christ walked the earth. What took place? What went wrong? What was learned? Where do we stand now? The Catholic Church in the Twentieth Century looks back at the historic developments and special significance of the Church at the turn of the millennium.
The Catholic Church at the year 2000 is a quite different Church from that which entered the twentieth century in the final phase of the twenty-five year pontificate of Leo XIII. This century holds special significance in the annals of Catholic Christian history for many occurrences but most importantly for the convoking of Vatican Council II and the election of Pope John Paul II. Perhaps nothing brought the Catholic Church more squarely into the modern world than changes in its understanding of the relationship of Church and state, religious freedom, the question of salvation outside Catholicism, and gender issues.
What made change in the twentieth century so exceptional is that the average lay Catholics saw it firsthand, participating up front rather than from a distance as in the past. Some changes were small and often had to do with the sweeping away of old legalisms. But in a time of greater reverence for tradition and established forms, the impact was large. Only time will tell how large of an impact the occurrences of the twentieth century have made. It could prove to be one of the greatest for the Church since Christ walked the earth. The Catholic Church in the Twentieth Century recognizes these significant occurrences in the Church at this great century's end.
Articles and their contributors are "The Papacy: From Low Regard to High Esteem," by Gerald P. Fogarty, S.J., "Priestly Ministry: A Search for Identity and Purpose," by Howard J. Gray, S.J., "Sisters and Brothers: An Evolved and Evolving Religious Life," by Barbara Kraemer, O.S.F., "The American Catholic Family: Reality or Misnomer?" by Sally Cunneen, "Women and the Church: Routing out Old Stereotypes," by Catherine Lupori and Mary Jo Richardson, "Catholic Youth: The Presumed Become the Pursued," by David O'Brien, "Catholic Education: Helping Shape Intellectual, Cultural and Civic Life," by Jeanne Knoerle, S.P., "Biblical Scholarship: When Tradition Met Method," by Patricia M. McDonald, S.H.C.J., "Ecumenism: From Isolation to a Vision of Christian Unity," by Jeffrey Gros, F.S.C., "Social Justice: Catholic Teaching Goes Global," by John Cort, "Money and the Faith: Is Mammon an Ogre Still?" by John C. Haughey, S.J., "Church and State: Large Issues Resolved, Large Issues Pending," by James Finn, "Communications and the Arts," by Michael O. Garvey, "Spirituality: Five Twentieth-Century Witnesses of Discipleship," by Bishop Robert F. Morneau.
The Catholic Church in the Twentieth Century: Renewing and Reimaging the City of God (Theology)
$8.39 + $3.59 shipping Only 1 left in stock - order soon. Ships from and sold by centralkybooksupply.
Publisher: Michael Glazier Books; First Prinitng edition (September 2000)
ISBN-10: 0814659470
ISBN-13: 978-0814659472
Amazon Best Sellers Rank: #5,478,232 in Books (See Top 100 in Books)
#2570 in Books > Christian Books & Bibles > Churches & Church Leadership > Ecclesiology
#5002 in Books > Christian Books & Bibles > Churches & Church Leadership > Church Institutions & Organizations
#26359 in Books > Christian Books & Bibles > Churches & Church Leadership > Church History

value: This website is an American multinational technology company which focuses on e-commerce, cloud computing, digital streaming, and artificial intelligence.


text:
7A+ 100% Unprocessed Brazilian Virgin Remy BODY_WAVE_16"_#NATURAL 821090904449 | eBay
Details about 7A+ 100% Unprocessed Brazilian Virgin Remy BODY_WAVE_16"_#NATURAL
sophki6 (273 )
113253016353
Last updated on Sep 15, 2018 23:09:36 EDT View all revisions
Color: #NATURAL Theme: Brazilian
Brand: SHAKE_N_GO UPC: 821090904449

value: This website is an American multinational e-commerce corporation based in San Jose, California, that facilitates consumer-to-consumer and business-to-consumer sales through its website.


text:
Revision as of 22:54, 8 January 2012 (view source)
Retrieved from "https://familysearch.org/wiki/en/index.php?title=Perry_County,_Indiana_Genealogy&oldid=908846"

value: This website is a nonprofit organization and website offering genealogical records, education, and software. It is operated by The Church of Jesus Christ of Latter-day Saints , and is closely connected with the church's Family History Department.


text:
Amazon.co.uk: Bronnley - AmazonGlobal Eligible / Trendsetter Mum / Mother's Day Gifts: Shop by Persona: Beauty
: Bronnley
Doll Face Mineral Makeup
MILTD|#Milton-Lloyd Ltd