diff --git a/go.mod b/go.mod index 7f47f795..29a4cb74 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ replace ( ) require ( + code.sajari.com/docconv/v2 v2.0.0-pre.4 dario.cat/mergo v1.0.0 github.com/JohannesKaufmann/html-to-markdown v1.6.0 github.com/PuerkitoBio/goquery v1.9.2 @@ -29,9 +30,7 @@ require ( github.com/swaggo/gin-swagger v1.6.0 github.com/swaggo/swag v1.16.3 github.com/tmc/langchaingo v0.1.8 - github.com/unidoc/unipdf/v3 v3.55.0 golang.org/x/sync v0.7.0 - golang.org/x/text v0.15.0 gorm.io/gorm v1.25.9 sigs.k8s.io/yaml v1.4.0 ) @@ -40,10 +39,13 @@ require ( cloud.google.com/go/ai v0.4.0 // indirect github.com/AssemblyAI/assemblyai-go-sdk v1.3.0 // indirect github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6 // indirect + github.com/JalfResi/justext v0.0.0-20170829062021-c0282dea7198 // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect + github.com/advancedlogic/GoOse v0.0.0-20191112112754-e742535969c1 // indirect github.com/andybalholm/cascadia v1.3.2 // indirect + github.com/araddon/dateparse v0.0.0-20200409225146-d820a6159ab1 // indirect github.com/avast/retry-go v3.0.0+incompatible // indirect github.com/aws/aws-sdk-go-v2 v1.26.0 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.1 // indirect @@ -65,6 +67,8 @@ require ( github.com/dlclark/regexp2 v1.11.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/fatih/set v0.2.1 // indirect + github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/glebarez/go-sqlite v1.21.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect @@ -77,6 +81,7 @@ require ( github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.19.0 // indirect + github.com/go-resty/resty/v2 v2.3.0 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/go-querystring v1.1.0 // indirect @@ -86,6 +91,7 @@ require ( github.com/hupe1980/go-textractor v0.0.9 // indirect github.com/hupe1980/go-tiktoken v0.0.6 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jaytaylor/html2text v0.0.0-20200412013138-3577fbdbcff7 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect @@ -96,6 +102,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.7 // indirect github.com/ledongthuc/pdf v0.0.0-20240201131950-da5b75280b06 // indirect github.com/leodido/go-urn v1.4.0 // indirect + github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect @@ -103,27 +110,26 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/otiai10/gosseract/v2 v2.2.4 // indirect github.com/pelletier/go-toml/v2 v2.2.1 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkoukk/tiktoken-go v0.1.6 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/richardlehane/mscfb v1.0.3 // indirect github.com/richardlehane/msoleps v1.0.3 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/sashabaranov/go-openai v1.20.4 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/serpapi/google-search-results-golang v0.0.0-20240325113416-ec93f510648e // indirect - github.com/sirupsen/logrus v1.9.3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect - github.com/unidoc/pkcs7 v0.2.0 // indirect - github.com/unidoc/timestamp v0.0.0-20200412005513-91597fd3793a // indirect github.com/unidoc/unioffice v1.30.0 // indirect - github.com/unidoc/unitype v0.4.0 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect gitlab.com/golang-commonmark/html v0.0.0-20191124015941-a22733972181 // indirect gitlab.com/golang-commonmark/linkify v0.0.0-20191026162114-a0c2df6c8f82 // indirect @@ -133,12 +139,11 @@ require ( golang.org/x/arch v0.7.0 // indirect golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f // indirect - golang.org/x/image v0.15.0 // indirect golang.org/x/mod v0.17.0 // indirect golang.org/x/net v0.25.0 // indirect golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/tools v0.20.0 // indirect - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect google.golang.org/api v0.176.1 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240415180920-8c6c420018be // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be // indirect diff --git a/go.sum b/go.sum index 664acd46..5eb82127 100644 --- a/go.sum +++ b/go.sum @@ -5,12 +5,16 @@ cloud.google.com/go/aiplatform v1.66.0 h1:bbFYY4JInclG10czRFUYj2rjD+obhh3Gi9zVly cloud.google.com/go/aiplatform v1.66.0/go.mod h1:bPQS0UjaXaTAq57UgP3XWDCtYFOIbXXpkMsl6uP4JAc= cloud.google.com/go/longrunning v0.5.6 h1:xAe8+0YaWoCKr9t1+aWe+OeQgN/iJK1fEgZSXmjuEaE= cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= +code.sajari.com/docconv/v2 v2.0.0-pre.4 h1:1yQrSTah9rMSC/s1T9bq2H2j1NuRTppeApqZf2A8Zbc= +code.sajari.com/docconv/v2 v2.0.0-pre.4/go.mod h1:+pfeEYCOA46E5fq44sh1OKEkO9hsptg8XRioeP1vvPg= dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/AssemblyAI/assemblyai-go-sdk v1.3.0 h1:AtOVgGxUycvK4P4ypP+1ZupecvFgnfH+Jsum0o5ILoU= github.com/AssemblyAI/assemblyai-go-sdk v1.3.0/go.mod h1:H0naZbvpIW49cDA5ZZ/gggeXqi7ojSGB1mqshRk6kNE= github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6 h1:t27CGFMv8DwGwqRPEa2VNof5I/aZwO6q2gfJhN8q0U4= github.com/EndFirstCorp/peekingReader v0.0.0-20171012052444-257fb6f1a1a6/go.mod h1:zpqkXxDsVfEIUZEWvT9yAo8OmRvSlRrcYQ3Zs8sSubA= +github.com/JalfResi/justext v0.0.0-20170829062021-c0282dea7198 h1:8P+AjBhGByCuCX2zTkAf6UY+dj0JczX+t6cSdCSyvfw= +github.com/JalfResi/justext v0.0.0-20170829062021-c0282dea7198/go.mod h1:0SURuH1rsE8aVWvutuMZghRNrNrYEUzibzJfhEYR8L0= github.com/JohannesKaufmann/html-to-markdown v1.6.0 h1:04VXMiE50YYfCfLboJCLcgqF5x+rHJnb1ssNmqpLH/k= github.com/JohannesKaufmann/html-to-markdown v1.6.0/go.mod h1:NUI78lGg/a7vpEJTz/0uOcYMaibytE4BUOQS8k78yPQ= github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= @@ -20,6 +24,7 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/PuerkitoBio/goquery v1.4.1/go.mod h1:T9ezsOHcCrDCgA8aF1Cqr3sSYbO/xgdy8/R/XiIMAhA= github.com/PuerkitoBio/goquery v1.9.2 h1:4/wZksC3KgkQw7SQgkKotmKljk0M6V8TUvA8Wb4yPeE= github.com/PuerkitoBio/goquery v1.9.2/go.mod h1:GHPCaP0ODyyxqcNoFGYlAprUFH81NuRPd0GX3Zu2Mvk= github.com/acorn-io/cmd v0.0.0-20240404013709-34f690bde37b h1:VzGEGrJn54UcsEvTqcpJj9USv7vc6TIxQGZVS0Ff304= @@ -28,10 +33,16 @@ github.com/acorn-io/z v0.0.0-20231104012607-4cab1b3ec5e5 h1:oQnpRt5KoANqwwUNzWFu github.com/acorn-io/z v0.0.0-20231104012607-4cab1b3ec5e5/go.mod h1:5UO0+eOne2Zhvn7Ox5IiK4u+4dlCSLmHfTQWORRdEyo= github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= +github.com/advancedlogic/GoOse v0.0.0-20191112112754-e742535969c1 h1:d0Ct1dZwgwMO0Llf81Eu+Lyj6kwqXdqHP/WsSkEria0= +github.com/advancedlogic/GoOse v0.0.0-20191112112754-e742535969c1/go.mod h1:f3HCSN1fBWjcpGtXyM119MJgeQl838v6so/PQOqvE1w= +github.com/andybalholm/cascadia v1.0.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= +github.com/araddon/dateparse v0.0.0-20180729174819-cfd92a431d0e/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= +github.com/araddon/dateparse v0.0.0-20200409225146-d820a6159ab1 h1:TEBmxO80TM04L8IuMWk77SGL1HomBmKTdzdJLLWznxI= +github.com/araddon/dateparse v0.0.0-20200409225146-d820a6159ab1/go.mod h1:SLqhdZcd+dF3TEVL2RMoob5bBP5R1P1qkox+HtCBgGI= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0= @@ -90,11 +101,15 @@ github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcej github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/fatih/set v0.2.1 h1:nn2CaJyknWE/6txyUDGwysr3G5QC6xWB/PtVjPBbeaA= +github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/gabriel-vasile/mimetype v1.1.1/go.mod h1:6CDPel/o/3/s4+bp6kIbsWATq8pmgOisOPG40CJa6To= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= github.com/gen2brain/go-fitz v1.23.7 h1:HPhzEVzmOINvCKqQgB/DwMzYh4ArIgy3tMwq1eJTcbg= github.com/gen2brain/go-fitz v1.23.7/go.mod h1:HU04vc+RisUh/kvEd2pB0LAxmK1oyXdN4ftyshUr9rQ= +github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573 h1:u8AQ9bPa9oC+8/A/jlWouakhIvkFfuxgIIRjiy8av7I= +github.com/gigawattio/window v0.0.0-20180317192513-0f5467e35573/go.mod h1:eBvb3i++NHDH4Ugo9qCvMw8t0mTSctaEa5blJbWcNxs= github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -136,6 +151,9 @@ github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91 github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.19.0 h1:ol+5Fu+cSq9JD7SoSqe04GMI92cbn0+wvQ3bZ8b/AU4= github.com/go-playground/validator/v10 v10.19.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-resty/resty/v2 v2.0.0/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-resty/resty/v2 v2.3.0 h1:JOOeAvjSlapTT92p8xiS19Zxev1neGikoHsXJeOq8So= +github.com/go-resty/resty/v2 v2.3.0/go.mod h1:UpN9CgLZNsv4e9XG50UU8xdI0F43UQ4HmxLBDwaroHU= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= @@ -184,6 +202,9 @@ github.com/iwilltry42/chromem-go v0.0.0-20240513080122-88f1efa639f5 h1:g3mhp9K4u github.com/iwilltry42/chromem-go v0.0.0-20240513080122-88f1efa639f5/go.mod h1:hTd+wGEm/fFPQl7ilfCwQXkgEUxceYh86iIdoKMolPo= github.com/iwilltry42/langchaingo v0.0.0-20240516095223-8cf46ac74799 h1:b5x7HwpU5UzA/qlde8bFWHYfdpRxglHiZKy9KRbll8o= github.com/iwilltry42/langchaingo v0.0.0-20240516095223-8cf46ac74799/go.mod h1:QZupRrRBW3fhNUlvll1U4YUHatKZd5h7C0UiHBEWJYc= +github.com/jaytaylor/html2text v0.0.0-20180606194806-57d518f124b0/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= +github.com/jaytaylor/html2text v0.0.0-20200412013138-3577fbdbcff7 h1:g0fAGBisHaEQ0TRq1iBvemFRf+8AEWEmBESSiWB3Vsc= +github.com/jaytaylor/html2text v0.0.0-20200412013138-3577fbdbcff7/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -204,8 +225,6 @@ github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa02 github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -218,6 +237,8 @@ github.com/ledongthuc/pdf v0.0.0-20240201131950-da5b75280b06/go.mod h1:imJHygn/1 github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5 h1:W7p+m/AECTL3s/YR5RpQ4hz5SjNeKzZBl1q36ws12s0= +github.com/levigross/exp-html v0.0.0-20120902181939-8df60c69a8f5/go.mod h1:QMe2wuKJ0o7zIVE8AqiT8rd8epmm6WDIZ2wyuBqYPzM= github.com/lu4p/cat v0.1.5 h1:s51Bp/ns3u6n+hjjL2F77ySY6j/GD5SJG/t6Ok4Y1S0= github.com/lu4p/cat v0.1.5/go.mod h1:G3YRyjSvBipqMBRZ2uLf1oRL3/eGGmuZf96m95Y4jRQ= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -225,6 +246,7 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -238,10 +260,16 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/olekukonko/tablewriter v0.0.0-20180506121414-d4647c9c7a84/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/gosseract/v2 v2.2.4 h1:h/PV+oJqke8q2Ccw9bjpMBWfd7N2vtGDCUcihZj3nRo= +github.com/otiai10/gosseract/v2 v2.2.4/go.mod h1:ahOp/kHojnOMGv1RaUnR0jwY5JVa6BYKhYAS8nbMLSo= +github.com/otiai10/mint v1.3.0 h1:Ady6MKVezQwHBkGzLFbrsywyp09Ah7rkmfjV3Bcr5uc= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= github.com/pelletier/go-toml/v2 v2.2.1 h1:9TA9+T8+8CUCO2+WYnDLCgrYi9+omqKXyjDtosvtEhg= github.com/pelletier/go-toml/v2 v2.2.1/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= @@ -257,6 +285,9 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/richardlehane/mscfb v1.0.3 h1:rD8TBkYWkObWO0oLDFCbwMeZ4KoalxQy+QgniCj3nKI= +github.com/richardlehane/mscfb v1.0.3/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk= +github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/richardlehane/msoleps v1.0.3 h1:aznSZzrwYRl3rLKRT3gUk9am7T/mLNSnJINvN0AQoVM= github.com/richardlehane/msoleps v1.0.3/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= @@ -275,16 +306,16 @@ github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/serpapi/google-search-results-golang v0.0.0-20240325113416-ec93f510648e h1:pBW1bjkGQGBdbT7a4IKq4W3H2apMQ7qvf+E/Ng5/0DY= github.com/serpapi/google-search-results-golang v0.0.0-20240325113416-ec93f510648e/go.mod h1:B4KcaaGbSpn3vq3FxSCsEJrBirStags89KTusB2of58= -github.com/sirupsen/logrus v1.5.0/go.mod h1:+F7Ogzej0PZc/94MaYx/nvG9jOFMD2osvC3s+Squfpo= +github.com/simplereach/timeutils v1.2.0/go.mod h1:VVbQDfN/FHRZa1LSqcwo4kNZ62OOyqLLGQKYB3pB0Q8= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= -github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf h1:pvbZ0lM0XWPBqUKqFU8cmavspvIl9nulOYwdy6IFRRo= +github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -311,17 +342,8 @@ github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVM github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/unidoc/pkcs7 v0.0.0-20200411230602-d883fd70d1df/go.mod h1:UEzOZUEpJfDpywVJMUT8QiugqEZC29pDq7kdIZhWCr8= -github.com/unidoc/pkcs7 v0.2.0 h1:0Y0RJR5Zu7OuD+/l7bODXARn6b8Ev2G4A8lI4rzy9kg= -github.com/unidoc/pkcs7 v0.2.0/go.mod h1:UEzOZUEpJfDpywVJMUT8QiugqEZC29pDq7kdIZhWCr8= -github.com/unidoc/timestamp v0.0.0-20200412005513-91597fd3793a h1:RLtvUhe4DsUDl66m7MJ8OqBjq8jpWBXPK6/RKtqeTkc= -github.com/unidoc/timestamp v0.0.0-20200412005513-91597fd3793a/go.mod h1:j+qMWZVpZFTvDey3zxUkSgPJZEX33tDgU/QIA0IzCUw= github.com/unidoc/unioffice v1.30.0 h1:S2t4yyRxYpMPV4cUhsdiihUFr1Qqi6+agUSgQ4rDKDE= github.com/unidoc/unioffice v1.30.0/go.mod h1:BMguzPH3QO+4hcnmdBxg8iHVnmdLBYJfLh9nDgXwLeI= -github.com/unidoc/unipdf/v3 v3.55.0 h1:hPkhl+BCZoRLgk+cOW8mdRZ8SUjOj/8HsSRAOmzw5CE= -github.com/unidoc/unipdf/v3 v3.55.0/go.mod h1:06Q/thbRvuQSYiRdtpZ4rZjIug7hg1TJpifNMG7PcBU= -github.com/unidoc/unitype v0.4.0 h1:/TMZ3wgwfWWX64mU5x2O9no9UmoBqYCB089LYYqHyQQ= -github.com/unidoc/unitype v0.4.0/go.mod h1:HV5zuUeqMKA4QgYQq3KDlJY/P96XF90BQB+6czK6LVA= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -353,13 +375,14 @@ golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY= golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= -golang.org/x/image v0.15.0 h1:kOELfmgrmJlw4Cdb7g/QGuB3CvDrXbqEIww/pNtNBm8= -golang.org/x/image v0.15.0/go.mod h1:HUYqC05R2ZcZ3ejNQsIHQDQiwWM4JBqmm6MKANTp4LE= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -379,9 +402,9 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -390,7 +413,6 @@ golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -433,8 +455,6 @@ golang.org/x/tools v0.20.0 h1:hz/CVckiOxybQvFw6h7b/q80NTr9IUQb4s1IIzW7KNY= golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.176.1 h1:DJSXnV6An+NhJ1J+GWtoF2nHEuqB1VNoTfnIbjNvwD4= google.golang.org/api v0.176.1/go.mod h1:j2MaSDYcvYV1lkZ1+SMW4IeF90SrEyFA+tluDYWRrFg= google.golang.org/genproto v0.0.0-20240325203815-454cdb8f5daa h1:ePqxpG3LVx+feAUOx8YmR5T7rc0rdzK8DyxM8cQ9zq0= @@ -448,10 +468,10 @@ google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDom google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pkg/datastore/documentloader/defaults.go b/pkg/datastore/documentloader/defaults.go index 44f0a2c7..054972b5 100644 --- a/pkg/datastore/documentloader/defaults.go +++ b/pkg/datastore/documentloader/defaults.go @@ -8,15 +8,15 @@ import ( "context" "encoding/csv" "errors" - "fmt" "io" "log/slog" "strings" + "code.sajari.com/docconv/v2" "github.com/gptscript-ai/knowledge/pkg/datastore/filetypes" vs "github.com/gptscript-ai/knowledge/pkg/vectorstore" golcdocloaders "github.com/hupe1980/golc/documentloader" - "github.com/lu4p/cat" + "github.com/lu4p/cat/rtftxt" lcgodocloaders "github.com/tmc/langchaingo/documentloaders" ) @@ -67,17 +67,42 @@ func DefaultDocLoaderFunc(filetype string) func(ctx context.Context, reader io.R return func(ctx context.Context, reader io.Reader) ([]vs.Document, error) { return FromGolc(golcdocloaders.NewNotebook(reader)).Load(ctx) } - case ".docx", ".odt", ".rtf", "application/vnd.oasis.opendocument.text", "text/rtf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": + case ".docx", ".odt", ".rtf", "text/rtf", "application/vnd.oasis.opendocument.text", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": return func(ctx context.Context, reader io.Reader) ([]vs.Document, error) { - data, nerr := io.ReadAll(reader) - if nerr != nil { - return nil, fmt.Errorf("failed to read %s data: %w", filetype, nerr) + var text string + var metadata map[string]string + var err error + switch filetype { + case ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document": + text, metadata, err = docconv.ConvertDocx(reader) + case ".rtf", ".rtfd", "text/rtf": + buf, err := rtftxt.Text(reader) + if err != nil { + return nil, err + } + text = buf.String() + case ".odt", "application/vnd.oasis.opendocument.text": + text, metadata, err = docconv.ConvertODT(reader) } - text, nerr := cat.FromBytes(data) - if nerr != nil { - return nil, fmt.Errorf("failed to extract text from %s: %w", filetype, nerr) + + if err != nil { + return nil, err } - return FromLangchain(lcgodocloaders.NewText(strings.NewReader(text))).Load(ctx) + + docs, err := FromLangchain(lcgodocloaders.NewText(strings.NewReader(text))).Load(ctx) + if err != nil { + return nil, err + } + + for _, doc := range docs { + m := map[string]any{} + for k, v := range metadata { + m[k] = v + } + doc.Metadata = m + } + + return docs, nil } // todo: OCR support is commented out for now as it relies on external dependencies. // We might add it back later. diff --git a/tests/conftest.py b/tests/conftest.py index 4a444545..977a67d1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -805,6 +805,54 @@ def setup_imagejonm_dataset(): subprocess.run(['knowledge', 'delete-dataset', datasetName]) +@pytest.fixture(scope="module") +def setup_docx_1_dataset(): + datasetName = "docx" + + subprocess.run(['knowledge', 'create-dataset', datasetName]) + subprocess.run(['knowledge', 'ingest', '-d', datasetName, "./data/docs-demo.docx"]) + + yield datasetName + + subprocess.run(['knowledge', 'delete-dataset', datasetName]) + + +@pytest.fixture(scope="module") +def setup_rtfd_1_dataset(): + datasetName = "rtfd" + + subprocess.run(['knowledge', 'create-dataset', datasetName]) + subprocess.run(['knowledge', 'ingest', '-d', datasetName, "./data/docs-demo.rtf"]) + + yield datasetName + + subprocess.run(['knowledge', 'delete-dataset', datasetName]) + + +@pytest.fixture(scope="module") +def setup_odt_1_dataset(): + datasetName = "odt" + + subprocess.run(['knowledge', 'create-dataset', datasetName]) + subprocess.run(['knowledge', 'ingest', '-d', datasetName, "./data/odt-demo.odt"]) + + yield datasetName + + subprocess.run(['knowledge', 'delete-dataset', datasetName]) + + +@pytest.fixture(scope="module") +def setup_markdown_dataset(): + datasetName = "markdown" + + subprocess.run(['knowledge', 'create-dataset', datasetName]) + subprocess.run(['knowledge', 'ingest', '-d', datasetName, "./data/markdown-demo.md"]) + + yield datasetName + + subprocess.run(['knowledge', 'delete-dataset', datasetName]) + + @pytest.fixture(scope="session") def judge_client(): api_key = os.getenv("OPENAI_API_KEY") diff --git a/tests/data/docs-demo.docx b/tests/data/docs-demo.docx new file mode 100644 index 00000000..b172c439 Binary files /dev/null and b/tests/data/docs-demo.docx differ diff --git a/tests/data/docs-demo.rtf b/tests/data/docs-demo.rtf new file mode 100644 index 00000000..e88fc1db --- /dev/null +++ b/tests/data/docs-demo.rtf @@ -0,0 +1,1146 @@ +{\rtf1\ansi\ansicpg1252\cocoartf2761 +\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fswiss\fcharset0 Helvetica-Oblique; +\f3\fswiss\fcharset0 Helvetica-BoldOblique;\f4\fmodern\fcharset0 Courier;\f5\ftech\fcharset77 Symbol; +\f6\ftech\fcharset0 Wingdings-Regular;\f7\fnil\fcharset0 LucidaGrande;\f8\fmodern\fcharset0 CourierNewPSMT; +} +{\colortbl;\red255\green255\blue255;\red19\green40\blue75;\red0\green0\blue0;\red42\green75\blue126; +\red63\green108\blue175;\red251\green0\blue7;\red130\green202\blue63;\red11\green90\blue178;\red255\green255\blue11; +\red255\green255\blue255;\red109\green109\blue109;\red213\green213\blue213;\red138\green176\blue71;\red0\green0\blue0; +\red201\green215\blue234;\red62\green156\blue185;\red108\green108\blue108;\red0\green0\blue255;} +{\*\expandedcolortbl;;\cssrgb\c9020\c21176\c36471;\cssrgb\c0\c0\c0;\cssrgb\c21176\c37255\c56863; +\cssrgb\c30980\c50588\c74118;\cssrgb\c100000\c0\c0;\cssrgb\c57255\c81569\c31373;\cssrgb\c0\c43922\c75294;\cssrgb\c100000\c100000\c0; +\cssrgb\c100000\c100000\c100000;\cssrgb\c50196\c50196\c50196;\cssrgb\c86667\c86667\c86667;\cssrgb\c60784\c73333\c34902;\csgray\c0\c0; +\cssrgb\c82745\c87451\c93333;\cssrgb\c29412\c67451\c77647;\cssrgb\c49804\c49804\c49804;\cssrgb\c0\c0\c100000;} +{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1} +{\list\listtemplateid2\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid101\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid2} +{\list\listtemplateid3\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid201\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}\levelprepend{\leveltext\leveltemplateid202\'02\'01.;}{\levelnumbers\'01;}\fi-360\li1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}\levelprepend{\leveltext\leveltemplateid203\'02\'02.;}{\levelnumbers\'01;}\fi-360\li2160\lin2160 }{\listname ;}\listid3} +{\list\listtemplateid4\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{square\}}{\leveltext\leveltemplateid301\'01\uc0\u9642 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid302\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li1440\lin1440 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid303\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li2160\lin2160 }{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid304\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li2880\lin2880 }{\listname ;}\listid4} +{\list\listtemplateid5\listhybrid{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{lower-roman\}.}{\leveltext\leveltemplateid401\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid5} +{\list\listtemplateid6\listhybrid{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat3\levelspace360\levelindent0{\*\levelmarker \{lower-roman\}.}{\leveltext\leveltemplateid501\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid6}} +{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}} +\margl1440\margr1440 +\deftab720 +\pard\pardeftab720\sa300\partightenfactor0 + +\f0\fs52 \cf2 \kerning1\expnd1\expndtw5 +\up0 \nosupersub \ulnone Demonstration of DOCX support in calibre\ +\pard\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\fs24 \cf3 \kerning1\expnd0\expndtw0 This document demonstrates the ability of the calibre DOCX Input plugin to convert the various typographic features in a Microsoft Word (2007 and newer) document. Convert this document to a modern ebook format, such as AZW3 for Kindles or EPUB for other ebook readers, to see it in action.\ +There is support for images, tables, lists, footnotes, endnotes, links, dropcaps and various types of text and paragraph level formatting.\ +To see the DOCX conversion in action, simply add this file to calibre using the +\f1\b \'93Add Books\'94 +\f0\b0 button and then click \'93 +\f1\b Convert\'94. +\f0\b0 Set the output format in the top right corner of the conversion dialog to EPUB or AZW3 and click +\f1\b \'93OK\'94 +\f0\b0 .\ +\pard\pardeftab720\fi432\sl276\slmult1\sa480\partightenfactor0 +\cf3 \ +\pard\pardeftab720\sl276\slmult1\sa200\qc\partightenfactor0 + +\f1\b\fs28 \cf4 Text Formatting\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\fs26 \cf5 Inline formatting\ +\pard\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\f0\b0\fs24 \cf3 Here, we demonstrate various types of inline text formatting and the use of embedded fonts.\ +Here is some +\f1\b bold, +\f2\i\b0 italic, +\f3\b bold-italic, +\f0\i0\b0 \ul underlined \ulnone and \strike \strikec3 struck out \strike0\striked0 text. Then, we have a super +\fs16\fsmilli8000 \super script +\fs24 \nosupersub and a sub +\fs16\fsmilli8000 \sub script +\fs24 \nosupersub . Now we see some \cf6 red\cf3 , \cf7 green\cf3 and \cf8 blue\cf3 text. Some text with a \cb9 yellow highlight\cb1 . Some text in a box. Some text in \cf10 \cb3 inverse video\cf3 \cb1 .\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 +\cf3 A paragraph with styled text: +\f2\i \cf11 subtle emphasis +\f0\i0 \cf3 followed by +\f1\b strong text +\f0\b0 and +\f3\i\b \cf5 intense emphasis +\f0\i0\b0 \cf3 . This paragraph uses document wide styles for styling rather than inline text properties as demonstrated in the previous paragraph \'97 calibre can handle both with equal ease.\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Fun with fonts\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 This document has embedded the Ubuntu font family. The body text is in the Ubuntu typeface, here is +\f4 some text in the Ubuntu Mono typeface, notice how every letter has the same width, even i and m +\f0 . Every embedded font will automatically be embedded in the output ebook during conversion. \ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Paragraph level formatting\ +\pard\pardeftab720\fi432\sl276\slmult1\sa600\qr\partightenfactor0 + +\f0\b0\fs24 \cf3 \cb12 You can do crazy things with paragraphs, if the urge strikes you. For instance this paragraph is right aligned and has a right border. It has also been given a light gray background.\ +\pard\pardeftab720\li720\fi-720\sl276\slmult1\sa480\partightenfactor0 +\cf3 \cb1 For the lovers of poetry amongst you, paragraphs with hanging indents, like this often come in handy. You can use hanging indents to ensure that a line of poetry retains its individual identity as a line even when the screen is too narrow to display it as a single line. Not only does this paragraph have a hanging indent, it is also has an extra top margin, setting it apart from the preceding paragraph.\ +\pard\pardeftab720\sl276\slmult1\qc\partightenfactor0 + +\f1\b\fs28 \cf4 Tables\ + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat13 \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf13 \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat13 \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf13 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\fs24 \cf10 ITEM +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f1\b \cf10 \up0 \nosupersub \ulnone NEEDED +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Books\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 1\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Pens\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 3\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Pencils\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 2\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Highlighter\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 2 colors\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth1640\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf13 \clbrdrb\brdrs\brdrw20\brdrcf13 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1460\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf13 \clbrdrr\brdrs\brdrw20\brdrcf13 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Scissors\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 1 pair\cf0 \up0 \nosupersub \ulnone \cell \lastrow\row +\pard\pardeftab720\fi432\sl276\slmult1\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Tables in Word can vary from the extremely simple to the extremely complex. calibre tries to do its best when converting tables. While you may run into trouble with the occasional table, the vast majority of common cases should be converted very well, as demonstrated in this section. Note that for optimum results, when creating tables in Word, you should set their widths using percentages, rather than absolute units. To the left of this paragraph is a floating two column table with a nice green border and header row.\ +Now let\'92s look at a fancier table\'97one with alternating row colors and partial borders. This table is stretched out to take 100% of the available width.\ + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clcbpat10 \clwWidth1420\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clcbpat10 \clwWidth1400\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat10 \clwWidth1400\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clcbpat10 \clwWidth1420\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clcbpat10 \clwWidth1280\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw60\brdrcf5 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\fs22 \cf3 City or Town +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone Point A +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone Point B +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone Point C +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone Point D +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone Point E +\fs24 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf5 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clcbpat15 \clwWidth1280\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw60\brdrcf5 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Point A\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone \'97\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clshdrawnil \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf5 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clshdrawnil \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clshdrawnil \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clshdrawnil \clwWidth1280\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Point B\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 87\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone \'97\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf5 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clcbpat15 \clwWidth1280\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Point C\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 64\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 56\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone \'97\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clshdrawnil \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf5 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clshdrawnil \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clshdrawnil \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clshdrawnil \clwWidth1280\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Point D\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 37\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 32\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 91\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone \'97\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth1340\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1440 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf5 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2880 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat15 \clwWidth1400\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5760 +\clvertalt \clcbpat15 \clwWidth1420\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7200 +\clvertalt \clcbpat15 \clwWidth1280\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf14 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf14 \clbrdrr\brdrs\brdrw20\brdrcf5 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Point E\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 93\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 35\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 54\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone 43\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\qc\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone \'97\cf0 \up0 \nosupersub \ulnone \cf3 \up0 \nosupersub \ulnone \cell \lastrow\row +\pard\pardeftab720\fi432\sl276\slmult1\sa240\partightenfactor0 +\cf3 \ +Next, we see a table with special formatting in various locations. Notice how the formatting for the header row and sub header rows is preserved.\ + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat16 \clwWidth2160\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clcbpat16 \clwWidth2160\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat16 \clwWidth2140\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clcbpat16 \clwWidth2160\clftsWidth3 \clheight560 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\f1\b \cf10 College +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f1\b \cf10 \up0 \nosupersub \ulnone New students +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f1\b \cf10 \up0 \nosupersub \ulnone Graduating students +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f1\b \cf10 \up0 \nosupersub \ulnone Change +\f0\b0 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw40\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f2\i \cf11 \up0 \nosupersub \ulnone Undergraduate +\f0\i0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Cedar University\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 110 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 103 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone +7 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Oak Institute\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 202 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 210 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone -8 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 + +\f2\i \cf11 \up0 \nosupersub \ulnone Graduate +\f0\i0 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Cedar University\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 24 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 20 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone +4 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clshdrawnil \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Elm College\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 43 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 53 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone -10 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalt \clcbpat10 \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2160 +\clvertalt \clcbpat10 \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clcbpat10 \clwWidth2140\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6480 +\clvertalt \clcbpat10 \clwWidth2160\clftsWidth3 \clheight280 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf14 \clbrdrb\brdrs\brdrw40\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf14 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone Total\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 998 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 908 +\fs24 \cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tqdec\tx360\pardeftab720\sa200\partightenfactor0 + +\fs22 \cf3 \up0 \nosupersub \ulnone 90 +\fs24 \cf0 \up0 \nosupersub \ulnone \cf3 \up0 \nosupersub \ulnone \cell \lastrow\row +\pard\pardeftab720\sa240\partightenfactor0 + +\f2\i\fs20 \cf11 Source: +\f0\i0 \cf3 Fictitious data, for illustration purposes only\ +\pard\pardeftab720\fi432\sl276\slmult1\sa240\partightenfactor0 + +\fs24 \cf3 Next, we have something a little more complex, a nested table, i.e. a table inside another table. Additionally, the inner table has some of its cells merged. The table is displayed horizontally centered.\ + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth3300\clftsWidth3 \clheight1880 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4320 +\clvertalt \clshdrawnil \clwWidth3040\clftsWidth3 \clheight1880 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\sl276\slmult1\sa240\partightenfactor0 +\cf3 One\ +\pard\intbl\itap1\pardeftab720\sa240\partightenfactor0 +\cf3 Three Two\ + Four\ +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\pardeftab720\partightenfactor0 +\cf3 \up0 \nosupersub \ulnone To the left is a table inside a table, with some cells merged.\cf0 \up0 \nosupersub \ulnone \cf3 \up0 \nosupersub \ulnone \cell \lastrow\row +\pard\pardeftab720\fi432\sl276\slmult1\sa240\partightenfactor0 +\cf3 \ +We end with a fancy calendar, note how much of the original formatting is preserved. Note that this table will only display correctly on relatively wide screens. In general, very wide tables or tables whose cells have fixed width requirements don\'92t fare well in ebooks.\ + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrnil \trbrdrl\brdrnil \trbrdrr\brdrnil +\clmgf \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clmrg \clvertalt \clshdrawnil \clwWidth7340\clftsWidth3 \clheight640 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\sl276\slmult1\partightenfactor0 +\cf4 December 2007\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell +\pard\intbl\itap1\cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalb \clshdrawnil \clwWidth700\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalb \clshdrawnil \clwWidth60\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalb \clshdrawnil \clwWidth820\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalb \clshdrawnil \clwWidth60\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalb \clshdrawnil \clwWidth700\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalb \clshdrawnil \clwWidth60\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalb \clshdrawnil \clwWidth720\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalb \clshdrawnil \clwWidth60\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalb \clshdrawnil \clwWidth700\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalb \clshdrawnil \clwWidth60\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalb \clshdrawnil \clwWidth700\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalb \clshdrawnil \clwWidth80\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalb \clshdrawnil \clwWidth700\clftsWidth3 \clheight560 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone Sun\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone Mon\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone Tue\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone Wed\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone Thu\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone Fri\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone Sat\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 1\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth820\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth720\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth80\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 2\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 3\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 4\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 5\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 6\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 7\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 8\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth820\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth720\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth80\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 9\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 10\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 11\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 12\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 13\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 14\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 15\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth820\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth720\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth80\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 16\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 17\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 18\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 19\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 20\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 21\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 22\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth820\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth720\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth80\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight440 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 23\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 24\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 25\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 26\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 27\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 28\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 29\cf0 \up0 \nosupersub \ulnone \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth820\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth720\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth60\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf17 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth80\clftsWidth3 \clheight280 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth700\clftsWidth3 \clheight260 \clbrdrt\brdrnil \clbrdrl\brdrnil \clbrdrb\brdrs\brdrw20\brdrcf4 \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell \row + +\itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrnil \trbrdrt\brdrnil \trbrdrr\brdrnil +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx664 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf4 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1329 +\clvertalt \clshdrawnil \clwWidth800\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx1993 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx2658 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3323 +\clvertalt \clshdrawnil \clwWidth20\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx3987 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx4652 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5316 +\clvertalt \clshdrawnil \clwWidth660\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx5981 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx6646 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf17 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf17 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7310 +\clvertalt \clshdrawnil \clwWidth40\clftsWidth3 \clheight420 \clbrdrt\brdrnil \clbrdrl\brdrs\brdrw60\brdrcf17 \clbrdrb\brdrnil \clbrdrr\brdrnil \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx7975 +\clvertalt \clshdrawnil \clwWidth680\clftsWidth3 \clheight420 \clbrdrt\brdrs\brdrw20\brdrcf4 \clbrdrl\brdrnil \clbrdrb\brdrnil \clbrdrr\brdrs\brdrw60\brdrcf4 \clpadt80 \clpadl80 \clpadb80 \clpadr80 \gaph\cellx8640 +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf4 \up0 \nosupersub \ulnone 30\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\pardeftab720\fi432\qr\partightenfactor0 +\cf17 \up0 \nosupersub \ulnone 31\cf0 \up0 \nosupersub \ulnone \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cell +\pard\intbl\itap1\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0 +\cf0 \cf3 \up0 \nosupersub \ulnone \cell \lastrow\row +\pard\pardeftab720\sl276\slmult1\qc\partightenfactor0 + +\f1\b\fs28 \cf4 Structural Elements\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 Miscellaneous structural elements you can add to your document, like footnotes, endnotes, dropcaps and the like. \ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Footnotes & Endnotes\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 Footnotes +\fs16\fsmilli8000 \super 1 +\fs24 \nosupersub and endnotes +\fs16\fsmilli8000 \super 2 +\fs24 \nosupersub are automatically recognized and both are converted to endnotes, with backlinks for maximum ease of use in ebook devices.\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Dropcaps\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 Drop caps are used to emphasize the leading paragraph at the start of a section. In Word it is possible to specify how many lines of text a drop-cap should use. Because of limitations in ebook technology, this is not possible when converting. Instead, the converted drop cap will use font size and line height to simulate the effect as well as possible. While not as good as the original, the result is usually tolerable. This paragraph has a \'93D\'94 dropcap set to occupy three lines of text with a font size of 58.5 pts. Depending on the screen width and capabilities of the device you view the book on, this dropcap can look anything from perfect to ugly.\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Links\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 Two kinds of links are possible, those that refer to an external website and those that refer to locations inside the document itself. Both are supported by calibre. For example, here is a link pointing to the {\field{\*\fldinst{HYPERLINK "http://calibre-ebook.com/download"}}{\fldrslt \cf18 \ul \ulc18 calibre download page}}. Then we have a link that points back to the section on \cf18 \ul \ulc18 paragraph level formatting\cf3 \ulnone in this document.\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Table of Contents\ +\pard\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\f0\b0\fs24 \cf3 There are two approaches that calibre takes when generating a Table of Contents. The first is if the Word document has a Table of Contents itself. Provided that the Table of Contents uses hyperlinks, calibre will automatically use it. The levels of the Table of Contents are identified by their left indent, so if you want the ebook to have a multi-level Table of Contents, make sure you create a properly indented Table of Contents in Word.\ +If no Table of Contents is found in the document, then a table of contents is automatically generated from the headings in the document. A heading is identified as something that has the Heading 1 or Heading 2, etc. style applied to it. These headings are turned into a Table of Contents with Heading 1 being the topmost level, Heading 2 the second level and so on.\ + You can see the Table of Contents created by calibre by clicking the Table of Contents button in whatever viewer you are using to view the converted ebook. \ +\pard\tqr\tx9340\pardeftab720\fi432\sl276\slmult1\sa120\partightenfactor0 + +\f1\b\fs20 \cf3 Text Formatting \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\sa120\partightenfactor0 + +\f2\i\b0 \cf3 Inline formatting \ +Fun with fonts \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\sa240\partightenfactor0 +\cf3 Paragraph level formatting \ +\pard\tqr\tx9340\pardeftab720\fi432\sl276\slmult1\sa240\partightenfactor0 + +\f1\i0\b \cf3 Tables \ +\pard\tqr\tx9340\pardeftab720\fi432\sl276\slmult1\sa120\partightenfactor0 +\cf3 Structural Elements \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\sa120\partightenfactor0 + +\f2\i\b0 \cf3 Footnotes & Endnotes \ +Dropcaps \ +Links \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\sa240\partightenfactor0 +\cf3 Table of Contents \ +\pard\tqr\tx9340\pardeftab720\fi432\sl276\slmult1\sa240\partightenfactor0 + +\f1\i0\b \cf3 Images \ +\pard\tqr\tx9340\pardeftab720\fi432\sl276\slmult1\sa120\partightenfactor0 +\cf3 Lists \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\sa120\partightenfactor0 + +\f2\i\b0 \cf3 Bulleted List \ +Numbered List \ +Multi-level Lists \ +\pard\tqr\tx9340\pardeftab720\li240\fi432\sl276\slmult1\partightenfactor0 +\cf3 Continued Lists +\f0\i0\fs22 \ +\pard\pardeftab720\fi432\sl276\slmult1\sa480\partightenfactor0 + +\fs24 \cf3 \ +\pard\pardeftab720\sl276\slmult1\qc\partightenfactor0 + +\f1\b\fs28 \cf4 Images\ +\pard\pardeftab720\fi432\sl276\slmult1\partightenfactor0 + +\f0\b0\fs24 \cf3 Images can be of three main types. Inline images are images that are part of the normal text flow, like this image of a green dot {{\NeXTGraphic pastedGraphic.png \width220 \height220 \appleattachmentpadding0 \appleembedtype0 \appleaqc +}¬}. Inline images do not cause breaks in the text and are usually small in size. The next category of image is a floating image, one that \'93floats \'93 on the page and is surrounded by text. Word supports more types of floating images than are possible with current ebook technology, so the conversion maps floating images to simple left and right floats, as you can see with the left and right arrow images on the sides of this paragraph.\ +The final type of image is a \'93block\'94 image, one that becomes a paragraph on its own and has no text on either side. Below is a centered green dot.\ + Centered images like this are useful for large pictures that should be a focus of attention. \ +\pard\pardeftab720\fi432\sl276\slmult1\sa480\partightenfactor0 +\cf3 Generally, it is not possible to translate the exact positioning of images from a Word document to an ebook. That is because in Word, image positioning is specified in absolute units from the page boundaries. There is no analogous technology in ebooks, so the conversion will usually end up placing the image either centered or floating close to the point in the text where it was +\f2\i \cf11 inserted +\f0\i0 \cf3 , not necessarily where it appears on the page in Word.\ +\pard\pardeftab720\sl276\slmult1\qc\partightenfactor0 + +\f1\b\fs28 \cf4 Lists\ +\pard\pardeftab720\fi432\sl276\slmult1\sa200\partightenfactor0 + +\f0\b0\fs24 \cf3 All types of lists are supported by the conversion, with the exception of lists that use fancy bullets, these get converted to regular bullets.\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Bulleted List\ +\pard\tx792\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\partightenfactor0 +\ls1\ilvl0 +\f5\b0\fs24 \cf3 \up0 \nosupersub \ulnone {\listtext \uc0\u8226 } +\f0 \up0 \nosupersub \ulnone One\ +\pard\tx792\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\sa200\partightenfactor0 +\ls1\ilvl0 +\f5 \cf3 \up0 \nosupersub \ulnone {\listtext \uc0\u8226 } +\f0 \up0 \nosupersub \ulnone Two\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Numbered List\ +\pard\tx792\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\partightenfactor0 +\ls2\ilvl0 +\f0\b0\fs24 \cf3 \up0 \nosupersub \ulnone {\listtext 1. }\up0 \nosupersub \ulnone One, with a very long line to demonstrate that the hanging indent for the list is working correctly\ +\pard\tx792\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\sa200\partightenfactor0 +\ls2\ilvl0\cf3 \up0 \nosupersub \ulnone {\listtext 2. }\up0 \nosupersub \ulnone Two\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Multi-level Lists\ +\pard\tx360\tx720\pardeftab720\li720\fi-720\sl276\slmult1\partightenfactor0 +\ls3\ilvl0 +\f0\b0\fs24 \cf3 \up0 \nosupersub \ulnone {\listtext 1. }\up0 \nosupersub \ulnone One\ +\pard\tx720\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\partightenfactor0 +\ls3\ilvl1\cf3 \up0 \nosupersub \ulnone {\listtext 1.1. }\up0 \nosupersub \ulnone Two\ +\pard\tx1080\tx1584\pardeftab720\li1584\fi-1584\sl276\slmult1\partightenfactor0 +\ls3\ilvl2\cf3 \up0 \nosupersub \ulnone 1.1.1.\up0 \nosupersub \ulnone Three\ +\ls3\ilvl2\up0 \nosupersub \ulnone 1.1.2.\up0 \nosupersub \ulnone Four with a very long line to demonstrate that the hanging indent for the list is working correctly.\ +\ls3\ilvl2\up0 \nosupersub \ulnone 1.1.3.\up0 \nosupersub \ulnone Five\ +\pard\tx360\tx720\pardeftab720\li720\fi-720\sl276\slmult1\partightenfactor0 +\ls3\ilvl0\cf3 \up0 \nosupersub \ulnone {\listtext 2. }\up0 \nosupersub \ulnone Six\ +\pard\pardeftab720\li360\sl276\slmult1\partightenfactor0 +\cf3 A Multi-level list with bullets:\ +\pard\tx360\tx720\pardeftab720\li720\fi-720\sl276\slmult1\partightenfactor0 +\ls4\ilvl0 +\f6 \cf3 \up0 \nosupersub \ulnone {\listtext +\f7 \uc0\u9642 +\f6 } +\f0 \up0 \nosupersub \ulnone One\ +\pard\tx720\tx1080\pardeftab720\li1080\fi-1080\sl276\slmult1\partightenfactor0 +\ls4\ilvl1 +\f5 \cf3 \up0 \nosupersub \ulnone {\listtext \uc0\u8226 } +\f0 \up0 \nosupersub \ulnone Two\ +\pard\tx1080\tx1440\pardeftab720\li1440\fi-1440\sl276\slmult1\partightenfactor0 +\ls4\ilvl2 +\f5 \cf3 \up0 \nosupersub \ulnone {\listtext \uc0\u8226 } +\f0 \up0 \nosupersub \ulnone This bullet uses an image as the bullet item\ +\pard\tx1440\tx1800\pardeftab720\li1800\fi-1800\sl276\slmult1\partightenfactor0 +\ls4\ilvl3 +\f8 \cf3 \up0 \nosupersub \ulnone {\listtext o } +\f0 \up0 \nosupersub \ulnone Four\ +\pard\tx360\tx720\pardeftab720\li720\fi-720\sl276\slmult1\sa200\partightenfactor0 +\ls4\ilvl0 +\f6 \cf3 \up0 \nosupersub \ulnone {\listtext +\f7 \uc0\u9642 +\f6 } +\f0 \up0 \nosupersub \ulnone Five\ +\pard\pardeftab720\sl276\slmult1\partightenfactor0 + +\f1\b\fs26 \cf5 Continued Lists\ +\pard\tx658\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\partightenfactor0 +\ls5\ilvl0 +\f0\b0\fs24 \cf3 \up0 \nosupersub \ulnone {\listtext i. }\up0 \nosupersub \ulnone One\ +\ls5\ilvl0\up0 \nosupersub \ulnone {\listtext ii. }\up0 \nosupersub \ulnone Two\ +\pard\pardeftab720\li720\sl276\slmult1\partightenfactor0 +\cf3 An interruption in our regularly scheduled listing, for this essential and very relevant public service announcement.\ +\pard\tx658\tx1152\pardeftab720\li1152\fi-1152\sl276\slmult1\partightenfactor0 +\ls6\ilvl0\cf3 \up0 \nosupersub \ulnone {\listtext iii. }\up0 \nosupersub \ulnone We now resume our normal programming\ +\ls6\ilvl0\up0 \nosupersub \ulnone {\listtext iv. }\up0 \nosupersub \ulnone Four\ +\pard\pardeftab720\li1440\sl276\slmult1\partightenfactor0 +\cf3 \ +\ +\pard\pardeftab720\partightenfactor0 + +\fs13\fsmilli6667 \cf3 \super 1 +\fs20 \nosupersub In paged media, footnotes are usually displayed at the bottom of the text. However, in ebooks, a better paradigm is to make them clickable endnotes that the user can browse at her pleasure. This conversion is handled automatically by calibre.\ +\pard\pardeftab720\fi432\partightenfactor0 + +\fs13\fsmilli6667 \cf3 \super 2 +\fs20 \nosupersub Endnotes are typically used for longer notes, they remain endnotes when converted into ebook form, except that they have an additional backlink to make it easy to return to the current position after reading the note.} \ No newline at end of file diff --git a/tests/data/markdown-demo.md b/tests/data/markdown-demo.md new file mode 100644 index 00000000..2720b2ed --- /dev/null +++ b/tests/data/markdown-demo.md @@ -0,0 +1,310 @@ +# Markdown: Syntax + +* [Overview](#overview) + * [Philosophy](#philosophy) + * [Inline HTML](#html) + * [Automatic Escaping for Special Characters](#autoescape) +* [Block Elements](#block) + * [Paragraphs and Line Breaks](#p) + * [Headers](#header) + * [Blockquotes](#blockquote) + * [Lists](#list) + * [Code Blocks](#precode) + * [Horizontal Rules](#hr) +* [Span Elements](#span) + * [Links](#link) + * [Emphasis](#em) + * [Code](#code) + * [Images](#img) +* [Miscellaneous](#misc) + * [Backslash Escapes](#backslash) + * [Automatic Links](#autolink) + + +**Note:** This document is itself written using Markdown; you +can [see the source for it by adding '.text' to the URL](/projects/markdown/syntax.text). + +---- + +## Overview + +### Philosophy + +Markdown is intended to be as easy-to-read and easy-to-write as is feasible. + +Readability, however, is emphasized above all else. A Markdown-formatted +document should be publishable as-is, as plain text, without looking +like it's been marked up with tags or formatting instructions. While +Markdown's syntax has been influenced by several existing text-to-HTML +filters -- including [Setext](http://docutils.sourceforge.net/mirror/setext.html), [atx](http://www.aaronsw.com/2002/atx/), [Textile](http://textism.com/tools/textile/), [reStructuredText](http://docutils.sourceforge.net/rst.html), +[Grutatext](http://www.triptico.com/software/grutatxt.html), and [EtText](http://ettext.taint.org/doc/) -- the single biggest source of +inspiration for Markdown's syntax is the format of plain text email. + +## Block Elements + +### Paragraphs and Line Breaks + +A paragraph is simply one or more consecutive lines of text, separated +by one or more blank lines. (A blank line is any line that looks like a +blank line -- a line containing nothing but spaces or tabs is considered +blank.) Normal paragraphs should not be indented with spaces or tabs. + +The implication of the "one or more consecutive lines of text" rule is +that Markdown supports "hard-wrapped" text paragraphs. This differs +significantly from most other text-to-HTML formatters (including Movable +Type's "Convert Line Breaks" option) which translate every line break +character in a paragraph into a `
` tag. + +When you *do* want to insert a `
` break tag using Markdown, you +end a line with two or more spaces, then type return. + +### Headers + +Markdown supports two styles of headers, [Setext] [1] and [atx] [2]. + +Optionally, you may "close" atx-style headers. This is purely +cosmetic -- you can use this if you think it looks better. The +closing hashes don't even need to match the number of hashes +used to open the header. (The number of opening hashes +determines the header level.) + + +### Blockquotes + +Markdown uses email-style `>` characters for blockquoting. If you're +familiar with quoting passages of text in an email message, then you +know how to create a blockquote in Markdown. It looks best if you hard +wrap the text and put a `>` before every line: + +> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. +> +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +> id sem consectetuer libero luctus adipiscing. + +Markdown allows you to be lazy and only put the `>` before the first +line of a hard-wrapped paragraph: + +> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, +consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. +Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus. + +> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse +id sem consectetuer libero luctus adipiscing. + +Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by +adding additional levels of `>`: + +> This is the first level of quoting. +> +> > This is nested blockquote. +> +> Back to the first level. + +Blockquotes can contain other Markdown elements, including headers, lists, +and code blocks: + +> ## This is a header. +> +> 1. This is the first list item. +> 2. This is the second list item. +> +> Here's some example code: +> +> return shell_exec("echo $input | $markdown_script"); + +Any decent text editor should make email-style quoting easy. For +example, with BBEdit, you can make a selection and choose Increase +Quote Level from the Text menu. + + +### Lists + +Markdown supports ordered (numbered) and unordered (bulleted) lists. + +Unordered lists use asterisks, pluses, and hyphens -- interchangably +-- as list markers: + +* Red +* Green +* Blue + +is equivalent to: + ++ Red ++ Green ++ Blue + +and: + +- Red +- Green +- Blue + +Ordered lists use numbers followed by periods: + +1. Bird +2. McHale +3. Parish + +It's important to note that the actual numbers you use to mark the +list have no effect on the HTML output Markdown produces. The HTML +Markdown produces from the above list is: + +If you instead wrote the list in Markdown like this: + +1. Bird +1. McHale +1. Parish + +or even: + +3. Bird +1. McHale +8. Parish + +you'd get the exact same HTML output. The point is, if you want to, +you can use ordinal numbers in your ordered Markdown lists, so that +the numbers in your source match the numbers in your published HTML. +But if you want to be lazy, you don't have to. + +To make lists look nice, you can wrap items with hanging indents: + +* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. + Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, + viverra nec, fringilla in, laoreet vitae, risus. +* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. + Suspendisse id sem consectetuer libero luctus adipiscing. + +But if you want to be lazy, you don't have to: + +* Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, +viverra nec, fringilla in, laoreet vitae, risus. +* Donec sit amet nisl. Aliquam semper ipsum sit amet velit. +Suspendisse id sem consectetuer libero luctus adipiscing. + +List items may consist of multiple paragraphs. Each subsequent +paragraph in a list item must be indented by either 4 spaces +or one tab: + +1. This is a list item with two paragraphs. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit. Aliquam hendrerit + mi posuere lectus. + + Vestibulum enim wisi, viverra nec, fringilla in, laoreet + vitae, risus. Donec sit amet nisl. Aliquam semper ipsum + sit amet velit. + +2. Suspendisse id sem consectetuer libero luctus adipiscing. + +It looks nice if you indent every line of the subsequent +paragraphs, but here again, Markdown will allow you to be +lazy: + +* This is a list item with two paragraphs. + + This is the second paragraph in the list item. You're +only required to indent the first line. Lorem ipsum dolor +sit amet, consectetuer adipiscing elit. + +* Another item in the same list. + +To put a blockquote within a list item, the blockquote's `>` +delimiters need to be indented: + +* A list item with a blockquote: + + > This is a blockquote + > inside a list item. + +To put a code block within a list item, the code block needs +to be indented *twice* -- 8 spaces or two tabs: + +* A list item with a code block: + + + +### Code Blocks + +Pre-formatted code blocks are used for writing about programming or +markup source code. Rather than forming normal paragraphs, the lines +of a code block are interpreted literally. Markdown wraps a code block +in both `
` and `` tags.
+
+To produce a code block in Markdown, simply indent every line of the
+block by at least 4 spaces or 1 tab.
+
+This is a normal paragraph:
+
+    This is a code block.
+
+Here is an example of AppleScript:
+
+    tell application "Foo"
+        beep
+    end tell
+
+A code block continues until it reaches a line that is not indented
+(or the end of the article).
+
+Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
+are automatically converted into HTML entities. This makes it very
+easy to include example HTML source code using Markdown -- just paste
+it and indent it, and Markdown will handle the hassle of encoding the
+ampersands and angle brackets. For example, this:
+
+    
+
+Regular Markdown syntax is not processed within code blocks. E.g.,
+asterisks are just literal asterisks within a code block. This means
+it's also easy to use Markdown to write about Markdown's own syntax.
+
+```
+tell application "Foo"
+    beep
+end tell
+```
+
+## Span Elements
+
+### Links
+
+Markdown supports two style of links: *inline* and *reference*.
+
+In both styles, the link text is delimited by [square brackets].
+
+To create an inline link, use a set of regular parentheses immediately
+after the link text's closing square bracket. Inside the parentheses,
+put the URL where you want the link to point, along with an *optional*
+title for the link, surrounded in quotes. For example:
+
+This is [an example](http://example.com/) inline link.
+
+[This link](http://example.net/) has no title attribute.
+
+### Emphasis
+
+Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
+emphasis. Text wrapped with one `*` or `_` will be wrapped with an
+HTML `` tag; double `*`'s or `_`'s will be wrapped with an HTML
+`` tag. E.g., this input:
+
+*single asterisks*
+
+_single underscores_
+
+**double asterisks**
+
+__double underscores__
+
+### Code
+
+To indicate a span of code, wrap it with backtick quotes (`` ` ``).
+Unlike a pre-formatted code block, a code span indicates code within a
+normal paragraph. For example:
+
+Use the `printf()` function.
\ No newline at end of file
diff --git a/tests/data/odt-demo.odt b/tests/data/odt-demo.odt
new file mode 100644
index 00000000..c99c76f9
Binary files /dev/null and b/tests/data/odt-demo.odt differ
diff --git a/tests/test.py b/tests/test.py
index 10f3a95c..1fb68cc7 100644
--- a/tests/test.py
+++ b/tests/test.py
@@ -636,3 +636,35 @@ def test_lowes_dataset(setup_lowes_dataset, judge_client, question, answer):
 def test_imagejonm_dataset(setup_imagejonm_dataset, judge_client, question, answer):
     dataset = setup_imagejonm_dataset
     run_test(question, answer, dataset, judge_client)
+
+
+@pytest.mark.parametrize("question,answer", [
+    ("what are the 3 main types of images", "Inline, floating and block")
+])
+def test_docx_1_dataset(setup_docx_1_dataset, judge_client, question, answer):
+    dataset = setup_docx_1_dataset
+    run_test(question, answer, dataset, judge_client)
+
+
+@pytest.mark.parametrize("question,answer", [
+    ("what are the 3 main types of images", "Inline, floating and block")
+])
+def test_rtfd_1_dataset(setup_rtfd_1_dataset, judge_client, question, answer):
+    dataset = setup_rtfd_1_dataset
+    run_test(question, answer, dataset, judge_client)
+
+
+@pytest.mark.parametrize("question,answer", [
+    ("what are the possible tags that can be wrapped to a code block", "pre, code")
+])
+def test_markdown_dataset(setup_markdown_dataset, judge_client, question, answer):
+    dataset = setup_markdown_dataset
+    run_test(question, answer, dataset, judge_client)
+
+
+@pytest.mark.parametrize("question,answer", [
+    ("what are the 3 main types of images", "Inline, floating and block")
+])
+def test_odt_1_dataset(setup_odt_1_dataset, judge_client, question, answer):
+    dataset = setup_odt_1_dataset
+    run_test(question, answer, dataset, judge_client)