iccsa-17-ascheduler

git clone https://git.igankevich.com/iccsa-17-ascheduler.git
Log | Files | Refs

commit 5a1d5edae1b9247aea3fe43c8adbed9e1bb25d1a
Author: Ivan Gankevich <i.gankevich@spbu.ru>
Date:   Sun, 26 Dec 2021 20:43:26 +0300

Copy from overleaf.

Diffstat:
aliascnt.sty | 88+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
asched-iccsa17.tex | 339+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
eijkel2-eps-converted-to.pdf | 0
eijkel2.eps | 493+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fig/apache-spark-integration.eps | 1137+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
fig/apache-spark-integration.png | 0
fig/ascheduler-components.png | 0
fig/comparison-table.png | 0
fig/overview1.jpg | 0
fig/overview2.jpg | 0
fig/plot-bench-all.pdf | 0
fig/plot-bench-all.png | 0
history.txt | 132+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
llncs.cls | 1208++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
llncs.dem | 1093+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
llncsdoc.pdf | 0
llncsdoc.sty | 42++++++++++++++++++++++++++++++++++++++++++
readme.txt | 30++++++++++++++++++++++++++++++
refs.bib | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
remreset.sty | 39+++++++++++++++++++++++++++++++++++++++
splncs03.bst | 1519+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
sprmindx.sty | 4++++
22 files changed, 6205 insertions(+), 0 deletions(-)

diff --git a/aliascnt.sty b/aliascnt.sty @@ -0,0 +1,88 @@ +%% +%% This is file `aliascnt.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% aliascnt.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: aliascnt +%% Version: 2009/09/08 v1.3 +%% +%% Copyright (C) 2006, 2009 by +%% Heiko Oberdiek <heiko.oberdiek at googlemail.com> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file aliascnt.dtx +%% and the derived files +%% aliascnt.sty, aliascnt.pdf, aliascnt.ins, aliascnt.drv. +%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{aliascnt}% + [2009/09/08 v1.3 Alias counter (HO)]% +\newcommand*{\newaliascnt}[2]{% + \begingroup + \def\AC@glet##1{% + \global\expandafter\let\csname##1#1\expandafter\endcsname + \csname##1#2\endcsname + }% + \@ifundefined{c@#2}{% + \@nocounterr{#2}% + }{% + \expandafter\@ifdefinable\csname c@#1\endcsname{% + \AC@glet{c@}% + \AC@glet{the}% + \AC@glet{theH}% + \AC@glet{p@}% + \expandafter\gdef\csname AC@cnt@#1\endcsname{#2}% + \expandafter\gdef\csname cl@#1\expandafter\endcsname + \expandafter{\csname cl@#2\endcsname}% + }% + }% + \endgroup +} +\newcommand*{\aliascntresetthe}[1]{% + \@ifundefined{AC@cnt@#1}{% + \PackageError{aliascnt}{% + `#1' is not an alias counter% + }\@ehc + }{% + \expandafter\let\csname the#1\expandafter\endcsname + \csname the\csname AC@cnt@#1\endcsname\endcsname + }% +} +\newcommand*{\AC@findrootcnt}[1]{% + \@ifundefined{AC@cnt@#1}{% + #1% + }{% + \expandafter\AC@findrootcnt\csname AC@cnt@#1\endcsname + }% +} +\def\AC@patch#1{% + \expandafter\let\csname AC@org@#1reset\expandafter\endcsname + \csname @#1reset\endcsname + \expandafter\def\csname @#1reset\endcsname##1##2{% + \csname AC@org@#1reset\endcsname{##1}{\AC@findrootcnt{##2}}% + }% +} +\RequirePackage{remreset} +\AC@patch{addto} +\AC@patch{removefrom} +\endinput +%% +%% End of file `aliascnt.sty'. diff --git a/asched-iccsa17.tex b/asched-iccsa17.tex @@ -0,0 +1,339 @@ + +%%%%%%%%%%%%%%%%%%%%%%% file typeinst.tex %%%%%%%%%%%%%%%%%%%%%%%%% +% +% This is the LaTeX source for the instructions to authors using +% the LaTeX document class 'llncs.cls' for contributions to +% the Lecture Notes in Computer Sciences series. +% http://www.springer.com/lncs Springer Heidelberg 2006/05/04 +% +% It may be used as a template for your own input - copy it +% to a new file with a new name and use it as the basis +% for your article. +% +% NB: the document class 'llncs' has its own and detailed documentation, see +% ftp://ftp.springer.de/data/pubftp/pub/tex/latex/llncs/latex2e/llncsdoc.pdf +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\documentclass[runningheads,a4paper]{llncs} + +\usepackage{amssymb} +\setcounter{tocdepth}{3} +\usepackage{graphicx} +\usepackage{booktabs} +\usepackage{numprint} +\usepackage{url} +\usepackage{cite} +%\urldef{\mailsa}\path|{alfred.hofmann, ursula.barth, ingrid.haas, frank.holzwarth,| +%\urldef{\mailsb}\path|anna.kramer, leonie.kunz, christine.reiss, nicole.sator,| +%\urldef{\mailsc}\path|erika.siebert-cole, peter.strasser, lncs}@springer.com| +\newcommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1} + +\begin{document} + +\mainmatter % start of an individual contribution + +% first the title is needed +\title{Distributed data processing on microcomputers with Ascheduler and Apache Spark} + +% a short form should be given in case it is too long for the running head +\titlerunning{Distributed data processing on microcomputers} + +% the name(s) of the author(s) follow(s) next +% +% NB: Chinese authors should write their first names(s) in front of +% their surnames. This ensures that the names appear correctly in +% the running heads and the author index. +% +\author{Vladimir Korkhov\inst{1} \and Ivan Gankevich\inst{1} \and Oleg Iakushkin\inst{1} \and Dmitry Gushchanskiy\inst{1} \and Dmitry Khmel\inst{1} \and Andrey Ivashchenko\inst{1} + \and Alexander Pyayt\inst{2} \and Sergey Zobnin\inst{2} \and Alexander Loginov\inst{2}} + +\authorrunning{V.Korkhov et.al.} +% (feature abused for this document to repeat the title also on left hand pages) + +% the affiliations are given next; don't give your e-mail address +% unless you accept that it will be published +\institute{Saint Petersburg State University,\\ +7/9 Universitetskaya nab., St. Petersburg, 199034, Russia\\ +\email{v.korkhov@spbu.ru} +\and +Siemens LLC, St. Petersburg, Russia +%\mailsa\\ +%\mailsb\\ +%\mailsc\\ +%\url{http://www.springer.com/lncs} +} + +% +% NB: a more complex sample for affiliations and the mapping to the +% corresponding authors can be found in the file "llncs.dem" +% (search for the string "\mainmatter" where a contribution starts). +% "llncs.dem" accompanies the document class "llncs.cls". +% + +%\toctitle{Lecture Notes in Computer Science} +%\tocauthor{Authors' Instructions} +\maketitle + + +\begin{abstract} + +Modern architectures of data acquisition and processing often consider low-cost and low-power devices that can be bound together to form a distributed infrastructure. In this paper we overview possibilities to organize a distributed computing testbed based on microcomputers similar to Raspberry Pi and Intel Edison. The goal of the research is to investigate and develop a scheduler for orchestrating distributed data processing and general purpose computations on such unreliable and resource-constrained hardware. Also we consider integration of the scheduler with well-known distributed data processing framework Apache Spark. We outline the project carried out in collaboration with Siemens LLC to compare different configurations of the hardware and software deployment and evaluate performance and applicability of the tools to the testbed. + +\keywords{microcomputers, scheduling, Apache Spark, Raspberry Pi, fault tolerance, high availability} +\end{abstract} + + +\section{Introduction} + +The problem of building distributed computing infrastructures for data collection and processing has been around for many years. One of the well-known technologies for building large-scale computing infrastructures is grid computing. It provides means to connect heterogeneous, dynamic resources into a single metacomputer. However, being focused on high-performance computing systems, grid technologies do not suit well other classes of basic hardware. One of such examples are low-performance, low-cost unreliable microcomputers similar to Raspberry Pi or Intel Edison, sometimes also called System-on-Chip (SoC) devices. To be able to execute distributed applications over a set of such devices extensive fault-tolerance support is needed along with low resource usage profile of the middleware. + +In this paper we discuss an approach to orchestrate distributed computing and data processing on microcomputers with help of custom scheduler focused on fault tolerance and dynamic rescheduling of computational kernels that represent the application. This scheduler, which is named Ascheduler, provides its own low-level API to create and manage computational kernels. Currently the Ascheduler is a closed-source project built on the ideas and approaches presented in ~\cite{gankevich2015subordination,gankevich2016factory,gankevich2016nonstop}. + +In addition, the scheduler has been integrated into Apache Spark~\cite{spark} data processing framework instead of the default scheduler used by Spark. This opened possibilities to use a wide range of existing Spark-based programs on the underlying microcomputer infrastructure controlled by the Ascheduler. + +The project aimed to solve the following main tasks: +\begin{itemize} + \item Develop automatic failover and high-availability mechanisms for computer system. + \item Develop automatic elasticity mechanism for computer system. + \item Enable adjusting application algorithm precision taking into account current number of healthy cluster nodes. + \item Adjust load distribution taking into account actual and heterogeneous monitoring data from cluster nodes. + \item Adjust micro-kernel execution order to minimise peak memory footprint of cluster nodes. +\end{itemize} + +The task of data processing on resource-constrained and unreliable hardware emerges within the framework of sensor real-time near-field data processing. The implementation of the system, allowing to carry out the processing in the field, will allow one to quickly respond to sudden changes in sensor readings and reduce the time of decision-making. The implementation of general-purpose computations in such a system allows one to use the same hardware and software system for a diverse high-tech equipment. + +The paper is organised as follows: Section 2 presents an overview of related work on using microcomputers for building distributed data processing systems with Hadoop and Spark; Section 3 presents the architecture of our solution; Section 4 explains how Ascheduler is integrated with Apache Spark; Section 5 presents experimental evaluation; Section 6 discusses the results and Section 7 concludes the paper. + +\section{Related work} + +There are a number of publications which report on successful deployments of Hadoop and Spark on various resource-constrained platforms: +\begin{itemize} + \item Hadoop on Raspberry Pi~\cite{cox2014iridis}; + \item Hadoop on Raspberry Pi~\cite{fox2015raspberry}; + \item Spark on Raspberry Pi~\cite{hajji2016understanding}; + \item Spark on Cubieboard~\cite{kaewkasi2014study}. +\end{itemize} +These papers outline common problems and solutions when running Hadoop/Spark on resource-constrained systems. These are: +\begin{itemize} + \item large memory footprint problems, + \item too slow/resource-hungry Java VM, + \item overheating problems. +\end{itemize} + +These works do not report any particular problem with Java on resource-constrained platforms and all of them use standard JRE. Neither they report any overheating or large memory footprint problems (although, Raspberry Pi, for example, does not have a cooler). However, all the papers deal with system boards in laboratory or similar environments, where these problems are non-existent. Additionally, the authors run only simple tests to demonstrate that the system is working, and no production-grade application is studied nor large-scale performance tests performed. Using Java and standard JRE for scheduler development seems rational for simple workloads, however, large workloads may require additional boards to cope with memory footprint or boost processing power. + +\section{Architecture} +\subsection{Architecture overview} +The core concepts and architecture used for the implementation of Ascheduler are described in detail in~\cite{gankevich2015subordination,gankevich2016factory,gankevich2016nonstop}. Here we summarise the most important aspects relevant to the current testbed implementation. + +To solve the problem of fault-tolerance of slave cluster nodes we use a simple restart: try to re-execute the task from the failed node on a healthy one. To solve the problem of high-availability of the master node we use replication: copy minimum necessary amount of state to restart the task on the backup node. When the master node fails, its role is delegated to the backup node, and task execution continues. When the backup node fails, the master node restarts the current stage of the task. The most important feature of the approach used in Ascheduler is to ensure master node fault-tolerance without any external controller (e.g.~Zookeeper in Hadoop/Spark ecosystem). + +Cluster nodes are combined into a tree hierarchy that is used to uniquely determine the master, backup and slave nodes roles without a conflict~\cite{gankevich2016factory}. + +Each node may perform any combination of roles at the same time, but can not be both master and backup. The initial construction of the hierarchy is carried out automatically, and the node's position in the hierarchy is solely determined by the position of its IP-addresses in a subnet. + +When any cluster node fails or a new one joins the cluster, the hierarchy is rebuilt automatically. + +The elasticity of the computer system is provided by dividing each task on a large number of subtasks (called micro-kernels), between which hierarchical links are established. All micro-kernels are processed asynchronously, which makes it possible to distribute them on the cluster nodes and processor cores, balancing the load. Typically, the amount of micro-kernels in a problem exceeds the total number of nodes/cores in the cluster, so the order of their processing can be optimised so as to minimise memory footprint, or to minimise power consumption by grouping all of the micro-kernels on a small number of nodes, or to ensure the maximum speed of task execution, distributing micro-kernels across all nodes in the cluster. If the cluster capacity is not enough to handle the current data flow/volume of data, micro-kernel pools on the cluster nodes overflow, and excessive kernels may be transferred to a more powerful remote server/cluster. The amount of data, that must be replicated to the backup node to ensure the high-availability, equals to the amount of RAM occupied by a kernel, and can be controlled by the programmer. + +Figure~\ref{fig:overview} shows the schematic view of the system. + +%Project structure +%WP1: Development of scheduler core and API +%WP2: Study of communication mechanisms for loT devices and their networking behavior under computational load +%WP3: Analysis of scheduler integration options with Apache Spark +%WP4: Study of GPGPU computational capabilities +%WP5: Development of system monitoring and visualisation tools + +\begin{figure} +\centering +\includegraphics[width=12cm]{fig/overview2.jpg} +\caption{Schematic view.} +\label{fig:overview} +\end{figure} + +\subsection{Hardware} + +Microcomputers used in the testbed: +\begin{itemize} +\item Raspberry Pi 3 Model B (2 pieces) +\item Raspberry Pi 1 +\item Intel Edison +\item Orange Pi (2 pieces) +\end{itemize} + +\subsection{Scheduler core and API} + +The Ascheduler has layered architecture, as discussed in~\cite{gankevich2015subordination,gankevich2016factory,gankevich2016nonstop}: +\begin{itemize} + \item Physical layer. Consists of nodes and direct/routed network links. + \item Daemon layer. Consists of daemon processes residing on cluster nodes and hierarchical (master/slave) links between them. + \item Kernel layer. Consists of kernels and hierarchical (parent/child) links between them. +\end{itemize} + +Master and slave roles are dynamically assigned to daemon processes, any physical cluster node may become master or slave. Dynamic reassignment uses leader election algorithm that does not require periodic broadcasting of messages, and the role is derived from node's IP address. Detailed explanation of the algorithm is provided in~\cite{gankevich2015subordination}. + +Software implementation of Ascheduler consists of three main components (Fig.~\ref{fig:components}): +\begin{itemize} + \item Task scheduler core (which is used to compose distributed applications). + \item Scheduler daemon based on the core. + \item A driver which integrates scheduler into Apache Spark. +\end{itemize} + +\begin{figure} +\centering +\includegraphics[width=8cm]{fig/ascheduler-components.png} +\caption{Scheduler components.} +\label{fig:components} +\end{figure} + + +\subsubsection{Task scheduler core.} +The core provides classes and methods to simplify development of distributed applications and middleware. The main focus of this package is to make distributed application resilient to failures, i.e. make it fault tolerant and highly available, and do it transparently to a programmer. + +All classes are divided into two layers: the lower layer consists of classes for single node applications, and the upper layer consists of classes for applications that run on an arbitrary number of nodes. There are two kinds of tightly coupled entities in the package~--- \emph{kernels} and \emph{pipelines}~--- which are used together to compose a programme. +Kernels implement control flow logic in their \texttt{act} and \texttt{react} methods and store the state of the current control flow branch. Both logic and state are implemented by a programmer. In \texttt{act} method some function is either sequentially computed or decomposed into subtasks (represented by another set of kernels) which are subsequently sent to a pipeline. In \texttt{react} method subordinate kernels that returned from the pipeline are processed by their parent. Calls to act and react methods are asynchronous and are made within threads spawned by a pipeline. For each kernel \texttt{act} is called only once, and for multiple kernels the calls are done in parallel to each other, whereas \texttt{react} method is called once for each subordinate kernel, and all the calls are made in the same thread to prevent race conditions (for different parent kernels different threads may be used). + +Pipelines implement asynchronous calls to \texttt{act} and \texttt{react}, and try to make as many parallel calls as possible considering concurrency of the platform (no. of cores per node and no. of nodes in a cluster). A pipeline consists of a kernel pool, which contains all the subordinate kernels sent by their parents, and a thread pool that processes kernels in accordance with rules outlined in the previous paragraph. A separate pipeline exists for each compute device: There are pipelines for parallel processing, schedule-based processing (periodic and delayed tasks), and a proxy pipeline for processing kernels on other cluster nodes. + +In principle, kernels and pipelines machinery reflect the one of procedures and call stacks, with the advantage that kernel methods are called asynchronously and in parallel to each other. The stack, which ordinarily stores local variables, is modelled by fields of a kernel. The sequence of processor instructions before nested procedure calls is modelled by act method, and sequence of processor instructions after the calls is modelled by react method. The procedure calls themselves are modelled by constructing and sending subordinate kernels to the pipeline. Two methods are necessary because calls are asynchronous and one must wait before subordinate kernels complete their work. Pipelines allow circumventing active wait, and call correct kernel methods by analysing their internal state. + +\subsubsection{Scheduler daemon.} +The purpose of the daemon is to accept tasks from the driver and launch applications in child processes to run these tasks. Each task is wrapped in a kernel, which is used to create a new child process. All subsequent tasks are sent to the newly created process via shared memory pages, and results are sent back via the same interface. The same protocol is used to exchange kernels between parent and child processes and between different cluster nodes. This allows scheduler daemon to distribute kernels between cluster nodes without knowing exact Java classes that implement kernel interface. + +Scheduler daemon is a thin layer on top of the core classes which adds a set of configuration options, automatically discovers other daemons over local area network and launches child processes for each application to process tasks from the driver. + +\subsubsection{Apache Spark integration driver.} +The purpose of the driver is to send Apache Spark tasks to scheduler daemon for execution. The driver connects to an instance of the scheduler daemon via its own protocol (the same protocol that is used to send kernels), wraps each task in a kernel and sends them to the daemon. The driver is implemented using the same set of core classes. This allows testing the driver without a scheduler (replace integration tests with unit tests) as well as using the driver without a scheduler, i.e.~process all kernels locally, on the same node where Spark client runs. + +\subsubsection{Fault tolerance and high availability.} +The scheduler has fault tolerance and high availability built into its low-level core API. Every failed kernel is restarted on healthy node or on its parent node, however, failure is detected only for kernels that are sent from one node to another (local kernels are not considered). High availability is provided by replicating master kernel to a subordinate node. When any of the replicas fails, another one is used in place. Detailed explanation of the fail over algorithm is provided in~\cite{gankevich2016factory}. + +\subsubsection{Security.} +Scheduler driver is able to communicate with scheduler daemons in local area network. Inter-daemon messaging is not encrypted or signed in any way, assuming that local area network is secure. There is also no protection from Internet ``noise''. Submission of the task to a remote cluster can be done via SSH (Secure Shell) connection/tunnel which is \textit{de facto} standard way of communication between Linux/UNIX servers. So, scheduler security is based on the assumption that it is deployed in secure local area network. Every job is run from the same user, as there is no portable way to switch process owner in Java. + +\subsection{Ascheduler integration with Spark} +Starting with the version 2.0, custom schedulers can be integrated in Spark via implementation of three interfaces. For better understanding of Spark classes and their interconnections please refer to Mastering Apache Spark 2.0~\cite{mastering-spark} and source code of Spark classes available at \url{https://github.com/apache/spark}, as sometimes there are useful information in code comments. Class diagram of all implemented Apache Spark interfaces as well as wrapper classes is shown in figure~\ref{fig:spark-int}. + +\begin{figure} +\centering +%\includegraphics[width=12cm]{fig/apache-spark-integration.png} +\includegraphics[width=\linewidth]{fig/apache-spark-integration.eps} +\caption{Apache Spark integration} +\label{fig:spark-int} +\end{figure} + +\subsection{Communication} +The aim of the project was to build a wireless microcomputer cluster. To create a Wi-Fi based ad hoc network mesh we have chosen a protocol with a driver and API: B.A.T.M.A.N. (Better Approach To Mobile Adhoc Networking mesh protocol)~\cite{BATMAN}. B.A.T.M.A.N. helps organizing and routing wireless ad-hoc networks that are unstructured, dynamically change their topology, and are based on an inherently unreliable medium. Additionally, B.A.T.M.A.N. provides means to collect the knowledge about the network topology, state and quality of the links~--- this information is used by Ascheduler to make scheduling decisions aware of physical network topology and links. + + +\section{Creating Apache Spark applications for running with Ascheduler} +Apache Spark connects to Ascheduler via an implementation of interfaces for custom schedulers. Ascheduler works with Spark version 2.0.2 only. Since Ascheduler integration required access to classes and interfaces considered private in Apache Spark, work of Ascheduler with another versions of Spark is not guaranteed. + +Ascheduler integration with Spark has been implemented in a way that allows using Spark functionality disregarding the choice of the scheduler. If Spark is used with several schedulers, the user might want to explicitly choose the scheduling mode. It can be done by creating \texttt{SparkContext} from \texttt{SparkConf} with method \texttt{setMaster(masterURL)} invoked. Here \texttt{masterURL} corresponds to particular scheduler with parameters. For Ascheduler string value \texttt{ascheduler} could be used for the cluster mode and \texttt{ascheduler-local}~--- for the local mode. Spark driver for Ascheduler has more masterURL options, because of some hard-coded Spark limitations that have to be bypassed: +\begin{itemize} + \item \texttt{local-ascheduler} for using cluster Ascheduler from Spark shell + \item \texttt{local-ascheduler-local} for using local Ascheduler from Spark shell + \item \texttt{local[O\_O]-ascheduler-local} for using Spark Streaming with Ascheduler in local version. +\end{itemize} + +Spark programs running on Ascheduler were tested both on local and cluster versions. Spark with Ascheduler supports a wide range of standard operations and functions, such as: +\begin{itemize} + \item running both in Spark shell and as standalone applications; + \item operating on Resilient Distributed Datasets (RDDs): mapping, reducing, grouping operations; + \item partition-wise transformations on RRDs: controllable re-partitioning, shuffling, persisting RDDs, calling functions for partitions; + \item Multi-RDD operations: union, subtracting, zipping one RDD with another; + \item Broadcasting shared variables among executors; + \item Accumulators and task metrics based on them; + \item Spark Streaming with rerunning nodes (master included) in case of failure. +\end{itemize} +The work of Spark with Ascheduler and any of Spark packages except Spark Streaming is not guaranteed. With those exceptions, any Spark application is expected to work with Ascheduler as a task scheduling base. + +\section{Evaluation} + +The application used for evaluation is an example of real-time micro-batch processing using Ascheduler and Apache Spark. The application consists of two entities: a periodic signal generator and its processor. The generator creates batches of values of a superposition of harmonic signals and sends them for processing via a network socket and for output via a websocket. The processor receives the batches from the raw socket, applies adaptive Fast Fourier Transform (FFT) on the signal and sends the result into output via a WebSocket. Both outputs are available on the system monitoring page. + +In this experiment we benchmark two implementations of FFT demo application on two platforms using two schedulers (fig.~\ref{fig:comparison}). The first implementation is based on Spark Streaming API, the second is based on Ascheduler API. The first platform (left column) is Intel Edison, the second (right column) is commodity Intel Core i5. The first scheduler is Spark Standalone in local mode, the second scheduler is Ascheduler in local mode. Cluster versions are not benchmarked in this experiment. In each run demo application computes spectrum of 25KHz signal in real time for 5 minutes. Time of each spectrum computation is recorded as a point in a graph. Since demo application automatically downsamples input signal when processing is slow, we measure overall throughput by dividing the number of processed points by time taken to process them. The results are presented in fig.~\ref{fig:comparison} for each run and summarised in table~\ref{fig:comparison-table}. + +\begin{figure} +\centering +%\includegraphics[width=11cm]{fig/plot-bench-all.png} +\includegraphics{fig/plot-bench-all.pdf} +\caption{Comparing performance of Ascheduler and Spark schedulers.} +\label{fig:comparison} +\end{figure} + +\begin{table} +\centering +\begin{tabular}{lllr} + \toprule + Platform & Scheduler & API & Average throughput, points/s \\ + \midrule + Intel Edison & Spark & Spark & \numprint{375} \\ + Intel Edison & Ascheduler & Spark & \numprint{995} \\ + Intel Edison & Ascheduler & Ascheduler & \numprint{517676} \\ + Intel Core i5-4200H & Spark & Spark & \numprint{487594} \\ + Intel Core i5-4200H & Ascheduler & Spark & \numprint{511618} \\ + Intel Core i5-4200H & Ascheduler & Ascheduler & \numprint{5046540} \\ + \bottomrule +\end{tabular} +%\includegraphics[width=11cm]{fig/comparison-table.png} +\caption{Comparing performance of Ascheduler and Spark schedulers.} +\label{fig:comparison-table} +\end{table} + + +\section{Discussion} +Graphs show that Spark API is incapable of processing 25KHz input signal on Intel Edison platform. Ascheduler scheduler outperforms Spark standalone by a factor of 3 on Intel Edison but still more performance is needed to process 25KHz signal. Direct use of Ashcheduler API on Intel Edison finally solves the problem, allowing to process 500KHz input signal. +On commodity Intel Core i5 platform there is no significant difference between performance of Spark standalone scheduler and Ascheduler when using Spark API, however, direct use of Ascheduler API gives tenfold increase in performance: it is capable of processing 5GHz input signal. + +\section{Conclusions} + +The following was achieved as the final outcomes of the project: +\begin{itemize} +\item Ascheduler~--- fault-tolerant scheduler implemented in Java, running standalone or with Apache Spark (with Spark Streaming supported) +\item Master-node fault tolerance is supported by Ascheduler. +\item Dynamic resource discovery, composition and re-configuration of distributed cluster. +\item Optimised for running on unreliable and resource-constrained microcomputer hardware. +\item Running in heterogeneous and dynamic hardware and networking environment. +\item Integrated microcomputer and cluster monitoring API. +\item Transparent monitoring and visualization with web-based UI. +\item Distributed FFT application (with GPGPU support if available) with streaming input and dynamic graphical output. +\end{itemize} + +\section*{Acknowledgments} + +The research was supported by Siemens LLC. + + +\bibliographystyle{splncs03} +\bibliography{refs.bib} + +% \begin{thebibliography}{4} + +% \bibitem{gankevich2015subordination} I. Gankevich, Y. Tipikin, and V. Gaiduchok. Subordination: Cluster management without distributed consensus. In International Conference on High Performance Computing and Simulation (HPCS 2015), pages 639–642. IEEE, 2015. + +% \bibitem{gankevich2016factory} I. Gankevich, Y. Tipikin, V. Korkhov, V. Gaiduchok, A. Degtyarev, A. Bogdanov. Factory: Master node high-availability for big data applications and beyond. Lecture Notes in Computer Science, vol. 9787, pp. 379–389. Springer, 2016. + +% \bibitem{gankevich2016nonstop} Gankevich, I., Tipikin, Y., Korkhov, V., Gaiduchok, V. Factory: Non-stop batch jobs without checkpointing (2016) 2016 International Conference on High Performance Computing and Simulation, HPCS 2016, art. no. 7568441, pp. 979-984. DOI: 10.1109/HPCSim.2016.7568441 + +% \bibitem{cox2014iridis} Simon J Cox, James T Cox, Richard P Boardman, Steven J Johnston, Mark Scott, and Neil S O’brien. Iridis-pi: a low-cost, compact demonstration cluster. Cluster Computing, 17(2):349–358, 2014. + +% \bibitem{fox2015raspberry} Kenneth Fox, William M Mongan, and Jeffrey Popyack. Raspberry hadoopi: a low-cost, hands-on laboratory in big data and analytics. In SIGCSE, page 687, 2015. + +% \bibitem{hajji2016understanding} Wajdi Hajji and Fung Po Tso. Understanding the performance of low power raspberry pi cloud for big data. Electronics, 5(2):29, 2016. + +% \bibitem{kaewkasi2014study} Chanwit Kaewkasi and Wichai Srisuruk. A study of big data processing constraints on a low-power Hadoop cluster. In Computer Science and Engineering Conference (ICSEC), 2014 International, pages 267–272. IEEE, 2014. + +% \bibitem{spark} Apache Spark official website. URL: http://spark.apache.org/ + +% \bibitem{mastering-spark} Mastering Apache Spark 2.0, URL: https://www.gitbook.com/book/jaceklaskowski/mastering-apache-spark/details + +% \bibitem{BATMAN} B.A.T.M.A.N. official web page. URL: https://www.open-mesh.org/projects/open-mesh/wiki + +% \end{thebibliography} + +\end{document} diff --git a/eijkel2-eps-converted-to.pdf b/eijkel2-eps-converted-to.pdf Binary files differ. diff --git a/eijkel2.eps b/eijkel2.eps @@ -0,0 +1,493 @@ +%!PS-Adobe-2.0 EPSF-1.2 +%%Creator: MATLAB, The Mathworks, Inc. +%%Title: parz_sym.eps +%%CreationDate: 03/13/96 12:46:22 +%%DocumentNeededFonts: Helvetica +%%DocumentProcessColors: Cyan Magenta Yellow Black +%%Pages: 1 +%%BoundingBox: 59 192 549 590 +%%EndComments + +%%BeginProlog + +% MathWorks dictionary +/MathWorks 150 dict begin + +% definition operators +/bdef {bind def} bind def +/ldef {load def} bind def +/xdef {exch def} bdef +/xstore {exch store} bdef + +% operator abbreviations +/c /clip ldef +/cc /concat ldef +/cp /closepath ldef +/gr /grestore ldef +/gs /gsave ldef +/mt /moveto ldef +/np /newpath ldef +/cm /currentmatrix ldef +/sm /setmatrix ldef +/rc {rectclip} bdef +/rf {rectfill} bdef +/rm /rmoveto ldef +/rl /rlineto ldef +/s /show ldef +/sc {setcmykcolor} bdef +/sr /setrgbcolor ldef +/w /setlinewidth ldef +/j /setlinejoin ldef +/cap /setlinecap ldef + +% page state control +/pgsv () def +/bpage {/pgsv save def} bdef +/epage {pgsv restore} bdef +/bplot /gsave ldef +/eplot {stroke grestore} bdef + +% orientation switch +/portraitMode 0 def +/landscapeMode 1 def + +% coordinate system mappings +/dpi2point 0 def + +% font control +/FontSize 0 def +/FMS { + /FontSize xstore %save size off stack + findfont + [FontSize 0 0 FontSize neg 0 0] + makefont + setfont + }bdef + +/reencode { +exch dup where +{pop load} {pop StandardEncoding} ifelse +exch +dup 3 1 roll +findfont dup length dict begin + { 1 index /FID ne {def}{pop pop} ifelse } forall + /Encoding exch def + currentdict +end +definefont pop +} bdef + +/isroman { +findfont /CharStrings get +/Agrave known +} bdef + +/FMSR { +3 1 roll 1 index +dup isroman +{reencode} {pop pop} ifelse +exch FMS +} bdef + +/csm { + 1 dpi2point div -1 dpi2point div scale + neg translate + landscapeMode eq {90 rotate} if + } bdef + +% line types: solid, dotted, dashed, dotdash +/SO { [] 0 setdash } bdef +/DO { [.5 dpi2point mul 4 dpi2point mul] 0 setdash } bdef +/DA { [6 dpi2point mul] 0 setdash } bdef +/DD { [.5 dpi2point mul 4 dpi2point mul 6 dpi2point mul 4 dpi2point mul] 0 setdash } bdef + +% macros for lines and objects +/L { + lineto + stroke + } bdef +/MP { + 3 1 roll moveto + 1 sub {rlineto} repeat + } bdef +/AP { + {rlineto} repeat + } bdef +/PP { + closepath fill + } bdef +/DP { + closepath stroke + } bdef +/MR { + 4 -2 roll moveto + dup 0 exch rlineto + exch 0 rlineto + neg 0 exch rlineto + closepath + } bdef +/FR { + MR stroke + } bdef +/PR { + MR fill + } bdef +/L1i { + { currentfile picstr readhexstring pop } image + } bdef + +/tMatrix matrix def +/MakeOval { + newpath + tMatrix currentmatrix pop + translate scale + 0 0 1 0 360 arc + tMatrix setmatrix + } bdef +/FO { + MakeOval + stroke + } bdef +/PO { + MakeOval + fill + } bdef + +/PD { + 2 copy moveto lineto stroke + } bdef + + +currentdict end def +%%EndProlog + +%%BeginSetup +MathWorks begin + +0 cap + +end +%%EndSetup + +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 59 192 549 590 +MathWorks begin +bpage +%%EndPageSetup + +%%BeginObject: graph1 1 +bplot + +/dpi2point 12 def +portraitMode 0216 7344 csm + + 501 259 5882 4776 MR c np +76 dict begin %Colortable dictionary +/c0 { 0 0 0 sr} bdef +/c1 { 1 1 1 sr} bdef +/c2 { 1 0 0 sr} bdef +/c3 { 0 1 0 sr} bdef +/c4 { 0 0 1 sr} bdef +/c5 { 1 1 0 sr} bdef +/c6 { 1 0 1 sr} bdef +/c7 { 0 1 1 sr} bdef +%%IncludeResource: font Helvetica +/Helvetica /ISOLatin1Encoding 144 FMSR + +1 j +c1 + 0 0 6912 5184 PR +6 w +DO +4 w +SO +6 w +c0 + 898 4612 mt 6254 4612 L + 898 388 mt 6254 388 L +6254 4612 mt 6254 388 L + 898 4612 mt 898 388 L +6254 4612 mt 6254 4612 L + 898 4612 mt 898 4612 L + 898 4612 mt 6254 4612 L + 898 4612 mt 898 388 L + 898 4612 mt 898 4612 L + 898 4612 mt 898 4558 L + 898 388 mt 898 442 L + 734 4781 mt +(-25) s +1663 4612 mt 1663 4558 L +1663 388 mt 1663 442 L +1499 4781 mt +(-20) s +2428 4612 mt 2428 4558 L +2428 388 mt 2428 442 L +2264 4781 mt +(-15) s +3193 4612 mt 3193 4558 L +3193 388 mt 3193 442 L +3029 4781 mt +(-10) s +3959 4612 mt 3959 4558 L +3959 388 mt 3959 442 L +3835 4781 mt +(-5) s +4724 4612 mt 4724 4558 L +4724 388 mt 4724 442 L +4684 4781 mt +(0) s +5489 4612 mt 5489 4558 L +5489 388 mt 5489 442 L +5449 4781 mt +(5) s +6254 4612 mt 6254 4558 L +6254 388 mt 6254 442 L +6174 4781 mt +(10) s + 898 4612 mt 952 4612 L +6254 4612 mt 6200 4612 L + 783 4665 mt +(0) s + 898 3767 mt 952 3767 L +6254 3767 mt 6200 3767 L + 503 3820 mt +(0.005) s + 898 2922 mt 952 2922 L +6254 2922 mt 6200 2922 L + 583 2975 mt +(0.01) s + 898 2078 mt 952 2078 L +6254 2078 mt 6200 2078 L + 503 2131 mt +(0.015) s + 898 1233 mt 952 1233 L +6254 1233 mt 6200 1233 L + 583 1286 mt +(0.02) s + 898 388 mt 952 388 L +6254 388 mt 6200 388 L + 503 441 mt +(0.025) s + 898 388 mt 6254 388 L + 898 4612 mt 6254 4612 L + 898 4612 mt 898 388 L +6254 4612 mt 6254 388 L + 898 388 mt 898 388 L +6254 388 mt 6254 388 L +gs 898 388 5357 4225 MR c np +DA +16 0 15 0 15 0 16 0 15 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 1 16 0 15 0 15 0 15 0 +16 0 15 0 15 1 16 0 15 0 15 1 16 0 15 1 +15 0 15 1 16 1 15 0 15 1 16 1 15 2 15 1 +16 1 15 2 15 2 15 2 16 3 15 3 15 3 16 3 +15 4 15 4 16 5 15 5 15 6 16 6 15 7 15 8 +15 8 16 9 15 10 15 11 16 12 15 13 15 14 16 16 +15 16 15 18 15 19 16 21 15 22 15 24 16 25 15 27 +15 29 16 31 15 32 15 35 15 36 16 39 15 40 15 43 +16 45 15 47 15 49 4724 3846 100 MP stroke +16 51 15 53 15 55 15 58 16 59 15 61 15 63 16 65 +15 67 15 68 16 70 15 71 15 72 16 74 15 74 15 75 +15 77 16 76 15 77 15 77 16 77 15 77 15 77 16 76 +15 76 15 75 15 73 16 73 15 71 15 70 16 68 15 66 +15 65 16 63 15 60 15 59 15 56 16 54 15 52 15 49 +16 47 15 44 15 42 16 39 15 37 15 34 16 32 15 29 +15 27 15 24 16 22 15 20 15 17 16 15 15 12 15 11 +16 8 15 5 15 4 15 1 16 -1 15 -4 15 -5 16 -8 +15 -11 15 -12 16 -15 15 -17 15 -20 15 -22 16 -24 15 -27 +15 -29 16 -32 15 -34 15 -37 16 -39 15 -42 15 -44 16 -47 +15 -49 15 -52 15 -54 16 -56 15 -59 15 -60 16 -63 15 -65 +15 -66 16 -68 15 -70 15 -71 15 -73 16 -73 15 -75 15 -76 +16 -76 15 -77 15 -77 3209 2426 100 MP stroke +16 -77 15 -77 15 -77 15 -76 16 -77 15 -75 15 -74 16 -74 +15 -72 15 -71 16 -70 15 -68 15 -67 16 -65 15 -63 15 -61 +15 -59 16 -58 15 -55 15 -53 16 -51 15 -49 15 -47 16 -45 +15 -43 15 -40 15 -39 16 -36 15 -35 15 -32 16 -31 15 -29 +15 -27 16 -25 15 -24 15 -22 15 -21 16 -19 15 -18 15 -16 +16 -16 15 -14 15 -13 16 -12 15 -11 15 -10 16 -9 15 -8 +15 -8 15 -7 16 -6 15 -6 15 -5 16 -5 15 -4 15 -4 +16 -3 15 -3 15 -3 15 -3 16 -2 15 -2 15 -2 16 -1 +15 -1 15 -2 16 -1 15 -1 15 0 15 -1 16 -1 15 0 +15 -1 16 0 15 -1 15 0 16 0 15 -1 15 0 15 0 +16 0 15 0 15 0 16 0 15 -1 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 1694 4612 100 MP stroke +16 0 15 0 15 0 1648 4612 4 MP stroke +SO +16 0 15 0 15 0 16 0 15 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 15 0 +16 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +15 0 16 0 15 0 15 1 16 0 15 0 15 0 16 0 +15 0 15 0 15 1 16 0 15 0 15 1 16 0 15 1 +15 0 16 1 15 0 15 1 15 1 16 1 15 2 15 1 +16 1 15 2 15 2 4724 4596 100 MP stroke +16 2 15 3 15 2 15 4 16 3 15 4 15 4 16 5 +15 5 15 5 16 7 15 7 15 7 16 9 15 9 15 10 +15 11 16 12 15 12 15 14 16 15 15 17 15 17 16 19 +15 21 15 22 15 23 16 25 15 27 15 28 16 30 15 32 +15 34 16 35 15 38 15 39 15 41 16 43 15 46 15 47 +16 49 15 50 15 53 16 54 15 56 15 57 16 59 15 60 +15 62 15 62 16 64 15 64 15 65 16 65 15 65 15 66 +16 65 15 65 15 64 15 63 16 62 15 61 15 59 16 57 +15 55 15 53 16 50 15 48 15 44 15 42 16 38 15 35 +15 31 16 27 15 23 15 19 16 15 15 11 15 6 16 2 +15 -2 15 -6 15 -11 16 -15 15 -19 15 -23 16 -27 15 -31 +15 -35 16 -38 15 -42 15 -44 15 -48 16 -50 15 -53 15 -55 +16 -57 15 -59 15 -61 3209 2592 100 MP stroke +16 -62 15 -63 15 -64 15 -65 16 -65 15 -66 15 -65 16 -65 +15 -65 15 -64 16 -64 15 -62 15 -62 16 -60 15 -59 15 -57 +15 -56 16 -54 15 -53 15 -50 16 -49 15 -47 15 -46 16 -43 +15 -41 15 -39 15 -38 16 -35 15 -34 15 -32 16 -30 15 -28 +15 -27 16 -25 15 -23 15 -22 15 -21 16 -19 15 -17 15 -17 +16 -15 15 -14 15 -12 16 -12 15 -11 15 -10 16 -9 15 -9 +15 -7 15 -7 16 -7 15 -5 15 -5 16 -5 15 -4 15 -4 +16 -3 15 -4 15 -2 15 -3 16 -2 15 -2 15 -2 16 -1 +15 -1 15 -2 16 -1 15 -1 15 -1 15 0 16 -1 15 0 +15 -1 16 0 15 -1 15 0 16 0 15 -1 15 0 15 0 +16 0 15 0 15 0 16 0 15 -1 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 1694 4612 100 MP stroke +16 0 15 0 15 0 1648 4612 4 MP stroke +16 0 15 0 15 0 16 0 15 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 1 16 0 15 0 15 0 15 0 +16 0 15 0 15 1 16 0 15 0 15 1 16 0 15 1 +15 0 15 1 16 0 15 1 15 1 16 1 15 2 15 1 +16 1 15 2 15 2 15 2 16 3 15 2 15 4 16 3 +15 4 15 4 16 5 15 5 15 5 16 7 15 7 15 7 +15 9 16 9 15 10 15 11 16 12 15 12 15 14 16 15 +15 17 15 17 15 19 16 21 15 22 15 23 16 25 15 27 +15 28 16 30 15 32 15 34 15 35 16 38 15 39 15 41 +16 43 15 46 15 47 4724 3862 100 MP stroke +16 49 15 50 15 53 15 54 16 56 15 57 15 59 16 60 +15 62 15 62 16 64 15 64 15 65 16 65 15 65 15 66 +15 65 16 65 15 64 15 63 16 62 15 61 15 59 16 57 +15 55 15 53 15 50 16 48 15 44 15 42 16 38 15 35 +15 31 16 27 15 23 15 19 15 15 16 11 15 6 15 2 +16 -2 15 -6 15 -11 16 -15 15 -19 15 -23 16 -27 15 -31 +15 -35 15 -38 16 -42 15 -44 15 -48 16 -50 15 -53 15 -55 +16 -57 15 -59 15 -61 15 -62 16 -63 15 -64 15 -65 16 -65 +15 -66 15 -65 16 -65 15 -65 15 -64 15 -64 16 -62 15 -62 +15 -60 16 -59 15 -57 15 -56 16 -54 15 -53 15 -50 16 -49 +15 -47 15 -46 15 -43 16 -41 15 -39 15 -38 16 -35 15 -34 +15 -32 16 -30 15 -28 15 -27 15 -25 16 -23 15 -22 15 -21 +16 -19 15 -17 15 -17 3209 4446 100 MP stroke +16 -15 15 -14 15 -12 15 -12 16 -11 15 -10 15 -9 16 -9 +15 -7 15 -7 16 -7 15 -5 15 -5 16 -5 15 -4 15 -4 +15 -3 16 -4 15 -2 15 -3 16 -2 15 -2 15 -2 16 -1 +15 -1 15 -2 15 -1 16 -1 15 -1 15 0 16 -1 15 0 +15 -1 16 0 15 -1 15 0 15 0 16 -1 15 0 15 0 +16 0 15 0 15 0 16 0 15 -1 15 0 16 0 15 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 15 0 +16 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 1694 4612 100 MP stroke +16 0 15 0 15 0 1648 4612 4 MP stroke +DO +16 0 15 0 15 0 16 0 15 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 16 0 15 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 15 0 +16 0 15 0 15 0 16 0 15 0 15 1 16 0 15 0 +15 0 15 0 16 0 15 0 15 1 16 0 15 0 15 1 +16 0 15 1 15 0 15 1 16 0 15 1 15 1 16 1 +15 2 15 1 16 1 15 2 15 2 16 2 15 3 15 2 +15 4 16 3 15 4 15 4 16 5 15 5 15 5 16 7 +15 7 15 7 15 9 16 9 15 10 15 11 16 12 15 12 +15 14 16 15 15 17 15 17 15 19 16 21 15 22 15 23 +16 25 15 27 15 28 4724 4247 100 MP stroke +16 30 15 32 15 34 15 35 16 38 15 39 15 41 16 43 +15 46 15 47 16 49 15 50 15 53 16 54 15 56 15 57 +15 59 16 60 15 62 15 62 16 64 15 64 15 65 16 65 +15 65 15 66 15 65 16 65 15 64 15 63 16 62 15 61 +15 59 16 57 15 55 15 53 15 50 16 48 15 44 15 42 +16 38 15 35 15 31 16 27 15 23 15 19 16 15 15 11 +15 6 15 2 16 -2 15 -6 15 -11 16 -15 15 -19 15 -23 +16 -27 15 -31 15 -35 15 -38 16 -42 15 -44 15 -48 16 -50 +15 -53 15 -55 16 -57 15 -59 15 -61 15 -62 16 -63 15 -64 +15 -65 16 -65 15 -66 15 -65 16 -65 15 -65 15 -64 16 -64 +15 -62 15 -62 15 -60 16 -59 15 -57 15 -56 16 -54 15 -53 +15 -50 16 -49 15 -47 15 -46 15 -43 16 -41 15 -39 15 -38 +16 -35 15 -34 15 -32 3209 4217 100 MP stroke +16 -30 15 -28 15 -27 15 -25 16 -23 15 -22 15 -21 16 -19 +15 -17 15 -17 16 -15 15 -14 15 -12 16 -12 15 -11 15 -10 +15 -9 16 -9 15 -7 15 -7 16 -7 15 -5 15 -5 16 -5 +15 -4 15 -4 15 -3 16 -4 15 -2 15 -3 16 -2 15 -2 +15 -2 16 -1 15 -1 15 -2 15 -1 16 -1 15 -1 15 0 +16 -1 15 0 15 -1 16 0 15 -1 15 0 16 0 15 -1 +15 0 15 0 16 0 15 0 15 0 16 0 15 -1 15 0 +16 0 15 0 15 0 15 0 16 0 15 0 15 0 16 0 +15 0 15 0 16 0 15 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 16 0 15 0 15 0 15 0 +16 0 15 0 15 0 16 0 15 0 15 0 16 0 15 0 +15 0 16 0 15 0 15 0 15 0 16 0 15 0 15 0 +16 0 15 0 15 0 1694 4612 100 MP stroke +16 0 15 0 15 0 1648 4612 4 MP stroke +0 -2703 4112 4612 2 MP stroke +0 -2703 3499 4612 2 MP stroke +0 -3823 3959 4612 2 MP stroke +SO + +gr +3463 3236 mt 3535 3236 L +3499 3200 mt 3499 3272 L +gs 898 388 5357 4225 MR c np + +gr +3923 3236 mt 3995 3236 L +3959 3200 mt 3959 3272 L +gs 898 388 5357 4225 MR c np + +gr +3923 789 mt 3995 789 L +3959 753 mt 3959 825 L +3923 753 mt 3995 825 L +3995 753 mt 3923 825 L +gs 898 388 5357 4225 MR c np + +gr +4076 2129 mt 4148 2201 L +4148 2129 mt 4076 2201 L +gs 898 388 5357 4225 MR c np + +gr +3923 2129 mt 3995 2201 L +3995 2129 mt 3923 2201 L +gs 898 388 5357 4225 MR c np + +gr +3423 5003 mt +(Xi) s +3867 5003 mt +(Xs) s +4050 5003 mt +(Xj) s + +end + +eplot +%%EndObject graph 1 + +epage +end + +showpage + +%%Trailer +%%EOF diff --git a/fig/apache-spark-integration.eps b/fig/apache-spark-integration.eps @@ -0,0 +1,1137 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: cairo 1.14.8 (http://cairographics.org) +%%CreationDate: Mon May 8 17:04:04 2017 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%BoundingBox: 0 -1 1332 1375 +%%EndComments +%%BeginProlog +save +50 dict begin +/q { gsave } bind def +/Q { grestore } bind def +/cm { 6 array astore concat } bind def +/w { setlinewidth } bind def +/J { setlinecap } bind def +/j { setlinejoin } bind def +/M { setmiterlimit } bind def +/d { setdash } bind def +/m { moveto } bind def +/l { lineto } bind def +/c { curveto } bind def +/h { closepath } bind def +/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto + 0 exch rlineto 0 rlineto closepath } bind def +/S { stroke } bind def +/f { fill } bind def +/f* { eofill } bind def +/n { newpath } bind def +/W { clip } bind def +/W* { eoclip } bind def +/BT { } bind def +/ET { } bind def +/pdfmark where { pop globaldict /?pdfmark /exec load put } + { globaldict begin /?pdfmark /pop load def /pdfmark + /cleartomark load def end } ifelse +/BDC { mark 3 1 roll /BDC pdfmark } bind def +/EMC { mark /EMC pdfmark } bind def +/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def +/Tj { show currentpoint cairo_store_point } bind def +/TJ { + { + dup + type /stringtype eq + { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse + } forall + currentpoint cairo_store_point +} bind def +/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore + cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def +/Tf { pop /cairo_font exch def /cairo_font_matrix where + { pop cairo_selectfont } if } bind def +/Td { matrix translate cairo_font_matrix matrix concatmatrix dup + /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point + /cairo_font where { pop cairo_selectfont } if } bind def +/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def + cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def +/g { setgray } bind def +/rg { setrgbcolor } bind def +/d1 { setcachedevice } bind def +%%EndProlog +%%BeginSetup +%%BeginResource: font DejaVuSansMono +11 dict begin +/FontType 42 def +/FontName /DejaVuSansMono def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 32 /space put +Encoding 40 /parenleft put +Encoding 41 /parenright put +Encoding 43 /plus put +Encoding 44 /comma put +Encoding 45 /hyphen put +Encoding 50 /two put +Encoding 58 /colon put +Encoding 60 /less put +Encoding 62 /greater put +Encoding 65 /A put +Encoding 66 /B put +Encoding 67 /C put +Encoding 68 /D put +Encoding 71 /G put +Encoding 72 /H put +Encoding 73 /I put +Encoding 76 /L put +Encoding 77 /M put +Encoding 79 /O put +Encoding 80 /P put +Encoding 82 /R put +Encoding 83 /S put +Encoding 84 /T put +Encoding 85 /U put +Encoding 86 /V put +Encoding 91 /bracketleft put +Encoding 93 /bracketright put +Encoding 95 /underscore put +Encoding 97 /a put +Encoding 98 /b put +Encoding 99 /c put +Encoding 100 /d put +Encoding 101 /e put +Encoding 102 /f put +Encoding 103 /g put +Encoding 104 /h put +Encoding 105 /i put +Encoding 107 /k put +Encoding 108 /l put +Encoding 109 /m put +Encoding 110 /n put +Encoding 111 /o put +Encoding 112 /p put +Encoding 113 /q put +Encoding 114 /r put +Encoding 115 /s put +Encoding 116 /t put +Encoding 117 /u put +Encoding 118 /v put +Encoding 119 /w put +Encoding 120 /x put +Encoding 121 /y put +Encoding 122 /z put +/CharStrings 55 dict dup begin +/.notdef 0 def +/A 1 def +/s 2 def +/c 3 def +/h 4 def +/e 5 def +/d 6 def +/u 7 def +/l 8 def +/r 9 def +/space 10 def +/a 11 def +/p 12 def +/S 13 def +/k 14 def +/less 15 def +/i 16 def +/n 17 def +/t 18 def +/f 19 def +/greater 20 def +/plus 21 def +/b 22 def +/m 23 def +/T 24 def +/parenleft 25 def +/colon 26 def +/parenright 27 def +/U 28 def +/D 29 def +/G 30 def +/g 31 def +/o 32 def +/P 33 def +/I 34 def +/O 35 def +/bracketleft 36 def +/bracketright 37 def +/M 38 def +/H 39 def +/comma 40 def +/B 41 def +/x 42 def +/R 43 def +/v 44 def +/y 45 def +/L 46 def +/q 47 def +/V 48 def +/two 49 def +/underscore 50 def +/hyphen 51 def +/C 52 def +/w 53 def +/z 54 def +end readonly def +/sfnts [ +<00010000000900800003001063767420e997070c00001db4000002306670676d5b026bdf0000 +1fe4000000ac676c7966bd2b06c10000009c00001d18686561640628bf020000209000000036 +6868656108b6023a000020c800000024686d747808e724d0000020ec000000dc6c6f63610003 +2e08000021c8000000e06d61787005dd0427000022a800000020707265703ac7c007000022c8 +0000071b00020068fe96046805a400030007001fbc00040114000000060114b6010805830204 +002fc4d4ec310010d4ecd4ec301311211125211121680400fc73031bfce5fe96070ef8f27206 +2900000000020025000004ac05d50002000a0098404100250100040504022505040725050406 +250505040925030a0825030a01250a030a0025020003030a420003079701b003880905090807 +06040302010009052f0a0b10dcec173931002f3ce4fcec1239304b5358071008ed071005ed07 +05ed0705ed071005ed0705ed0705ed071008ed5922b2070301015d401a0a000f008f008f0004 +03010b0204030c040907060886018902085d005d01032101330123032103230268d501aafeb1 +f501c9d16efdf56cd10523fd0403aefa2b0185fe7b00000100d5ffe30406047b002700754040 +0d0c020e0b171f1e080902070a171e1f1e421d1e180a0b1e1f0415008b01c004148b15c0188c +11048c25be1199281d0a0b1f1b07004f1b060e4907061422452810f4c4ecfcece41112393939 +39310010e4f4ec10fef5ee10f5ee121739111239304b535807100eed111739070eed11173959 +2201152e012322061514161f011e0115140623222627351e0133323635342f022e0135343633 +321603cd4fa0537d7b5cb74a898decd253b66a67bc547a86f508459f92daca5aa60439b42e2e +51534b4a230e1a9c7da6bb2323be353563598031020e1f937fa1af210000000100c3ffe30425 +047b0019002f401a0c8b0dc010008b19c0168c03108c09be03991a13120c0006461a10f4c432 +ec310010e4f4ec10fef4ee10f5ee30250e0123200011100021321617152e0123220615141633 +32363704254a9d52fefcfedb01250104519a4e49935dadbabbac609841392b2b013801140114 +01382a2cc1413ae0d0cfe13b3e00000100c30000041b06140013002c4018090e03000301068c +11be0c9b0a010206004a0d09060b461410f4ec32fcec31002f3cecf4ec111739393001112311 +34262322061511231133113e01333216041bb96a71818bb8b831a873aba902b6fd4a02b6978e +b7abfd870614fda46063e1000002007bffe30458047b0015001c00454026001603010a8b098d +0616b601068c0d01c1198c13be0d991d03021c1009160600491c1210481d10f4ecfcecc41112 +3939310010e4f4ece410ee10ee10f4ee123911393001152115141633323637150e0123200011 +1000333212072e01232206070458fce3bfae58c06d69c35bfefbfeda0120f0d6f7b804918885 +ac10025e5a06b7c83839b72b2b01390113010c0140fedec5a2a9b09c0002007bffe304120614 +0010001c0030401a0500141a8c0e148c08990ebe019b0317040006024711120b481d10f4ecfc +ec323231002fece4f4ec10ee113939300111331123350e012322021110123332160114163332 +36353426232206035ab8b82e9964cbe9eaca659afe0f8885858b8b85858803d10243f9ec8d53 +57013b01150111013757fe0bd6dadcd4d5dbda00000100c3ffe3041b045e0013002c4018090e +03000301068c11990a01c20c0d09060b4a020600461410f4ecfcec3231002fe432f4ec111739 +39301311331114163332363511331123350e01232226c3b86b70828ab9b931a971aca801a802 +b6fd4a978eb7ab0279fba2a86164e1000000000100a00000040a061f000d002640130900030a +b60cc503b60503060400060b4c090e10d4ecfccc393931002fecfcec113939300114163b0115 +2322263511213521027f5b59d7e9a5b5fed901df01967c7e9cd4c203f9900001016a00000483 +047b0011004f401306070b03001103970ebe09c2070a060600081210d4c4ec3231002fe4f4ec +d4cc113911393040251000100110112000200120113000300133103011400040014310401150 +00500150105011125d012e012322061511231133153e013332161704833b7a49acb6b9b92ebf +8344763603792e2ad8ccfdd30460db777f222400000000020085ffe30423047b000b0029006e +402a0a07001a200c180f0700b618078c12218b20bf1d8c24be1299180d011804190e0a060c44 +200406153e2a10f4ecc4fcec323211393931002fc4e4f4fcf4ec10ee10ee1139113912391112 +3930401d301f302030213022a000a001a002a00aa00ba216a017a018a019a01a0e5d01232206 +1514163332363735371123350e012322263534363b01352e0123220607353e01333216171e01 +02be3da1a37a6c98ae01b9b93bb380abccfbf3f70186935ec05b66bb588bc53d262002337170 +6570d3ba294cfd81a6645fc1a2bbc21d86793634b8272752523293000000000200befe560454 +047b0010001c0033401c0500141a8c0e148c08be0e9901c303c21d11120b471704000602461d +10f4ec3232fcec310010e4e4e4f4ec10ee113939302511231133153e01333212111002232226 +0134262322061514163332360177b9b92e9964cbe7e8ca669901f08785868a8a8685878dfdc9 +060a8f5357fec6feeafeeffec95701f5d6dadbd5d4dcda0000000001008bffe3044a05f00027 +0084403d0d0c020e0b251e1f1e080902070a251f1f1e420a0b1e1f040115b314a718971101b3 +00a7049725961199281e0a0b1f1b0700261b390e3114073922302810fcecc4fcece411123939 +3939310010e4f4ecf4ec10eef6ee111739304b535807100eed11173907100eed1117395922b2 +080201015d400a070007010702030702015d005d01152e012322061514161f011e0115140423 +222627351e013332363534262f012e0135342433321603f45cb95e8fa66d956ad2c0fef8fc69 +d46b73cd6899aa75916cd0bc010ddf56be05a2cd3b3c85716368231831d2b5d5e02d2dd74944 +897b707620192fbea0c8f127000100ec000004b20614000b00c5403a08170908050605071706 +060509170302081707080302051706050203020417030302420805020303c2009b0a06080504 +0306090106064400450c10f4ecec3211173931002f3cece41739304b5358071005ed071008ed +0708ed0704ed071005ed071008ed5922b2080701015d40520602080816021805180835023405 +360846026602750276050c0903080819031704180519061a0718082803270528073b033b0437 +05390737084a034907590659076b0369046906690779037805790679071c5d005d1333110133 +09012301071123ecbe01e3e0fe4701fee1fe6289be0614fc7b01d1fe5afd46024281fe3f0001 +0058008d0479047700060021401205040201000503ae06ad070102002804270710fcec323931 +0010f4ec1739300902150135010479fcae0352fbdf042103c1fec0fec3b701a2a601a2000002 +00b20000044406140009000d002e401908b6000cc40a9b00c20602b604034c0b0106054c004b +0a070e10d43ce4ecfc3cec31002fec32e4fcec10ee3001211121152135211121013315230100 +01d7016dfc6e016dfee1011fb8b80460fc2f8f8f03420243e900000100c30000041b047b0013 +002c4018090e03000301068c11be0cc20a010206004a0d09060b461410f4ec32fcec31002f3c +e4f4ec11173939300111231134262322061511231133153e01333216041bb96a71818bb8b831 +a873aba902b6fd4a02b6978eb7abfd870460a86063e100000001008300000408059e00130031 +40180e05080f03b6001101c208b60a080b090204000610120e1410d43cc4fc3cc43239393100 +2fecf43cc4ec321139393001112115211114163b0115232226351121352111026601a2fe5e5e +75cfe1cfaafed5012b059efec28ffda07c6293a6cb02608f013e000100c30000042706140013 +0034401a0510010c08b606018c009b0e06c20a021307000905060d0f0b1410d43cc4fc3cc432 +393931002fe432fcec10ee321239393001152322061d01211521112311213521353436330427 +d1634d0181fe7fb8fed5012ba9b30614995167638ffc2f03d18f4eb8ae00000000010058008d +0479047700060021401206050302000504ae01ad070602280400270710fc3cec39310010f4ec +17393013350115013501580421fbdf035203c1b6fe5ea6fe5eb7013d00010058007104790493 +000b0027401400a10901a005a107030c021a04001c081a0a060c10d43cecfc3cec310010d43c +ecfc3cec3001112115211123112135211102bc01bdfe43a8fe4401bc0493fe44aafe4401bcaa +01bc000200c1ffe304580614000b001c0030401a180c09038c0f098c15990fbe1b9b19001212 +47180c06061a461d10f4ec3232fcec31002fece4f4ec10ee1139393001342623220615141633 +3236013e01333212111002232226271523113303968885868a8a868588fde32c9b66cae8e9cb +64992eb8b8022fd6dadbd5d4dcda02785258fec9feeffeebfec557538d0614000001006d0000 +046f047b002200a3402718120f090407001d1b0607150c8c2003be1bc219100700110f084d06 +4e114d0f4e1c184d1a452310f44bb00c544bb011545b58b9001affc03859fc3cfcecfcec1112 +3931002f3c3ce4f43cec321139113939111739304047300430053006300730083009300a300b +3f163f173f183f193f1a3f1b3f1c3f1d3f1e8003800480058006800780088009800a800b8f16 +8f178f188f198f1a8f1b8f1c8f1d8f1e23015d013e0133321619012311342623220615112311 +34262322061511231133153e0133321602a422694a876fa83546503ba8394a4939a7a721633f +4c6503ee4845d1fedffd770281ed737be5fd7f0281f0707be5fd7f0460603c3f46000001002f +000004a205d50007001c400e060297008804013a031e003a050810d4ecfcec31002ff4ec3230 +13211521112311212f0473fe2dcbfe2b05d5aafad5052b000000000101aafef203750612000d +001f400f069c009b0e0d070003120600180a0e10d4ec32ec113939310010fcec300106021514 +121723260235341237037585838385a0979494970612e4fe3be6e5fe3ae6ee01c3e0df01c4ec +000201e9000002e5042700030007001b400d02a200ac04a20605011d04000810d43cec323100 +2fecf4ec30013311231133112301e9fcfcfcfc0427fed1fe39fecf0000000001015cfef20327 +0612000d001f400f079c009b0e07010b08001804120b0e10d4fcec32113939310010fcec3001 +33161215140207233612353402015ca097949497a08583830612ecfe3cdfe1fe3cece801c6e3 +e401c60000010093ffe3043d05d5001d002940170f0312000401099718991001881e0f1e1131 +021e00301e10fcecfcec310010e432f4ec11173930131133111416171e01333236373e013511 +33111406070e01232226272e0193cb0c0f2079565778210f0cca394642aa6a69aa43453a023d +0398fc0c6d5d193b3c3c3b195c6c03f6fc68e5c13f3b3a3a3b3ec50000000002008900000452 +05d500080011002840150697098800970f06000f090703320c31071e10301210fcecfcec1139 +39393931002fecf4ec3025203611102621231113200011100029011101b400ffcac9ff006064 +01560144febcfeaafed1a6fb0148014bfbfb77052ffe94fe80fe82fe9505d50000010066ffe3 +045005f0001d003c4021191a0016031a971c1697030db30cb21097099603991e1b191e0c0036 +133206351e10fcecfcc4fcc4310010e4f4ecf4ec10fed4ee111239113930250e012320001110 +0021321617152e012322021110123332363711233521045051cb76fee4fec40140011d5eac50 +51aa5fc5c5bfc6436529d9019a7b4b4d0197016f016e01993536cf4d49fecffecefec9fed51f +210191a600000002007bfe480412047b000b002900484027190c1e1b270903128b1316098c1e +168c0f038c24be1e0fc328c22a271900060c4706121221482a10f4c4ecfcec3232310010e4e4 +c4f4ec10ee10ee10d5ee11123939113939300134262322061514163332361314022322262735 +1e013332363d020e01232202111012333216173533035a8781878e8f887f87b8eee74ca65362 +a04395882c986dc4eaeac46c962fb80239cfd7d7cfcfd9dafeddfcfefc1c1bb62e2ca2b0087d +5e5c013a01070108013a565a9100000000020089ffe30448047b000b001700234013068c1200 +8c0cbe12991809120f440312153e1810f4ecfcec310010e4f4ec10ee30012206151416333236 +35342627321211100223220211101202688c90908c8d90908de9f7f6eae9f6f603dfdad6d5db +dbd5d6da9cfed2fee2fee1fed3012d011f011e012e00000200c50000047505d500080013002b +40180197100097098812100a0802040005320d3811001e09331410fcec32fcec11173931002f +f4ecd4ec30011133323635342623252132041514042b011123018fea8c9d9c8dfe4c01b4fa01 +02fefffbeaca052ffdcf94858593a6e3dbdde2fda8000000000100c90000040605d5000b0025 +40130a0297008808049706050137031e070037090c10d4ec32fcec3231002fec32f4ec323013 +2115211121152135211121c9033dfec70139fcc30139fec705d5aafb7faaaa04810000000002 +0075ffe3045c05f0000b00170023401309970f039715960f991800320c36063212351810fcec +fcec310010e4f4ec10ee30011002232202111012333212131002232202111012333212038987 +9a998787999a87d3f7fdfdf6f7fcfdf702e90149011afee6feb7feb8fee601190149fe7afe80 +017e018801870180fe800000000101cffef2037706140007001e400f04b606b702b600b50805 +01033d000810d4fcc432310010fcecf4ec30012115231133152101cf01a8f0f0fe5806148ff9 +fc8f00000001015afef2030206140007001e400f03b601b705b600b508003d0602040810d4c4 +32ec310010fcecf4ec3001112135331123350302fe58f0f00614f8de8f06048f000000010056 +0000047905d5000c0085402c08020302070303020a01020109020201420a07020300080300b4 +0b050908030201050a0606042f0a0600300d10fcecfcec11173931002f3cec32c4111739304b +5358071005c9071004c9071004c9071005c95922b20f0a01005d402405080a09170118031708 +1809260129032608290936013903360838090e0f070f070f0a035d015d132109012111231101 +2301112356010e01020104010fbbfef699fef5ba05d5fd0802f8fa2b0527fced0313fad90001 +00890000044805d5000b00264014089702b10400880a0607031e053109011e00300c10fcec32 +fcec3231002f3ce432fcec3013331121113311231121112389cb0229cbcbfdd7cb05d5fd9c02 +64fa2b02c7fd3900000000010193fee102f2012f00050018400b03a300a2060304011d000610 +d4ecd4cc310010fcec3001331503231301f6fcc59a63012fcffe81017f000000000300a60000 +047105d5000800110020003d40231900970a0997128801970ab11f110b191f13080205000e1e +1605321c3109001e12302110fcec32fcecd4ec111739393931002fececf4ec10ee3930011133 +32363534262303113332363534262325213216151406071e0115140429010171efb0969ea8ef +eb92838194fe4a01bae5f8838393a7fef6fef9fe4602c9fddd7b8d92890266fe3e707d7164a6 +c6b5899e1416cfa0cbcf0001004c000004850460000b00a94048051706070604170304070706 +0417050401020103170202010b170001000a17090a0101000a170b0a0708070917080807420a +070401040800c205020a07040104080002490806450c10f4c4fcc411173931002f3ce4321739 +304b5358071005ed071008ed071008ed071005ed071005ed071008ed071008ed071005ed5922 +b2070a01005d401e0901060766016907760179070607010707060a150a3a04340a5a04560a08 +5d015d0902230901230901330901045efe6f01b8d5feb8feb9d501b8fe6fcc012901270460fd +e8fdb801c1fe3f02480218fe6b01950000000002008f000004d105d50013001c006a40380908 +07030a062503040305250404034206040015030415970914970d880b040511160906030a0311 +001c0e030a1932041131140a1e0c301d10fcec32fcc4ec1117391139111739113931002f3cf4 +ecd4ec123912391239304b5358071005ed07100eed1117395922011e01171323032e012b0111 +231121320415140601113332363534262302f84e6e52cbd9b24d7b63c1cb01a0f60106a1fdd0 +dd918e979002c1146fa6fe680179a15dfd8905d5ded294bb0259fdee82868189000100640000 +046d046000060065402903170405040217010205050402170302060006011700000642020300 +c205060503020105044900450710f4ec173931002fe43239304b5358071005ed071008ed0710 +08ed071005ed5922b2270201005d400e07000701080308040405022502025d015d1333090133 +012364bf01450146bffe72ed0460fc5403acfba000010068fe5604810460001200a040450d17 +0e0d0203020a0b02090c17030302111712001210170f10000012101711100d0e0d0f170e0e0d +4210130d000e098c07c3110ec21311100f0d0a070007120812490e451310f4ecc41117393100 +10e432f4ec1139391239304b5358071005ed071008ed071008ed071005ed071005ed11173907 +1008ed5922b2381201015d401a041076100208110812190c190d260e260f381149114912590d +0a5d005d01060702070e012b0135333236370133090133035a2e4763222e8a5c946d515c47fe +4fc3014c0147c3016875bffef83a4e4e9a5ec4044efc94036c000000000100d70000047305d5 +00050018400c0297008804011e033100340610fcecec31002fe4ec30133311211521d7cb02d1 +fc6405d5fad5aa0000020089fe52041f0477000b001c0033401c180c09038c0f098c15be0f99 +1bc319c21d180c06061a470012123e1d10f4ecfcec3232310010e4e4e4f4ec10ee1139393001 +1416333236353426232206010e012322021110123332161735331123014c8785858989858587 +021a2d9965c9e9e8ca64992eb9b9022bd6dadbd5d5dbdafd8a5359013701110116013a57538f +f9f60000000100390000049805d50006004c4029012502030200250600030302002501000405 +04062505050442000501b403060403010005022f05300710fcec173931002fec3239304b5358 +071005ed071008ed071008ed071005ed5922250133012301330268015fd1fe4bf5fe4bd1aa05 +2bfa2b05d500000100980000042305f0001c00514029001c2505060518191a03171b25060605 +421011a70d9714960400970200100a02010a1e17221003241d10fcc4fcecc0c011123931002f +ec32f4ecf4cc304b5358071005ed111739071005ed1732592225211521353600373e01353426 +23220607353e01333204151406070e01017502aefc75bb011835644693805bc87067c761db01 +0b596438d5aaaaaac5012e3e7a974f7d8e4243cc3132e9bd60c07441e60000010000fe1d04d1 +fe6d0003000fb500b8010400022fcc310010d4ec300115213504d1fb2ffe6d50500000000001 +016401df036d028300030011b600a0020401000410d4c4310010d4ec300121152101640209fd +f70283a40001008bffe3043105f00019002e401a19b300b21697030db30cb21097099603991a +13320c003106301a10fcec32ec310010e4f4ecf4ec10eef6ee30250e01232000111000213216 +17152e012322021110123332363704314da25bfee1fec3013f011d5ba24d4aaa56c5c4c4c558 +a94935292901960170016e01992929cf3d40fed0fecdfecefed0403d000000010000000004d1 +0460000c011140450b0203020a090a0303020a0b0a0405040905050406170708070517040508 +0807021703020c000c0117000c420a05020308030600c20b080c0b0a09080605040302010b07 +002fcc173931002f3cf43cc4111739304b53580705ed071008ed071008ed071005ed071005c9 +071008c9071008c9071005c95922b20f0a01005d408c0b09040b1f001f011d021a031c041905 +1c091b0a1a0b1f0c26002601290226052906290723082c0c390236053906390733083c0c4508 +4909460b4a0c56085809570b590c66026903660469056a09650b76027a0578087c09720b2d0f +0a19021f031f0419051f0a1f0a2b022b053e023e053c0a480a590a6a026905680a7b027f0379 +047f047a057c0a7f0a185d015d11331b01331b013301230b0123b6c3a09da2c3b6fefab0b3b2 +b00460fc770242fdbe0389fba00266fd9a000000000100cb00000410046200090058401c0317 +07080708170203024208b600c203b6050803000401490006450a10f4c4ec3211393931002fec +f4ec304b5358071005ed071005ed5922b2380801015d40153603380845034a08570358086503 +6a0875037a080a5d13211501211521350121e3032dfd7d0283fcbb0283fd950462a8fcdc96aa +0325000000b800cb00b800cb00aa019100b80066000000b80087027f00020002000200020002 +00b800c300cb000200cb00b800b801cb018901ba00cb00a600fc00cb008300f2010a03c70137 +008300be00000058042100cb008f009c00020002008f03e7007503bc00d300c900db007503e7 +013903ba00cb01d3002101df00b800890002000200020002000203be008900c303be007b03be +0358011f016d00a401ae0000007b00b8016f007f027b00b80252008f00cd04d1000000cd0087 +0087009300a4006f00cd00cb00b80083019100dd00b4008b00f4009802e9005a00b400ba00c5 +042100fe000e00020002000201d500f6007f02aa023d0266008b00c5008f009a009a018300d5 +00730400010a00fe00e105d5022b00a400b4009c00000062009c05d505980087027f05d505d5 +05f000a40000001d06b80614072301d300b800cb00a601bc0131024e00d3010a007b0054035c +037103db01850423047703e9008f02000360006a00cf05d50614008f0723008f066601790460 +04600460047b0000007b0277046001aa00e90614076203f8007b022100c5009c007f027b0000 +00b40252054e054e04d10066009c009c0066009c008f0066009c008f061000cd03fa00830091 +02fe01480446033f008f007b044c009800a200000027006f0000006f0335006a006f007b058d +058d058d058d00aa00aa002d058d0396027b00f6007f02aa0133023d009c0266018b008f02f6 +00cd006f034400370066001d05ee008501b406140000077d007305d500001400b70706050403 +0201002c2010b002254964b040515820c859212d2cb002254964b040515820c859212d2c2010 +0720b00050b00d7920b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920 +b8ffff5058041b0559b0051cb0032508e12d2c4b505820b80117454459212d2cb00225456044 +2d2c4b5358b00225b0022545445921212d2c45442d2cb00225b0022549b00525b005254960b0 +206368208a108a233a8a10653a2d0001000000025999486c08e85f0f3cf5001f080000000000 +d2d80d9800000000d2d80d98fb88fd0105be083a00000008000000010000000000010000076d +fe1d000004d1fb88ff1405be00010000000000000000000000000000003704d1006804d10025 +04d100d504d100c304d100c304d1007b04d1007b04d100c304d100a004d1016a04d1000004d1 +008504d100be04d1008b04d100ec04d1005804d100b204d100c304d1008304d100c304d10058 +04d1005804d100c104d1006d04d1002f04d101aa04d101e904d1015c04d1009304d1008904d1 +006604d1007b04d1008904d100c504d100c904d1007504d101cf04d1015a04d1005604d10089 +04d1019304d100a604d1004c04d1008f04d1006404d1006804d100d704d1008904d1003904d1 +009804d1000004d1016404d1008b04d1000004d100cb000000000000004c0000011c00000208 +0000029000000300000003a800000438000004a80000050000000590000005900000067c0000 +07100000080c0000090800000954000009bc00000a2c00000aa000000b1800000b6000000bb8 +00000c4800000d5400000d9800000df000000e3400000e8c00000f1800000f8c000010300000 +10f800001170000011e40000123c000012bc0000130000001344000014040000145c00001498 +000015400000162c000016f80000178400001870000018a80000193c000019b000001a600000 +1a8c00001ab800001b4400001c9000001d18000100000037020c002b006b0006000200100099 +000800000557011100050004b902800115b2945d05411c011500960003011500800004011400 +fe0003011300fe0003011200120003011100fe0003011000fe0003010f009a0003010e00fe00 +03010db2eb47054125010d007d0003010c00250003010b00320003010a00960003010900fe00 +030108000e0003010700fe0003010600250003010500fe00030104000e000301030025000301 +0200fe000301014059fe03fefe03fd7d03fcfe03fbfe03fa3203f9bb03f87d03f7f68c05f7fe +03f7c004f6f55905f68c03f68004f5f42605f55903f54004f42603f3f22f05f3fa03f22f03f1 +fe03f0fe03ef3203ee1403ed9603eceb4705ecfe03ecb8ffd140ff04eb4703eae96405ea9603 +e96403e8fe03e7e61b05e7fe03e61b03e5fe03e46b03e3fe03e2bb03e1e01905e1fa03e01903 +df9603defe03ddfe03dcdb1505dcfe03db1503da9603d9d81505d9fe03d88d0b05d81503d77d +03d63a03d58d0b05d53a03d4fe03d3d20a05d3fe03d20a03d1fe03d0fe03cf8a1105cf1c03ce +1603cdfe03cc9603cb8b2505cbfe03cafe03c97d03c8fe03c7fe03c6fe03c59a0d05c4fe03c3 +fe03c2fe03c1fe03c08d0b05c01403bf0c03bebdbb05befe03bdbc5d05bdbb03bd8004bcbb25 +05bc5d03bc4004bb2503bafe03b99603b88f4105b7fe03b68f4105b6fa03b59a0d05b4fe03b3 +6403b26403b10e03b01203affe03aefe40fd03adfe03acfe03ab1203aafe03a9a80e05a93203 +a80e03a7a61105a72803a61103a5a42d05a57d03a42d03a3fe03a2fe03a1fe03a09f1905a064 +039f9e10059f19039e10039d0a039cfe039b9a0d059bfe039a0d0399982e0599fe03982e0397 +8f41059796039695bb0596fe0395945d0595bb0395800494902505945d0394400493fe0392fe +039190250591bb039025038f8b25058f41038e8d0b058e14038d0b038c8b25058c64038b8a11 +058b25038a110389fe0388fe0387fe038685110586fe0385110384fe0383fe03821142058253 +0381fe038078037f7e7d057ffe037e7d037d1e037cfe037b0e037afe0377fe0376fe0375740c +05750f0375b8010040da04740c0374c00473120373400472fe0371fe0370fe036f6e53056f96 +036e6d28056e53036d28036cfe036b32036afe0369320368fa0367bb0366fe0365fe0364fe03 +63621e0563fe0362001005621e0361fe0360fe035ffe035e5a0b055e0e035d64035cc8035b5a +0b055b14035a0b0359fe0358140357fe0356fe03551b190555320354fe0353fe0352fe03517d +0350fe034f14034efe034d012d054dfe034cbb034b28034a4918054a37034943120549180348 +45180548fe03474312054764034645180546bb03451803444312054437034342110543120343 +b8024040090442410f0542110342b8020040090441400e05410f0341b801c0400904403f0c05 +400e0340b801804009043f0c09053f0c033fb801404064043efe033d012d053dfa033cfe033b +28033afe033911420539640338311a05384b0337fe03362d140536fe03354b0334301a05344b +0333301a0533fe033211420532fe03312d1405311a03301a032f2d14052f18032e0916052ebb +032d2c13052d14032db802804009042c1011052c13032cb802404096042b2a25052bfe032a09 +16052a250329023a0529fe0328fe0327fe03260f0325164205254503240f0323fe03220f0f05 +22fe0321202d05217d03202d031f4b031e1142051efe031dfe031c1b19051cfe031b0010051b +19031afe0319fe0318fe031716420517460316152d0516420315141005152d03141003130010 +051314031211420512fe0311012d05114203100f0f0510110310b802004009040f0e0c050f0f +030fb801c04009040e0d0a050e0c030eb801804009040d0c09050d0a030db80140b4040c0903 +0cb801004037040bfe030a0916050afe0309160308100307fe0306012d0506fe030514030302 +3a0503fa0302012d05023a0301001005012d0300100301b80164858d012b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b1d0000> +] def +/f-0-0 currentdict end definefont pop +%%EndResource +%%BeginResource: font DejaVuSans-Bold +11 dict begin +/FontType 42 def +/FontName /DejaVuSans-Bold def +/PaintType 0 def +/FontMatrix [ 1 0 0 1 0 0 ] def +/FontBBox [ 0 0 0 0 ] def +/Encoding 256 array def +0 1 255 { Encoding exch /.notdef put } for +Encoding 65 /A put +Encoding 66 /B put +Encoding 67 /C put +Encoding 68 /D put +Encoding 69 /E put +Encoding 71 /G put +Encoding 75 /K put +Encoding 77 /M put +Encoding 83 /S put +Encoding 84 /T put +Encoding 97 /a put +Encoding 99 /c put +Encoding 100 /d put +Encoding 101 /e put +Encoding 103 /g put +Encoding 104 /h put +Encoding 107 /k put +Encoding 108 /l put +Encoding 110 /n put +Encoding 114 /r put +Encoding 115 /s put +Encoding 116 /t put +Encoding 117 /u put +Encoding 120 /x put +/CharStrings 25 dict dup begin +/.notdef 0 def +/T 1 def +/a 2 def +/s 3 def +/k 4 def +/S 5 def +/c 6 def +/h 7 def +/e 8 def +/d 9 def +/u 10 def +/l 11 def +/r 12 def +/B 13 def +/n 14 def +/A 15 def +/C 16 def +/t 17 def +/M 18 def +/g 19 def +/D 20 def +/G 21 def +/K 22 def +/E 23 def +/x 24 def +end readonly def +/sfnts [ +<000100000009008000030010637674203eb9310800001300000002546670676d5b026bf00000 +1554000000ac676c79669fba39420000009c00001264686561640c22bfd80000160000000036 +686865610eaf078a0000163800000024686d747888df0be50000165c000000646c6f63610000 +e594000016c0000000686d617870065e062d0000172800000020707265707c61a2e700001748 +000007a700020066fe96046605a400030007001fbc00040126000000060126b6010805890204 +002fc4d4ec310010d4ecd4ec301311211125211121660400fc73031bfce5fe96070ef8f27206 +290000000001000a0000056a05d500070033400e0602c0008d04013803160038050810d44bb0 +0a544bb00e545b58b9000500403859ecfcec31002ff4ec323001b24009015d13211121112111 +210a0560fe11fe7ffe1005d5feddfb4e04b2000000020058ffe304c5047b000a0025009d402a +090600191f0b00d217cf069f0ed01120cc1fcb1c9f23ca11980c00231703180d090d0b3d1f03 +0d143b2610fcecc4f4ec32321139393931002fe4f4fcf4ec10e6eef6ee39123911123930404c +2f273d203d213f274d204d215d205d216e206e217e207e2170278c208c219d209d21ad20ad21 +bd20bd2115321e301f431e401f531e501f631e601f851e801f931e901fa21ea01fb21eb01f10 +5d015d0122061514163332363d01251121350e01232226353424213335342623220607113e01 +33200402a270715b51658a0169fe9748b481aed9010f0122d3868e73c65573e874012f010d01 +f84c4a444d916d2987fd81a6665dcba2c5b81c554f2e2e01111c1def00000001006affe30462 +047b002700dc40400d0c020e0b361e1f1e050607080905040a361f1f1e250a0b1e1f041500cc +01d40414cc15d4189f11049f25ca1198281e0a0b1f1b0700531b520e140750224d2810fcecc4 +d4ece4111239393939310010e4f4ec10fef5ee10f5ee121739304b535807100eed1117390710 +0eed1117395922b2080b01015d405e0909090a090b0b0c0b0d090f05231a0c1a0d1a0e180f2c +082e092e0a2e0b2e0c2e0d292039083b093b0a3b0b3a0c3a0d4b094a0a4a0b4a0c480d770c77 +0dba08ba09ba0aba0bba0cba0d250e060e070e080e090e0a0d0b370d3f295f29095d005d0111 +2e012322061514161f01041615140421222627111e013332363534262f012e01353436333216 +041773d65f66634b613f0113befef8fefa6fed7d6be174696a496d3fefc0f4fc63da043dfef0 +303033352b2e0b0923a0abb3b42323011034343a39302f0d081ea2a5b2ac1e00000100ac0000 +05790614000a008c40140805020303b300a309060501040608010d00100b10fcec32d4c41139 +31002f3cece4173930406019031904190519063b07490349075a035d0658075f076f0367057f +03760476067b078803850487058b079f03950596069b07b9031a160216053a08440247054a08 +56025d086702600265057702700276057c08870288058b08920297059b08155d015d13211101 +21090121011121ac0166019c01a0fddd024efe4efe4bfe9a0614fcb1019bfdfefda201d3fe2d +00010093ffe3052d05f0002700a7402a0025041418110a0b1e1f041501c30415c318ae1104ae +259c1198281e0a0b1f1b07001b190e140719222810dcecc4d4ecc4111239393939310010e4f4 +ec10fee510e5111739111239111239304054702901391d391e391f39204a1e4a1f4a20580a5d +1d5c1e5e1f5e205a216a1c6f1d6f1e6f1f68206f206e21740b740c740d7c1f7c207c21960b97 +0c9b1e9a1f9c209a21a60ba60ca60daa1daa1eaa1faa20aa21285d015d01112e012322061514 +161f011e01151404212224271116043332363534262f012e0135342421320404cb7bea688a84 +5975a4f9d2fedbfed38efee28f8f010b7c7e865b8895e0cf0120010e7b010405a6fec437384c +503c43182132ccbcf7f1363501454c4d544e464c1e2130d2b2dff025000000010058ffe30435 +047b00190037401a00cc01d4040ecc0dd40aa11104a117ca11981a07420d00143b1a10fcc432 +ec310010e4f4ec10fef4ee10f5ee30b45f1b7f1b02015d01112e012322061514163332363711 +0e01232000111000213216043549934f96a7a79654974054ad57fed1feaa0156012f58ab043d +fedc3230af9d9daf3231fedb1f1f01370115011501371f000000000100ac0000051206140017 +003540180d0400010adb12d015ca10a30e01020d0047110d0d0f101810fcec32f4ec31002f3c +ecf4e4ec1139393930b46019801902015d01112135113426272e012322061511211121113e01 +3332160512fe980d1015482e7080fe9a016651b66ec2c902aafd566f0199936e1a2327ad99fd +d90614fda8625dee000000020058ffe3050a047b0014001b004340210015d80109cc08d4059f +0c01d7189f12ca0c981c1b150208150d0044020d0f3b1c10fcecf4ecc4111239310010e4f4ec +e410fef4ee10ee3930b42f1d3f1d02015d0115211e0133323637110e01232000111000212000 +05342623220607050afcbb0d9c8c71ed7d7ffe7ffed0feaf014b01220108013dfe9077606882 +100233667e7e4344feec3031013501170112013afec293667d756e0000000002005cffe3050e +06140010001c0038401b17a100d00e11a105d008980eca01a3031404000d02401a420b3b1d10 +fcecf4ec323231002fece4f4e4ec10e4ee30b44f1e601e02015d0111211121350e0123220011 +100033321603323635342623220615141603a60168fe984ab275cffef6010acf74b3a2737979 +7372797903bc0258f9eca2635c01490103010301495dfcc9a8a0a0a8a8a0a0a80000000100a0 +ffe3050604600019003b401b0f0300010cdb14d017981001b312060200130f0d1147020d0010 +1a10fcecf4ec3211123931002fe432f4e4ec1139393930b4601b801b02015d13112115140215 +1416171e013332363511211121350e01232226a00168020e1116472e70800166fe9a51b56dc2 +cb01b402ac705bfeed2e87771b2326ac990229fba0a2625dee00000100ac0000021206140003 +001eb700a302010d00100410fcec31002fec304009500560057005800504015d13211121ac01 +66fe9a0614f9ec000000000100ac000003ec047b001100374016110e0906070003c00b940eca +09b3070a060d0008101210fc4bb0135458b90008ffc03859c4ec3231002fe4f4e4fcc4113911 +123930012e012322061511211121153e013332161703ec2f5d2f8a95fe9a016645b37d122a28 +032f1615b1a5fdfc0460b86e65030500000300bc0000058905d5000800110020005040251200 +b90fbe06b91a8d09b91806000703121e0c0f09181b040703161e0c161510071619032110fcec +32d4ecd4ec1117391112391112393931002fecf4ecf4ec39304009002210222f22502204015d +0132363534262b01111332363534262b0111011e0115140429011121200415140603125b5e5e +5bd5e274757475e202487c88fedcfed6fd81024201370117660393504e4d51fec4fd73626361 +61fe79021924c28dd8d405d5bccf6d990000000100ac00000512047b0017003540180d040001 +0adb12d015ca10b30e01020d0047110d0d0f101810fcec32f4ec31002f3ce4f4e4ec11393939 +30b46019801902015d01112135113426272e012322061511211121153e013332160512fe980d +1015482e7080fe9a016651b66ec2c902aafd566f019b916e1a2327ad99fdd90460a4625dee00 +00000002000a0000062705d50007000a00fe4040001d0605071d0606050a1d080a050605091d +060605021d0403011d0403081d0304030a1d090a040403250a0400ae08048d06020a09080705 +040201000906030b10d4b21f03015dc4173931002f3ce4d4ec1239304b5358071008ed071005 +ed0705ed0705ed071005ed071008ed071005ed0705ed5922014080180a2f0a560a660a7f007f +017f087f09740a8a0a9f0abf0abf0acf0acf0adf0a1012081c091f0c25082a09200c49044605 +4708480958035904560557066803690466056706600c74007b017a0475057b08740989048605 +860889099904960595089a09b608b909cb00c501c502cb07c208cd09d900d601d602d907d508 +da092f5d005d01210321012101210121030446fda65ffe7d022901cb0229fe7dfda80199cc01 +10fef005d5fa2b0225025200000000010066ffe3055c05f00019003b401a0c10090016030d10 +1916ae0310ae099c03981a132d0c00062b1a10fcc432ec310010e4f4ec10fec410c511123911 +123930b42f1b5f1b02015d250e0123200011100021321617112e012322021514123332363705 +5c6ae67dfe8bfe4c01b401757de66a6bd073ceececce73d06b52373801a10165016601a13837 +fecb4944fef8e8e7fef8444900000001001b000003a4059e0013006d401a0e05080f03a11101 +b308a1000a080b09020904000d10120e541410fc4bb00f544bb010545b4bb011545b4bb01254 +5b58b9000e004038593cc4fc3cc4c412393931002fc4ecf43cec32113939300140183f003f13 +02000200030f100f1150025003501560026003095d005d01112111211114163b011121222635 +112311331102330171fe8f3e5cb8fecdd4b1b2b2059efec2ff00fe254e37ff00b1d401db0100 +013e0000000100bc0000073905d5000c00ce403303360708070236010208080702360302090a +0901360a0a09250a07020300080300c10b050908030201050a0631040a3100030d10fcecd4ec +11173931002f3cec32c4111739304b5358071005ed071008ed071008ed071005ed5922b20f03 +01015d406609020f080f091f0215071f081f09150a2b023f0248024f024c074c0a5702590759 +0a68026f076f0a950290089009a902b007b00a1a04010403000e16011903100e2a0125033a01 +35034f014003470856085909500e6801670365086a09600e85088a099708185d005d13210901 +211121110123011121bc01ea0154015601e9fe94fea8f4fea8fe9305d5fce1031ffa2b0444fc +db0325fbbc000002005cfe46050e0479001c0028004b40261c0f030015cc16d4199f121da10c +d009ca0db323a112da00d003260c000d0e40152042063b2910fcecc4f4ec323231002fe4e4ec +e4f4e4ec10fef5ee1112393930b44f2a602a02015d250e012322003534003332161735211110 +0021222627111e013332363503220615141633323635342603a64ab275cdfef4010ccd75b24a +0168feabfebc69c4635eb45bb0a4ec6f7c7873707c7cbe625c0143fafb01415c63a6fc11fef2 +fee32021011736359aa40306a4969a9fa49596a4000200bc0000063905d500080017002e4015 +00c0098d01c0160802160a00052d102e001609031810fcecfcec113939393931002fecf4ec30 +b2501901015d011133323635342623012120041716121514020706042901023d8aecf9f8edfd +f501960154014d776966666978feb0feb0fe6a04b2fc71eadfdee80123617465fef8a7a9fef7 +6574610000010066ffe305fa05f0001d004b4025191a160c10090016030d101ab91c16ae0310 +ae099c03981c1e1b19310c33002f132d062b1e10fcecf4e4fcc4310010c4e4f4ec10ee10ee10 +c511123911123911123930b25f1f01015d25060423200011100021320417112e012322021514 +12333236371123112105fa90fecaa5fe8bfe4c01bc0182950111797df77ce6f9f0dd3c6729eb +02586f464601a101650169019e3837fecb4746feffefedfefe0f100122010200000100bc0000 +067105d5000a00814013080502030300c109060501040608011600030b10fcec32d4c4113931 +002f3cec32173930405616051606100c3c033b074c034b075b0358055d076f03670567066006 +6807600c7f0378077f07700c85048606aa0717270232023b0842024b085402590558085f0860 +0266056d08700278057b087f088a058d08ab08135d015d1321110121090121011121bc018102 +2b01bffd310319fe1efdaefe7f05d5fddf0221fd3dfcee024cfdb4000000000100bc000004e1 +05d5000b0030401404c006be02c0008d08c00a01050907031600030c10fcec32d4c4c431002f +ecf4ecf4ec30b6100d500d700d03015d132111211121112111211121bc040ffd720267fd9902 +a4fbdb05d5feddfeeafeddfeaafedd000001001f0000050a0460000b017940460a1d0b000b09 +1d080900000b091d0a09060706081d070706041d050605031d0203060605031d040300010002 +1d0101002509060300040401df0a070906030004010507010b0c10d44bb00a544bb00f545b4b +b012545b4bb014545b58b9000b00403859c4d4c411173931002f3cec321739304b5358071005 +ed071008ed071008ed071005ed071005ed071008ed071008ed071005ed59220140da00030f09 +10031f0920032f0933033c0943034c0952035c0962036c0973037a09810380038d098f099700 +9003900397069c099f09a003af09b003b003b003bf09bf09bf09c003c003cf09cf09d003d003 +df09df09e003e003ef09ef09f700f003f706ff093203020c040c08030a13021c041c08130a1f +0d24022b042b08240a34023b043b08340a300d44024b044b08440a6f0d860080028f0489068f +08800a970095029a0499069a08960aa706b002bf04bf08b00ac002cf04cf08c00ad700d002df +04d806df08d00ae700e002ef04e806ef08e00af900f6063a5d005d0901211b01210901210b01 +2101c7fe6c017be5e8017bfe6c01a8fe85fcf9fe85023d0223feb4014cfddffdc10162fe9e00 +01660133016600bc00e90000013d00a200fa031f00020002006601660002000200ac015400ec +00bc006201660181048501540166016d04a400020166007f04cd000000020133006200710000 +002504a401bc00ba00e500660181018d0548055a0166016d000000000002000200f605c301f0 +053902390058046d043d04b2048104b2016601750466048100b00466043902d1049c047b04cf +047b005801330166014c0166014c000200ac009a014a0123009a029a01440119014402cd00c1 +00000166013f019a013b05cb05cb00d500d5015000ac00ac0077020a01c701f2012f015801b2 +012300f600f6011f012f0135023501ee01e70133009800d10358050a009a008f0112009800bc +00cd00e500e500f2007304000166008f05d5022b05d500c300e100d700e50000006a01020000 +001d032d05d505d505f000a8006a00ec00e1010205d506140721046602f800ec018302a602f8 +0123010201020112011f031f005e03cd046004c7048900ec01bc00ba01020333031f03420333 +035c0112011f05d5019a009a00e106660179046004600460047b000000ec02c302b802cd00be +00dd00d50000006a025c027b029a00dd01ae01ba01120000008501ae04600762041b009a069a +045800ee009a029a00d102cd019a015005cb05cb008b008b063100f6040600f0034c016004a8 +00c10000002505c101000121074a06120096014a078300a800000337007b0014000000c90100 +05c105c105c105c101000108061d00960427039e00ec0102027d0133009800d10358017900cd +02390362009c009c009c009301b8009300b80073000014000326b707060504030201002c2010 +b002254964b040515820c859212d2cb002254964b040515820c859212d2c20100720b00050b0 +0d7920b8ffff5058041b0559b0051cb0032508b0042523e120b00050b00d7920b8ffff505804 +1b0559b0051cb0032508e12d2c4b505820b80128454459212d2cb002254560442d2c4b5358b0 +0225b0022545445921212d2c45442d2cb00225b0022549b00525b005254960b0206368208a10 +8a233a8a10653a2d00010000000259993d029e625f0f3cf5001f080000000000d2d80d960000 +0000d2d80d96f772fcae0fcd096700010008000000010000000000010000076dfe1d00001021 +f772f9320fcd00010000000000000000000000000000001904cd00660575000a0566005804c3 +006a055200ac05c3009304be005805b200ac056d005805ba005c05b200a002be00ac03f200ac +061900bc05b200ac0631000a05df006603d3001b07f600bc05ba005c06a400bc069100660633 +00bc057700bc0529001f000000000000004c000000a8000001bc00000314000003d800000500 +000005940000061c000006c800000764000007f400000830000008a800000968000009f00000 +0b2c00000bc400000c7800000d8400000e5000000ed800000f8c00001048000010ac00001264 +000100000019034e002b0078000c0002001000400008000005ed022100080004418402800126 +00fe000301250011000301240121003a0005012400fa000301230016000301220121003a0005 +012200fe00030121003a0003012000fa0003011f00bb0003011e00640003011d00fe0003011c +00190003011b001e0003011a00fe0003011900fe0003011800fe0003011700fe0003011600fe +000301150114000e0005011500fe00030114000e0003011300fe0003011200fe0003010f010e +007d0005010f00fe0003010e007d0003010d010c008c0005010d00fe0003010d00c00004010c +010b00590005010c008c0003010c00800004010b010a00260005010b00590003010b00400004 +010a00260003010900fe0003010800fe00030107000c00030107008000040106b2972e054113 +010600fa0003010500fa0003010400fe0003010300190003010200fa0003010100fa00030100 +40ff7d03ff3e03fefe03fcfb2c05fcfe03fb2c03fafe03f9f84705f97d03f84703f7fa03f6fe +03f5fe03f4fe03f3bb03f2fe03f1fe03f0fe03ef1e03eefe03edec0a05edfe03ec0a03ec4004 +ebea0a05eb3203ea0a03e9fa03e8911605e8fe03e7fa03e6fa03e5911605e5fe03e4fe03e3fe +03e2fe03e1fe03e0fe03dffe03defa03dddc1805dd6403dc1803dba01e05db6403dad92505da +fa03d92503d8d12505d8fa03d7d61405d71603d6d51005d61403d51003d4d30b05d42003d30b +03d2d12505d2fa03d1911605d12503d0940c05d02303cfce1405cf2603cecd1205ce1403cd12 +03cc911605cc1d03cb1403cac9bb05cafe03c9c85d05c9bb03c98004c840ffc72505c85d03c8 +4004c72503c6fe03c56403c4901005c4fe03c31c03c2fe03c1fe03c0bf3a05c0fa03bfad1b05 +bf3a03bebd1a05be3203bdbc1105bd1a03bcbb0f05bc1103bbba0c05bb0f03ba0c03b9911605 +b9fe03b8fe03b71503b61203b5fe03b4fe03b3fe03b21703b11903b01603afad1b05affa03ae +ad1b05aefa03ad911605ad1b03ac911605ac7d03abfe03aa2603a9fe03a8fe03a7fe03a6fe03 +a50a03a4fe03a3a20e05a3fe03a20e03a24004a1a01e05a1fa03a0911605a01e039f9116059f +fa039e940c059e1c039dfe039c9bbb059cfe039b9a5d059bbb039b80049a8f25059a5d039a40 +0499fe0398972e0598fe03972e0396911605961e40ff0395940c05952003940c039391160593 +4b039291160592fe03919010059116039010038f25038efe038dfe038cfe038bfe038afe0389 +fe038887250588fe0387250386fe0385fe0384320383960382fe0381fe038019037f0a037efe +037dfe037cfe037bfa037afa0379fe037776a60577fe0376a60375741b0575fa03741b0373fa +03727d0371fe03706f2c056f2c036efa036dfa036cfa036bfe036afe0369fe0368630c056832 +0367fe0366320365640a0565fe03640a0364400463620a05630c03620a036160150561960360 +0111056015035f0a035efe035dfe035c0111055cfe035b5a1b055bfe035a0111055a1b0359fe +0358fa0357fe035601110540ff56fe0355fe03541e035314035251190552fa03510111055119 +03504f190550fa034f4e11054f19034e11034d1e034c4b14054c15034b4a11054b14034a490e +054a1103490e0348fa034746140547150346140345fa0344430e05440f03430e034241250542 +fa0341011105412503403f0f0540fe033f3e0e053f0f033e0e033d3c0d053d16033c0d033b64 +033afe0339140338fe0337130336351a0536250335341405351a0335c004340a0d0534140334 +800433320c05331403334004320c033130a60531fe033001110530a6032f0c032e13032d2c3a +052dfa032c1525052c3a032b64032a640329fe0328150327171105271e03262003251e032423 +1105402b241e0323110322000d0522fa03210f032140042014031f0a031e1e031d1c19051d25 +031c0f13051c19031cb801004091041b0d031a194b051a7d0319011105194b0318fe03171103 +1615250516fa031501110515250314640313110312fe031101110511fe031064030f0e10050f +13030fc0040e10030e80040d0111050dfa030c32030b0a0d050b16030b80040a0d030a400409 +fe0308fe0307fe0306050a0506fe03050a0305400404fa030364030201110502fe0301000d05 +011103000d0301b80164858d012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b +2b2b2b2b2b2b2b2b2b2b2b2b2b2b1d0000> +] def +/f-1-0 currentdict end definefont pop +%%EndResource +%%EndSetup +%%Page: 1 1 +%%BeginPageSetup +%%PageBoundingBox: 0 -1 1332 1375 +%%EndPageSetup +q 0 -1 1332 1376 rectclip q +0.678431 0.847059 0.901961 rg +909.496 1344.932 420.121 -1341.723 re f +0 g +2.837664 w +0 J +0 j +[] 0.0 d +4 M q 1 0 0 -1 0 1374.729248 cm +909.496 29.797 420.121 1341.723 re S Q +0.678431 0.847059 0.901961 rg +909.496 1373.311 202.324 -28.379 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +909.496 1.418 202.324 28.379 re S Q +BT +18.160768 0 0 18.160768 912.332221 1352.027933 Tm +/f-0-0 1 Tf +[(Asched)3(uler c)3(lasses)]TJ +ET +0.898039 g +1.418 1344.932 892.762 -1343.512 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +1.418 29.797 892.762 1343.512 re S Q +0.898039 g +1.418 1373.311 224.176 -28.379 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +1.418 1.418 224.176 28.379 re S Q +BT +18.160768 0 0 18.160768 4.256495 1352.027933 Tm +/f-0-0 1 Tf +[(Apache)3( Spark)3( class)3(es)]TJ +ET +1 g +23.93 1042.096 800.789 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 332.633 800.789 62.43 re S Q +BT +18.161053 0 0 18.161053 353.312354 1019.394069 Tm +/f-0-0 1 Tf +[(<<inte)3(rface>)3(>)]TJ +22.701315 0 0 22.701315 331.92346 992.436257 Tm +/f-1-0 1 Tf +[(T)129(askS)-3(chedu)-3(ler)]TJ +ET +1 g +23.93 979.667 800.789 -346.195 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 395.062 800.789 346.195 re S Q +BT +18.161053 0 0 18.161053 28.187626 959.803116 Tm +/f-0-0 1 Tf +[(+submi)3(tTasks)3(\(tasks)3(:TaskS)3(et\): U)3(nit)]TJ +0 -1.249998 Td +[(+setDA)3(GSched)3(uler\(d)3(agSche)3(duler:)3(DAGSch)3(eduler)3(\))]TJ +0 -1.25 Td +[(+start)3(\(\): Un)3(it)]TJ +0 -1.25 Td +[(+stop\()3(\): Uni)3(t)]TJ +0 -1.25 Td +[(+defau)3(ltPara)3(llelis)3(m\(\): I)3(nt)]TJ +0 -1.25 Td +[(+appli)3(cation)3(Id\(\): )3(String)]TJ +0 -1.25 Td +[(+appli)3(cation)3(Attemp)3(tId\(\):)3( Optio)3(n[Stri)3(ng])]TJ +0 -1.25 Td +[(+rootP)3(ool\(\):)3( Pool)]TJ +0 -1.25 Td +[(+sched)3(ulingM)3(ode\(\):)3( Sched)3(ulingM)3(ode)]TJ +0 -1.25 Td +[(+postS)3(tartHo)3(ok\(\): )3(Unit)]TJ +0 -1.25 Td +[(+cance)3(lTasks)3(\(stage)3(Id:Int)3(,inter)3(ruptTh)3(read:B)3(oolean\)) +3(: Unit)]TJ +0 -1.25 Td +[(+execu)3(torHea)3(rtbeat)3(Receiv)3(ed\(exe)3(cId:St)3(ring,)]TJ +0 -1.25 Td +[(accumU)3(pdates)3(:Array)3([\(Long)3(,)]TJ +0 -1.25 Td +[(Seq[Ac)3(cumula)3(torV2[)3(_,)]TJ +0 -1.25 Td +[(_]]\)],)3(blockM)3(anager)3(Id:Blo)3(ckMana)3(gerId\))3(: Bool)3(ean) +]TJ +ET +1 g +23.93 537.553 538.59 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 837.176 538.59 62.43 re S Q +BT +18.161053 0 0 18.161053 222.212245 514.851697 Tm +/f-0-0 1 Tf +[(<<inte)3(rface>)3(>)]TJ +22.701315 0 0 22.701315 174.863154 487.893885 Tm +/f-1-0 1 Tf +[(Sched)-3(ulerBa)-3(ck)26(end)]TJ +ET +1 g +23.93 475.124 538.59 -232.688 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 899.605 538.59 232.688 re S Q +BT +18.161053 0 0 18.161053 28.187626 455.260744 Tm +/f-0-0 1 Tf +[(+start)3(\(\): Un)3(it)]TJ +0 -1.25 Td +[(+isRea)3(dy\(\): )3(Boolea)3(n)]TJ +0 -1.25 Td +[(+stop\()3(\): Uni)3(t)]TJ +0 -1.25 Td +[(+defau)3(ltPara)3(llelis)3(m\(\): I)3(nt)]TJ +0 -1.25 Td +[(+appli)3(cation)3(Id\(\): )3(String)]TJ +0 -1.25 Td +[(+appli)3(cation)3(Attemp)3(tId\(\):)3( Optio)3(n[Stri)3(ng])]TJ +0 -1.25 Td +[(+getDr)3(iverLo)3(gUrls\()3(\): Opt)3(ion[Ma)3(p[Stri)3(ng, St)3(ring]]\ +)]TJ +0 -1.25 Td +[(+reviv)3(eOffer)3(s\(\): U)3(nit)]TJ +0 -1.25 Td +[(+killT)3(ask\(ta)3(skId:L)3(ong,ex)3(ecutor)3(Id:Str)3(ing,)]TJ +0 -1.25 Td +[(interr)3(uptThr)3(ead:Bo)3(olean\))3(: Unit)]TJ +ET +1 g +945.418 1294.589 360.953 -39.727 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 80.141 360.953 39.727 re S Q +BT +22.701315 0 0 22.701315 952.398297 1267.630127 Tm +/f-1-0 1 Tf +[(Aschedu)-3(lerCl)-3(uster)-3(Man)-3(ager)]TJ +ET +1 g +945.418 524.518 309.164 -39.727 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 850.211 309.164 39.727 re S Q +BT +22.701315 0 0 22.701315 974.27935 497.561758 Tm +/f-1-0 1 Tf +[(Aschedu)-3(lerBac)-3(k)26(end)]TJ +ET +1 g +945.418 484.792 309.164 -51.078 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 889.938 309.164 51.078 re S Q +BT +18.161053 0 0 18.161053 949.675895 464.928617 Tm +/f-0-0 1 Tf +[(-spark)3(Contex)3(t: Spa)3(rkCont)3(ext)]TJ +0 -1.25 Td +[(-maste)3(rURL: )3(String)]TJ +ET +[ 11.350658 11.350658] 0 d +q 1 0 0 -1 0 1374.729248 cm +817.82 99.531 m 880.031 99.531 l 880.031 100.004 l 945.418 100.004 l S Q +1 g +817.82 1286.55 m 795.117 1275.198 l 817.82 1263.846 l h +817.82 1286.55 m f +0 g +[] 0.0 d +q 1 0 0 -1 0 1374.729248 cm +817.82 88.18 m 795.117 99.531 l 817.82 110.883 l h +817.82 88.18 m S Q +[ 11.350658 11.350658] 0 d +q 1 0 0 -1 0 1374.729248 cm +850.594 363.848 m 896.422 363.848 l 896.422 364.73 l 945.418 364.73 l S Q +1 g +850.594 1022.233 m 827.895 1010.882 l 850.594 999.53 l h +850.594 1022.233 m f +0 g +[] 0.0 d +q 1 0 0 -1 0 1374.729248 cm +850.594 352.496 m 827.895 363.848 l 850.594 375.199 l h +850.594 352.496 m S Q +[ 11.350658 11.350658] 0 d +q 1 0 0 -1 0 1374.729248 cm +588.395 868.391 m 765.32 868.391 l 765.32 870.074 l 945.418 870.074 l S Q +1 g +588.395 517.69 m 565.691 506.339 l 588.395 494.987 l h +588.395 517.69 m f +0 g +[] 0.0 d +q 1 0 0 -1 0 1374.729248 cm +588.395 857.039 m 565.691 868.391 l 588.395 879.742 l h +588.395 857.039 m S Q +1 g +945.418 1029.862 309.164 -39.727 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 344.867 309.164 39.727 re S Q +BT +22.701315 0 0 22.701315 1028.505343 1002.904388 Tm +/f-1-0 1 Tf +[(Aschedu)-3(ler)]TJ +ET +1 g +945.418 990.135 309.164 -96.48 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 384.594 309.164 96.48 re S Q +BT +18.161053 0 0 18.161053 949.675895 970.271247 Tm +/f-0-0 1 Tf +[(-dagSc)3(hedule)3(r: DAG)3(Schedu)3(ler)]TJ +0 -1.25 Td +[(-spark)3(Contex)3(t: Spa)3(rkCont)3(ext)]TJ +0 -1.249998 Td +[(-maste)3(rURL: )3(String)]TJ +0 -1.25 Td +[(-backe)3(nd:)-600(Asched)3(ulerBa)3(ckend)]TJ +ET +1 g +23.93 599.882 197.504 -39.727 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 774.848 197.504 39.727 re S Q +BT +22.701315 0 0 22.701315 31.034192 572.924489 Tm +/f-1-0 1 Tf +[(DAGSchedu)-3(ler)]TJ +ET +q 1 0 0 -1 0 1374.729248 cm +909.703 398.781 m 886.488 398.781 l 886.488 794.711 l 221.434 794.711 l + S Q +1 g +945.418 975.948 m 925.555 969.135 l 905.691 975.948 l 925.555 982.757 l + h +945.418 975.948 m f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 398.781 m 925.555 405.594 l 905.691 398.781 l 925.555 391.973 l + h +945.418 398.781 m S Q +1 g +23.93 221.807 156.215 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 1152.922 156.215 62.43 re S Q +BT +18.161053 0 0 18.161053 31.025319 199.104808 Tm +/f-0-0 1 Tf +[(<<inte)3(rface>)3(>)]TJ +22.701315 0 0 22.701315 73.772074 172.146996 Tm +/f-1-0 1 Tf +[(T)129(ask)]TJ +ET +1 g +945.418 266.264 199.914 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1108.465 199.914 62.43 re S Q +BT +18.161053 0 0 18.161053 952.513575 243.556759 Tm +/f-0-0 1 Tf +[(<<wrap)3(per cl)3(ass>>)]TJ +22.701315 0 0 22.701315 975.520828 216.598947 Tm +/f-1-0 1 Tf +[(T)129(askK)15(ernel)]TJ +ET +1 g +945.418 203.831 199.914 -28.379 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1170.898 199.914 28.379 re S Q +BT +18.161053 0 0 18.161053 949.675895 183.965806 Tm +/f-0-0 1 Tf +[(-task:)3( Task)]TJ +ET +1 g +23.93 89.854 156.215 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 1284.875 156.215 62.43 re S Q +BT +18.161053 0 0 18.161053 31.025319 67.153412 Tm +/f-0-0 1 Tf +[(<<inte)3(rface>)3(>)]TJ +22.701315 0 0 22.701315 52.467421 40.1956 Tm +/f-1-0 1 Tf +[(T)129(askS)-3(et)]TJ +ET +1 g +945.418 134.874 199.914 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1239.855 199.914 62.43 re S Q +BT +18.161053 0 0 18.161053 952.513575 112.17293 Tm +/f-0-0 1 Tf +[(<<wrap)3(per cl)3(ass>>)]TJ +22.701315 0 0 22.701315 975.520828 85.215118 Tm +/f-1-0 1 Tf +[(T)129(askK)15(ernel)]TJ +ET +1 g +945.418 72.444 199.914 -28.375 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1302.285 199.914 28.375 re S Q +BT +18.161053 0 0 18.161053 949.675895 52.581977 Tm +/f-0-0 1 Tf +[(-taskS)3(et:)-600(TaskSe)3(t)]TJ +ET +q 1 0 0 -1 0 1374.729248 cm +909.703 1185.09 m 552.852 1185.09 l 552.852 1184.137 l 180.145 1184.137 + l S Q +1 g +945.418 189.639 m 925.555 182.831 l 905.691 189.639 l 925.555 196.452 l + h +945.418 189.639 m f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1185.09 m 925.555 1191.898 l 905.691 1185.09 l 925.555 1178.277 + l h +945.418 1185.09 m S Q +q 1 0 0 -1 0 1374.729248 cm +909.703 1316.473 m 552.852 1316.473 l 552.852 1316.09 l 180.145 1316.09 + l S Q +1 g +945.418 58.257 m 925.555 51.448 l 905.691 58.257 l 925.555 65.069 l h +945.418 58.257 m f +0 g +q 1 0 0 -1 0 1374.729248 cm +945.418 1316.473 m 925.555 1323.281 l 905.691 1316.473 l 925.555 1309.66 + l h +945.418 1316.473 m S Q +1 g +23.93 1306.413 768.016 -62.43 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 68.316 768.016 62.43 re S Q +BT +18.161053 0 0 18.161053 336.924816 1283.711149 Tm +/f-0-0 1 Tf +[(<<inte)3(rface>)3(>)]TJ +22.701315 0 0 22.701315 252.464396 1256.753337 Tm +/f-1-0 1 Tf +[(Externa)-3(lClu)-3(sterM)-3(ana)-3(ger)]TJ +ET +1 g +23.93 1243.983 768.016 -141.883 re f +0 g +q 1 0 0 -1 0 1374.729248 cm +23.93 130.746 768.016 141.883 re S Q +BT +18.161053 0 0 18.161053 28.187626 1224.120196 Tm +/f-0-0 1 Tf +[(+canCr)3(eate\(m)3(asterU)3(RL:Str)3(ing\): )3(Boolea)3(n)]TJ +0 -1.25 Td +[(+creat)3(eTaskS)3(chedul)3(er\(sc:)3(SparkC)3(ontext)3(,maste)3(rURL:St\ +)3(ring\):)3( TaskS)3(chedul)3(er)]TJ +0 -1.25 Td +[(+creat)3(eSched)3(ulerBa)3(ckend\()3(sc:Spa)3(rkCont)3(ext,)]TJ +0 -1.25 Td +[(master)3(URL:St)3(ring,)]TJ +0 -1.25 Td +[(schedu)3(ler:Ta)3(skSche)3(duler\))3(: Sche)3(dulerB)3(ackend)]TJ +0 -1.25 Td +[(+initi)3(alize\()3(schedu)3(ler:Ta)3(skSche)3(duler,)3(backen)3(d:Sched\ +)3(ulerBa)3(ckend\))3(: Unit)]TJ +ET +q 1 0 0 -1 0 1374.729248 cm +1290.297 466.887 m 1304.242 466.887 l 1304.242 870.074 l 1254.582 870.074 + l S Q +1 g +1254.582 907.843 m 1274.445 914.651 l 1294.309 907.843 l 1274.445 901.034 + l h +1254.582 907.843 m f +0 g +q 1 0 0 -1 0 1374.729248 cm +1254.582 466.887 m 1274.445 460.078 l 1294.309 466.887 l 1274.445 473.695 + l h +1254.582 466.887 m S Q +Q Q +showpage +%%Trailer +end restore +%%EOF diff --git a/fig/apache-spark-integration.png b/fig/apache-spark-integration.png Binary files differ. diff --git a/fig/ascheduler-components.png b/fig/ascheduler-components.png Binary files differ. diff --git a/fig/comparison-table.png b/fig/comparison-table.png Binary files differ. diff --git a/fig/overview1.jpg b/fig/overview1.jpg Binary files differ. diff --git a/fig/overview2.jpg b/fig/overview2.jpg Binary files differ. diff --git a/fig/plot-bench-all.pdf b/fig/plot-bench-all.pdf Binary files differ. diff --git a/fig/plot-bench-all.png b/fig/plot-bench-all.png Binary files differ. diff --git a/history.txt b/history.txt @@ -0,0 +1,132 @@ +Version history for the LLNCS LaTeX2e class + + date filename version action/reason/acknowledgements +---------------------------------------------------------------------------- + 29.5.96 letter.txt beta naming problems (subject index file) + thanks to Dr. Martin Held, Salzburg, AT + + subjindx.ind renamed to subjidx.ind as required + by llncs.dem + + history.txt introducing this file + + 30.5.96 llncs.cls incompatibility with new article.cls of + 1995/12/20 v1.3q Standard LaTeX document class, + \if@openbib is no longer defined, + reported by Ralf Heckmann and Graham Gough + solution by David Carlisle + + 10.6.96 llncs.cls problems with fragile commands in \author field + reported by Michael Gschwind, TU Wien + + 25.7.96 llncs.cls revision a corrects: + wrong size of text area, floats not \small, + some LaTeX generated texts + reported by Michael Sperber, Uni Tuebingen + + 16.4.97 all files 2.1 leaving beta state, + raising version counter to 2.1 + + 8.6.97 llncs.cls 2.1a revision a corrects: + unbreakable citation lists, reported by + Sergio Antoy of Portland State University + +11.12.97 llncs.cls 2.2 "general" headings centered; two new elements + for the article header: \email and \homedir; + complete revision of special environments: + \newtheorem replaced with \spnewtheorem, + introduced the theopargself environment; + two column parts made with multicol package; + add ons to work with the hyperref package + +07.01.98 llncs.cls 2.2 changed \email to simply switch to \tt + +25.03.98 llncs.cls 2.3 new class option "oribibl" to suppress + changes to the thebibliograpy environment + and retain pure LaTeX codes - useful + for most BibTeX applications + +16.04.98 llncs.cls 2.3 if option "oribibl" is given, extend the + thebibliograpy hook with "\small", suggested + by Clemens Ballarin, University of Cambridge + +20.11.98 llncs.cls 2.4 pagestyle "titlepage" - useful for + compilation of whole LNCS volumes + +12.01.99 llncs.cls 2.5 counters of orthogonal numbered special + environments are reset each new contribution + +27.04.99 llncs.cls 2.6 new command \thisbottomragged for the + actual page; indention of the footnote + made variable with \fnindent (default 1em); + new command \url that copys its argument + + 2.03.00 llncs.cls 2.7 \figurename and \tablename made compatible + to babel, suggested by Jo Hereth, TU Darmstadt; + definition of \url moved \AtBeginDocument + (allows for url package of Donald Arseneau), + suggested by Manfred Hauswirth, TU of Vienna; + \large for part entries in the TOC + +16.04.00 llncs.cls 2.8 new option "orivec" to preserve the original + vector definition, read "arrow" accent + +17.01.01 llncs.cls 2.9 hardwired texts made polyglot, + available languages: english (default), + french, german - all are "babel-proof" + +20.06.01 splncs.bst public release of a BibTeX style for LNCS, + nobly provided by Jason Noble + +14.08.01 llncs.cls 2.10 TOC: authors flushleft, + entries without hyphenation; suggested + by Wiro Niessen, Imaging Center - Utrecht + +23.01.02 llncs.cls 2.11 fixed footnote number confusion with + \thanks, numbered institutes, and normal + footnote entries; error reported by + Saverio Cittadini, Istituto Tecnico + Industriale "Tito Sarrocchi" - Siena + +28.01.02 llncs.cls 2.12 fixed footnote fix ; error reported by + Chris Mesterharm, CS Dept. Rutgers - NJ + +28.01.02 llncs.cls 2.13 fixed the fix (programmer needs vacation) + +17.08.04 llncs.cls 2.14 TOC: authors indented, smart \and handling + for the TOC suggested by Thomas Gabel + University of Osnabrueck + +07.03.06 splncs.bst fix for BibTeX entries without year; patch + provided by Jerry James, Utah State University + +14.06.06 splncs_srt.bst a sorting BibTeX style for LNCS, feature + provided by Tobias Heindel, FMI Uni-Stuttgart + +16.10.06 llncs.dem 2.3 removed affiliations from \tocauthor demo + +11.12.07 llncs.doc note on online visibility of given e-mail address + +15.06.09 splncs03.bst new BibTeX style compliant with the current + requirements, provided by Maurizio "Titto" + Patrignani of Universita' Roma Tre + +30.03.10 llncs.cls 2.15 fixed broken hyperref interoperability; + patch provided by Sven Koehler, + Hamburg University of Technology + +15.04.10 llncs.cls 2.16 fixed hyperref warning for informatory TOC entries; + introduced \keywords command - finally; + blank removed from \keywordname, flaw reported + by Armin B. Wagner, IGW TU Vienna + +15.04.10 llncs.cls 2.17 fixed missing switch "openright" used by \backmatter; + flaw reported by Tobias Pape, University of Potsdam + +27.09.13 llncs.cls 2.18 fixed "ngerman" incompatibility; solution provided + by Bastian Pfleging, University of Stuttgart + +31.03.14 llncs.cls 2.19 removed spurious blanks from "babel" texts, + problem reported by Piotr Stera, Silesian University + of Technology, Gliwice, Poland + diff --git a/llncs.cls b/llncs.cls @@ -0,0 +1,1208 @@ +% LLNCS DOCUMENT CLASS -- version 2.19 (31-Mar-2014) +% Springer Verlag LaTeX2e support for Lecture Notes in Computer Science +% +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2014/03/31 v2.19 +^^J LaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openright\iftrue +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +% languages +\let\switcht@@therlang\relax +\def\ds@deutsch{\def\switcht@@therlang{\switcht@deutsch}} +\def\ds@francais{\def\switcht@@therlang{\switcht@francais}} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index +\RequirePackage{aliascnt} + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} +\renewcommand\@pnumwidth{2em} +\renewcommand\@tocrmarg{3.5em} +% +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +% +\def\switcht@albion{% +\def\abstractname{Abstract.}% +\def\ackname{Acknowledgement.}% +\def\andname{and}% +\def\lastandname{\unskip, and}% +\def\appendixname{Appendix}% +\def\chaptername{Chapter}% +\def\claimname{Claim}% +\def\conjecturename{Conjecture}% +\def\contentsname{Table of Contents}% +\def\corollaryname{Corollary}% +\def\definitionname{Definition}% +\def\examplename{Example}% +\def\exercisename{Exercise}% +\def\figurename{Fig.}% +\def\keywordname{{\bf Keywords:}}% +\def\indexname{Index}% +\def\lemmaname{Lemma}% +\def\contriblistname{List of Contributors}% +\def\listfigurename{List of Figures}% +\def\listtablename{List of Tables}% +\def\mailname{{\it Correspondence to\/}:}% +\def\noteaddname{Note added in proof}% +\def\notename{Note}% +\def\partname{Part}% +\def\problemname{Problem}% +\def\proofname{Proof}% +\def\propertyname{Property}% +\def\propositionname{Proposition}% +\def\questionname{Question}% +\def\remarkname{Remark}% +\def\seename{see}% +\def\solutionname{Solution}% +\def\subclassname{{\it Subject Classifications\/}:}% +\def\tablename{Table}% +\def\theoremname{Theorem}} +\switcht@albion +% Names of theorem like environments are already defined +% but must be translated if another language is chosen +% +% French section +\def\switcht@francais{%\typeout{On parle francais.}% + \def\abstractname{R\'esum\'e.}% + \def\ackname{Remerciements.}% + \def\andname{et}% + \def\lastandname{ et}% + \def\appendixname{Appendice}% + \def\chaptername{Chapitre}% + \def\claimname{Pr\'etention}% + \def\conjecturename{Hypoth\`ese}% + \def\contentsname{Table des mati\`eres}% + \def\corollaryname{Corollaire}% + \def\definitionname{D\'efinition}% + \def\examplename{Exemple}% + \def\exercisename{Exercice}% + \def\figurename{Fig.}% + \def\keywordname{{\bf Mots-cl\'e:}}% + \def\indexname{Index}% + \def\lemmaname{Lemme}% + \def\contriblistname{Liste des contributeurs}% + \def\listfigurename{Liste des figures}% + \def\listtablename{Liste des tables}% + \def\mailname{{\it Correspondence to\/}:}% + \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}% + \def\notename{Remarque}% + \def\partname{Partie}% + \def\problemname{Probl\`eme}% + \def\proofname{Preuve}% + \def\propertyname{Caract\'eristique}% +%\def\propositionname{Proposition}% + \def\questionname{Question}% + \def\remarkname{Remarque}% + \def\seename{voir}% + \def\solutionname{Solution}% + \def\subclassname{{\it Subject Classifications\/}:}% + \def\tablename{Tableau}% + \def\theoremname{Th\'eor\`eme}% +} +% +% German section +\def\switcht@deutsch{%\typeout{Man spricht deutsch.}% + \def\abstractname{Zusammenfassung.}% + \def\ackname{Danksagung.}% + \def\andname{und}% + \def\lastandname{ und}% + \def\appendixname{Anhang}% + \def\chaptername{Kapitel}% + \def\claimname{Behauptung}% + \def\conjecturename{Hypothese}% + \def\contentsname{Inhaltsverzeichnis}% + \def\corollaryname{Korollar}% +%\def\definitionname{Definition}% + \def\examplename{Beispiel}% + \def\exercisename{\"Ubung}% + \def\figurename{Abb.}% + \def\keywordname{{\bf Schl\"usselw\"orter:}}% + \def\indexname{Index}% +%\def\lemmaname{Lemma}% + \def\contriblistname{Mitarbeiter}% + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\mailname{{\it Correspondence to\/}:}% + \def\noteaddname{Nachtrag}% + \def\notename{Anmerkung}% + \def\partname{Teil}% +%\def\problemname{Problem}% + \def\proofname{Beweis}% + \def\propertyname{Eigenschaft}% +%\def\propositionname{Proposition}% + \def\questionname{Frage}% + \def\remarkname{Anmerkung}% + \def\seename{siehe}% + \def\solutionname{L\"osung}% + \def\subclassname{{\it Subject Classifications\/}:}% + \def\tablename{Tabelle}% +%\def\theoremname{Theorem}% +} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil +\global\let\@textbottom\relax}} + +\renewcommand\small{% + \@setfontsize\small\@ixpt{11}% + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \abovedisplayshortskip \z@ \@plus2\p@ + \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ + \def\@listi{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm\@plus 2\p@ \@minus 4\p@} +\setlength\intextsep {8mm\@plus 2\p@ \@minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {\@arabic\c@chapter} + +\newif\if@mainmatter \@mainmattertrue +\newcommand\frontmatter{\cleardoublepage + \@mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + \@mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + \@mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + \@tempswatrue + \else + \@tempswafalse + \fi + \null\vfil + \secdef\@part\@spart} + +\def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart} +\def\@spart#1{% + {\centering + \interlinepenalty \@M + \normalfont + \Huge \bfseries #1\par}% + \@endpart} +\def\@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} +\def\@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries \@chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def\@schapter#1{\if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi} +\def\@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty\@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {12\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {8\p@ \@plus 4\p@ \@minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ \@plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-18\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-12\p@ \@plus -4\p@ \@minus -4\p@}% + {-0.5em \@plus -0.22em \@minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I\!R}} %reelle Zahlen +\def\bbbm{{\rm I\!M}} +\def\bbbn{{\rm I\!N}} %natuerliche Zahlen +\def\bbbf{{\rm I\!F}} +\def\bbbh{{\rm I\!H}} +\def\bbbk{{\rm I\!K}} +\def\bbbp{{\rm I\!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts\, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def\@listI{\leftmargin\leftmargini + \parsep 0\p@ \@plus1\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep0\p@} +\let\@listi\@listI +\@listi +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus2\p@ \@minus\p@} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname\@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + \@starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def\@dotsep{2} + +\let\phantomsection=\relax + +\def\hyperhrefextend{\ifx\hyper@anchor\@undefined\else +{}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}}% +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}}% + +\def\@adcmk[#1]{\ifcase #1 \or +\def\@gtempa{\addnumcontentsmark}% + \or \def\@gtempa{\addcontentsmark}% + \or \def\@gtempa{\addcontentsmarkwop}% + \fi\@gtempa{toc}{chapter}% +} +\def\addtocmark{% +\phantomsection +\@ifnextchar[{\@adcmk}{\@adcmk[3]}% +} + +\def\l@chapter#1#2{\addpenalty{-\@highpenalty} + \vskip 1.0em plus 1pt \@tempdima 1.5em \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}% + \fi\par + \penalty\@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-\@highpenalty} + \addvspace{8pt plus 1pt} + \@tempdima \z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \parfillskip -\rightskip \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern \@dotsep mu.\mkern + \@dotsep mu$}\hfill + \nobreak\hbox to\@pnumwidth{\hss #2}\par + \penalty\@highpenalty \endgroup} + +\def\l@author#1#2{\addpenalty{\@highpenalty} + \@tempdima=15\p@ %\z@ + \begingroup + \parindent \z@ \rightskip \@tocrmarg + \advance\rightskip by 0pt plus 2cm + \pretolerance=10000 + \leavevmode \advance\leftskip\@tempdima %\hskip -\leftskip + \textit{#1}\par + \penalty\@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{\@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{\@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{\@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{\@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{\@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listfigurename\@mkboth{{\listfigurename}}{{\listfigurename}}} + \@starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{\@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn + \fi\section*{\listtablename\@mkboth{{\listtablename}}{{\listtablename}}} + \@starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + \@mkboth{\listfigurename}{\listfigurename}}% + \@starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + \@mkboth{\listtablename}{\listtablename}}% + \@starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def\@biblabel##1{##1.} + \small + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount\@tempcntc +\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi + \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do + {\@ifundefined + {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries + ?}\@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}% + \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne + \@citea\def\@citea{,}\hbox{\csname b@\@citeb\endcsname}% + \else + \advance\@tempcntb\@ne + \ifnum\@tempcntb=\@tempcntc + \else\advance\@tempcntb\m@ne\@citeo + \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}} +\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else + \@citea\def\@citea{,\,\hskip\z@skip}% + \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else + {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else + \def\@citea{--}\fi + \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +\@cons\@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def\@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--\,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {\@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ \@plus .3\p@\relax + \let\item\par + \def\,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[\@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule\@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def\@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss\@makefnmark\ }}\ignorespaces#1} + +\long\def\@makecaption#1#2{% + \small + \vskip\abovecaptionskip + \sbox\@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd\@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def \@floatboxreset {% + \reset@font + \small + \@setnobreak + \@setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + \@dblfloat{table}} + {\end@dblfloat} + +\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + \@parboxrestore + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef\@author{No Author Given}% + \gdef\@title{No Title Given}% + \gdef\@subtitle{}% + \gdef\@institute{No Institute Given}% + \gdef\@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef\@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}\@institute}% + \ifnum\c@@inst=1\relax + \gdef\fnnstart{0}% + \else + \xdef\fnnstart{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + \@institute\par + \endgroup} + +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{\@ifundefined{url}{\def\url#1{#1}}{}% +\@ifpackageloaded{babel}{% +\@ifundefined{extrasenglish}{}{\addto\extrasenglish{\switcht@albion}}% +\@ifundefined{extrasfrenchb}{}{\addto\extrasfrenchb{\switcht@francais}}% +\@ifundefined{extrasgerman}{}{\addto\extrasgerman{\switcht@deutsch}}% +\@ifundefined{extrasngerman}{}{\addto\extrasngerman{\switcht@deutsch}}% +}{\switcht@@therlang}% +\providecommand{\keywords}[1]{\par\addvspace\baselineskip +\noindent\keywordname\enspace\ignorespaces#1}% +} +\def\homedir{\~{ }} + +\def\subtitle#1{\gdef\@subtitle{#1}} +\clearheadinfo +% +%%% to avoid hyperref warnings +\providecommand*{\toclevel@author}{999} +%%% to make title-entry parent of section-entries +\providecommand*{\toclevel@title}{0} +% +\renewcommand\maketitle{\newpage +\phantomsection + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=\@ne + \@maketitle + \else + \twocolumn[\@maketitle]% + \fi + \else + \newpage + \global\@topnum\z@ % Prevents figures from going at top of page. + \@maketitle + \fi + \thispagestyle{empty}\@thanks +% + \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{\@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef\@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces\@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef\@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{\@author}}% + \else + \def\\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{\noexpand\protect\noexpand\authcount{\the\c@auco}}% + \addcontentsline{toc}{author}{\toc@uthor}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef\@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath\@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef\@author{\copy\authrun}% + \markboth{\@author}{\@title}% + \fi + \endgroup + \setcounter{footnote}{\fnnstart}% + \clearheadinfo} +% +\def\@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + \let\newline\\ + {\Large \bfseries\boldmath + \pretolerance=10000 + \@title \par}\vskip .8cm +\if!\@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + \@subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}\@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +\@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\@thmcountersep{} +\def\@thmcounterend{.} + +\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}} + +% definition of \spnewtheorem with number + +\def\@spnthm#1#2{% + \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}} +\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}} + +\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@spothm#1[#2]#3#4#5{% + \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}% + {\expandafter\@ifdefinable\csname #1\endcsname + {\newaliascnt{#1}{#2}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global\@namedef{end#1}{\@endtheorem}}}} + +\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\refstepcounter{#1}% +\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}} + +\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def\@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4} + +\def\@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def\@sthm#1#2{\@Ynthm{#1}{#2}} + +\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname + {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global\@namedef{end#1}{\@endtheorem}}} + +\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@ +\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}} + +\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def\@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1\@thmcounterend}]} + +\def\@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }} + +\if@envcntsect + \def\@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + \@addtoreset{theorem}{section} + \else + \@addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4} + \@addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def\@takefromreset#1#2{% + \def\@tempa{#1}% + \let\@tempd\@elt + \def\@elt##1{% + \def\@tempb{##1}% + \ifx\@tempa\@tempb\else + \@addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + \@tempc + \let\@elt\@tempd} + +\def\theopargself{\def\@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5} + \def\@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def\@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let\@mkboth\@gobbletwo + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def\@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput +%end of file llncs.cls diff --git a/llncs.dem b/llncs.dem @@ -0,0 +1,1093 @@ +% This is LLNCS.DEM the demonstration file of +% the LaTeX macro package from Springer-Verlag +% for Lecture Notes in Computer Science, +% version 2.4 for LaTeX2e as of 16. April 2010 +% +\documentclass{llncs} +% +\usepackage{makeidx} % allows for indexgeneration +% +\begin{document} +% +\frontmatter % for the preliminaries +% +\pagestyle{headings} % switches on printing of running heads +\addtocmark{Hamiltonian Mechanics} % additional mark in the TOC +% +\chapter*{Preface} +% +This textbook is intended for use by students of physics, physical +chemistry, and theoretical chemistry. The reader is presumed to have a +basic knowledge of atomic and quantum physics at the level provided, for +example, by the first few chapters in our book {\it The Physics of Atoms +and Quanta}. The student of physics will find here material which should +be included in the basic education of every physicist. This book should +furthermore allow students to acquire an appreciation of the breadth and +variety within the field of molecular physics and its future as a +fascinating area of research. + +For the student of chemistry, the concepts introduced in this book will +provide a theoretical framework for that entire field of study. With the +help of these concepts, it is at least in principle possible to reduce +the enormous body of empirical chemical knowledge to a few basic +principles: those of quantum mechanics. In addition, modern physical +methods whose fundamentals are introduced here are becoming increasingly +important in chemistry and now represent indispensable tools for the +chemist. As examples, we might mention the structural analysis of +complex organic compounds, spectroscopic investigation of very rapid +reaction processes or, as a practical application, the remote detection +of pollutants in the air. + +\vspace{1cm} +\begin{flushright}\noindent +April 1995\hfill Walter Olthoff\\ +Program Chair\\ +ECOOP'95 +\end{flushright} +% +\chapter*{Organization} +ECOOP'95 is organized by the department of Computer Science, Univeristy +of \AA rhus and AITO (association Internationa pour les Technologie +Object) in cooperation with ACM/SIGPLAN. +% +\section*{Executive Commitee} +\begin{tabular}{@{}p{5cm}@{}p{7.2cm}@{}} +Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\ +Program Chair: &Walter Olthoff (DFKI GmbH, Germany)\\ +Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\ +Tutorials:&Birger M\o ller-Pedersen\hfil\break +(Norwegian Computing Center, Norway)\\ +Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\ +Panels:&Boris Magnusson (Lund University, Sweden)\\ +Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\ +Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK) +\end{tabular} +% +\section*{Program Commitee} +\begin{tabular}{@{}p{5cm}@{}p{7.2cm}@{}} +Conference Chair:&Ole Lehrmann Madsen (\AA rhus University, DK)\\ +Program Chair: &Walter Olthoff (DFKI GmbH, Germany)\\ +Organizing Chair:&J\o rgen Lindskov Knudsen (\AA rhus University, DK)\\ +Tutorials:&Birger M\o ller-Pedersen\hfil\break +(Norwegian Computing Center, Norway)\\ +Workshops:&Eric Jul (University of Kopenhagen, Denmark)\\ +Panels:&Boris Magnusson (Lund University, Sweden)\\ +Exhibition:&Elmer Sandvad (\AA rhus University, DK)\\ +Demonstrations:&Kurt N\o rdmark (\AA rhus University, DK) +\end{tabular} +% +\begin{multicols}{3}[\section*{Referees}] +V.~Andreev\\ +B\"arwolff\\ +E.~Barrelet\\ +H.P.~Beck\\ +G.~Bernardi\\ +E.~Binder\\ +P.C.~Bosetti\\ +Braunschweig\\ +F.W.~B\"usser\\ +T.~Carli\\ +A.B.~Clegg\\ +G.~Cozzika\\ +S.~Dagoret\\ +Del~Buono\\ +P.~Dingus\\ +H.~Duhm\\ +J.~Ebert\\ +S.~Eichenberger\\ +R.J.~Ellison\\ +Feltesse\\ +W.~Flauger\\ +A.~Fomenko\\ +G.~Franke\\ +J.~Garvey\\ +M.~Gennis\\ +L.~Goerlich\\ +P.~Goritchev\\ +H.~Greif\\ +E.M.~Hanlon\\ +R.~Haydar\\ +R.C.W.~Henderso\\ +P.~Hill\\ +H.~Hufnagel\\ +A.~Jacholkowska\\ +Johannsen\\ +S.~Kasarian\\ +I.R.~Kenyon\\ +C.~Kleinwort\\ +T.~K\"ohler\\ +S.D.~Kolya\\ +P.~Kostka\\ +U.~Kr\"uger\\ +J.~Kurzh\"ofer\\ +M.P.J.~Landon\\ +A.~Lebedev\\ +Ch.~Ley\\ +F.~Linsel\\ +H.~Lohmand\\ +Martin\\ +S.~Masson\\ +K.~Meier\\ +C.A.~Meyer\\ +S.~Mikocki\\ +J.V.~Morris\\ +B.~Naroska\\ +Nguyen\\ +U.~Obrock\\ +G.D.~Patel\\ +Ch.~Pichler\\ +S.~Prell\\ +F.~Raupach\\ +V.~Riech\\ +P.~Robmann\\ +N.~Sahlmann\\ +P.~Schleper\\ +Sch\"oning\\ +B.~Schwab\\ +A.~Semenov\\ +G.~Siegmon\\ +J.R.~Smith\\ +M.~Steenbock\\ +U.~Straumann\\ +C.~Thiebaux\\ +P.~Van~Esch\\ +from Yerevan Ph\\ +L.R.~West\\ +G.-G.~Winter\\ +T.P.~Yiou\\ +M.~Zimmer\end{multicols} +% +\section*{Sponsoring Institutions} +% +Bernauer-Budiman Inc., Reading, Mass.\\ +The Hofmann-International Company, San Louis Obispo, Cal.\\ +Kramer Industries, Heidelberg, Germany +% +\tableofcontents +% +\mainmatter % start of the contributions +% +\title{Hamiltonian Mechanics unter besonderer Ber\"ucksichtigung der +h\"ohreren Lehranstalten} +% +\titlerunning{Hamiltonian Mechanics} % abbreviated title (for running head) +% also used for the TOC unless +% \toctitle is used +% +\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2} +Jeffrey Dean \and David Grove \and Craig Chambers \and Kim~B.~Bruce \and +Elsa Bertino} +% +\authorrunning{Ivar Ekeland et al.} % abbreviated author list (for running head) +% +%%%% list of authors for the TOC (use if author list has to be modified) +\tocauthor{Ivar Ekeland, Roger Temam, Jeffrey Dean, David Grove, +Craig Chambers, Kim B. Bruce, and Elisa Bertino} +% +\institute{Princeton University, Princeton NJ 08544, USA,\\ +\email{I.Ekeland@princeton.edu},\\ WWW home page: +\texttt{http://users/\homedir iekeland/web/welcome.html} +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle % typeset the title of the contribution + +\begin{abstract} +The abstract should summarize the contents of the paper +using at least 70 and at most 150 words. It will be set in 9-point +font size and be inset 1.0 cm from the right and left margins. +There will be two blank lines before and after the Abstract. \dots +\keywords{computational geometry, graph theory, Hamilton cycles} +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the search +for periodic solutions to Hamiltonian systems. All this will be done in +the convex case; that is, we shall study the boundary-value problem +\begin{eqnarray*} + \dot{x}&=&JH' (t,x)\\ + x(0) &=& x(T) +\end{eqnarray*} +with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when +$\left\|x\right\| \to \infty$. + +% +\subsection{Autonomous Systems} +% +In this section, we will consider the case when the Hamiltonian $H(x)$ +is autonomous. For the sake of simplicity, we shall also assume that it +is $C^{1}$. + +We shall first consider the question of nontriviality, within the +general framework of +$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In +the second subsection, we shall look into the special case when $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, +and we shall try to derive additional information. +% +\subsubsection{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity, +for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$, +with $B_{\infty}-A_{\infty}$ positive definite. Set: +\begin{eqnarray} +\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\ + \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \ + J \frac{d}{dt} +A_{\infty}\ . +\end{eqnarray} + +Theorem~\ref{ghou:pre} tells us that if $\lambda +\gamma < 0$, the +boundary-value problem: +\begin{equation} +\begin{array}{rcl} + \dot{x}&=&JH' (x)\\ + x(0)&=&x (T) +\end{array} +\end{equation} +has at least one solution +$\overline{x}$, which is found by minimizing the dual +action functional: +\begin{equation} + \psi (u) = \int_{o}^{T} \left[\frac{1}{2} + \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt +\end{equation} +on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$ +with finite codimension. Here +\begin{equation} + N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right) +\end{equation} +is a convex function, and +\begin{equation} + N(x) \le \frac{1}{2} + \left(\left(B_{\infty} - A_{\infty}\right) x,x\right) + + c\ \ \ \forall x\ . +\end{equation} + +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set: +\begin{equation} + \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ . + \label{eq:one} +\end{equation} + +If $\gamma < - \lambda < \delta$, +the solution $\overline{u}$ is non-zero: +\begin{equation} + \overline{x} (t) \ne 0\ \ \ \forall t\ . +\end{equation} +\end{proposition} +% +\begin{proof} +Condition (\ref{eq:one}) means that, for every +$\delta ' > \delta$, there is some $\varepsilon > 0$ such that +\begin{equation} + \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le + \frac{\delta '}{2} \left\|x\right\|^{2}\ . +\end{equation} + +It is an exercise in convex analysis, into which we shall not go, to +show that this implies that there is an $\eta > 0$ such that +\begin{equation} + f\left\|x\right\| \le \eta + \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '} + \left\|y\right\|^{2}\ . + \label{eq:two} +\end{equation} + +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white eagle and +a white horse on a snow field} +\end{figure} + +Since $u_{1}$ is a smooth function, we will have +$\left\|hu_{1}\right\|_\infty \le \eta$ +for $h$ small enough, and inequality (\ref{eq:two}) will hold, +yielding thereby: +\begin{equation} + \psi (hu_{1}) \le \frac{h^{2}}{2} + \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2} + \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ . +\end{equation} + +If we choose $\delta '$ close enough to $\delta$, the quantity +$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$ +will be negative, and we end up with +\begin{equation} + \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ . +\end{equation} + +On the other hand, we check directly that $\psi (0) = 0$. This shows +that 0 cannot be a minimizer of $\psi$, not even a local one. +So $\overline{u} \ne 0$ and +$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed +\end{proof} +% +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let +$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$ be the +equilibria, that is, the solutions of $H' (\xi ) = 0$. +Denote by $\omega_{k}$ +the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set: +\begin{equation} + \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ . +\end{equation} +If: +\begin{equation} + \frac{T}{2\pi} b_{\infty} < + - E \left[- \frac{T}{2\pi}a_{\infty}\right] < + \frac{T}{2\pi}\omega + \label{eq:three} +\end{equation} +then minimization of $\psi$ yields a non-constant $T$-periodic solution +$\overline{x}$. +\end{corollary} +% + +We recall once more that by the integer part $E [\alpha ]$ of +$\alpha \in \bbbr$, we mean the $a\in \bbbz$ +such that $a< \alpha \le a+1$. For instance, +if we take $a_{\infty} = 0$, Corollary 2 tells +us that $\overline{x}$ exists and is +non-constant provided that: + +\begin{equation} + \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi} +\end{equation} +or +\begin{equation} + T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ . + \label{eq:four} +\end{equation} + +% +\begin{proof} +The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The +largest negative eigenvalue $\lambda$ is given by +$\frac{2\pi}{T}k_{o} +a_{\infty}$, +where +\begin{equation} + \frac{2\pi}{T}k_{o} + a_{\infty} < 0 + \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ . +\end{equation} +Hence: +\begin{equation} + k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ . +\end{equation} + +The condition $\gamma < -\lambda < \delta$ now becomes: +\begin{equation} + b_{\infty} - a_{\infty} < + - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty} +\end{equation} +which is precisely condition (\ref{eq:three}).\qed +\end{proof} +% + +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and +that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local +minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$. +\end{lemma} +% +\begin{proof} +We know that $\widetilde{x}$, or +$\widetilde{x} + \xi$ for some constant $\xi +\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system: +\begin{equation} + \dot{x} = JH' (x)\ . +\end{equation} + +There is no loss of generality in taking $\xi = 0$. So +$\psi (x) \ge \psi (\widetilde{x} )$ +for all $\widetilde{x}$ in some neighbourhood of $x$ in +$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$. + +But this index is precisely the index +$i_{T} (\widetilde{x} )$ of the $T$-periodic +solution $\widetilde{x}$ over the interval +$(0,T)$, as defined in Sect.~2.6. So +\begin{equation} + i_{T} (\widetilde{x} ) = 0\ . + \label{eq:five} +\end{equation} + +Now if $\widetilde{x}$ has a lower period, $T/k$ say, +we would have, by Corollary 31: +\begin{equation} + i_{T} (\widetilde{x} ) = + i_{kT/k}(\widetilde{x} ) \ge + ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ . +\end{equation} + +This would contradict (\ref{eq:five}), and thus cannot happen.\qed +\end{proof} +% +\paragraph{Notes and Comments.} +The results in this section are a +refined version of \cite{clar:eke}; +the minimality result of Proposition +14 was the first of its kind. + +To understand the nontriviality conditions, such as the one in formula +(\ref{eq:four}), one may think of a one-parameter family +$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$ +of periodic solutions, $x_{T} (0) = x_{T} (T)$, +with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$, +which is the period of the linearized system at 0. + +\begin{table} +\caption{This is the example table taken out of {\it The +\TeX{}book,} p.\,246} +\begin{center} +\begin{tabular}{r@{\quad}rl} +\hline +\multicolumn{1}{l}{\rule{0pt}{12pt} + Year}&\multicolumn{2}{l}{World population}\\[2pt] +\hline\rule{0pt}{12pt} +8000 B.C. & 5,000,000& \\ + 50 A.D. & 200,000,000& \\ +1650 A.D. & 500,000,000& \\ +1945 A.D. & 2,300,000,000& \\ +1980 A.D. & 4,400,000,000& \\[2pt] +\hline +\end{tabular} +\end{center} +\end{table} +% +\begin{theorem} [Ghoussoub-Preiss]\label{ghou:pre} +Assume $H(t,x)$ is +$(0,\varepsilon )$-subquadratic at +infinity for all $\varepsilon > 0$, and $T$-periodic in $t$ +\begin{equation} + H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t +\end{equation} +\begin{equation} + H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x +\end{equation} +\begin{equation} + H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty +\end{equation} +\begin{equation} + \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\ + H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ . +\end{equation} + +Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite +everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of +$kT$-periodic solutions of the system +\begin{equation} + \dot{x} = JH' (t,x) +\end{equation} +such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with: +\begin{equation} + p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ . +\end{equation} +\qed +\end{theorem} +% +\begin{example} [{{\rm External forcing}}] +Consider the system: +\begin{equation} + \dot{x} = JH' (x) + f(t) +\end{equation} +where the Hamiltonian $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, and the +forcing term is a distribution on the circle: +\begin{equation} + f = \frac{d}{dt} F + f_{o}\ \ \ \ \ + {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ , +\end{equation} +where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance, +\begin{equation} + f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ , +\end{equation} +where $\delta_{k}$ is the Dirac mass at $t= k$ and +$\xi \in \bbbr^{2n}$ is a +constant, fits the prescription. This means that the system +$\dot{x} = JH' (x)$ is being excited by a +series of identical shocks at interval $T$. +\end{example} +% +\begin{definition} +Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric +operators in $\bbbr^{2n}$, depending continuously on +$t\in [0,T]$, such that +$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$. + +A Borelian function +$H: [0,T]\times \bbbr^{2n} \to \bbbr$ +is called +$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity} +if there exists a function $N(t,x)$ such that: +\begin{equation} + H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x) +\end{equation} +\begin{equation} + \forall t\ ,\ \ \ N(t,x)\ \ \ \ \ + {\rm is\ convex\ with\ respect\ to}\ \ x +\end{equation} +\begin{equation} + N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty +\end{equation} +\begin{equation} + \exists c\in \bbbr\ :\ \ \ H (t,x) \le + \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ . +\end{equation} + +If $A_{\infty} (t) = a_{\infty} I$ and +$B_{\infty} (t) = b_{\infty} I$, with +$a_{\infty} \le b_{\infty} \in \bbbr$, +we shall say that $H$ is +$\left(a_{\infty},b_{\infty}\right)$-subquadratic +at infinity. As an example, the function +$\left\|x\right\|^{\alpha}$, with +$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity +for every $\varepsilon > 0$. Similarly, the Hamiltonian +\begin{equation} +H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha} +\end{equation} +is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$. +Note that, if $k<0$, it is not convex. +\end{definition} +% + +\paragraph{Notes and Comments.} +The first results on subharmonics were +obtained by Rabinowitz in \cite{rab}, who showed the existence of +infinitely many subharmonics both in the subquadratic and superquadratic +case, with suitable growth conditions on $H'$. Again the duality +approach enabled Clarke and Ekeland in \cite{clar:eke:2} to treat the +same problem in the convex-subquadratic case, with growth conditions on +$H$ only. + +Recently, Michalek and Tarantello (see \cite{mich:tar} and \cite{tar}) +have obtained lower bound on the number of subharmonics of period $kT$, +based on symmetry considerations and on pinching estimates, as in +Sect.~5.2 of this article. + +% +% ---- Bibliography ---- +% +\begin{thebibliography}{5} +% +\bibitem {clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and +boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) + +\bibitem {clar:eke:2} +Clarke, F., Ekeland, I.: +Solutions p\'{e}riodiques, du +p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes. +Note CRAS Paris 287, 1013--1015 (1978) + +\bibitem {mich:tar} +Michalek, R., Tarantello, G.: +Subharmonic solutions with prescribed minimal +period for nonautonomous Hamiltonian systems. +J. Diff. Eq. 72, 28--55 (1988) + +\bibitem {tar} +Tarantello, G.: +Subharmonic solutions for Hamiltonian +systems via a $\bbbz_{p}$ pseudoindex theory. +Annali di Matematica Pura (to appear) + +\bibitem {rab} +Rabinowitz, P.: +On subharmonic solutions of a Hamiltonian system. +Comm. Pure Appl. Math. 33, 609--633 (1980) + +\end{thebibliography} + +% +% second contribution with nearly identical text, +% slightly changed contribution head (all entries +% appear as defaults), and modified bibliography +% +\title{Hamiltonian Mechanics2} + +\author{Ivar Ekeland\inst{1} \and Roger Temam\inst{2}} + +\institute{Princeton University, Princeton NJ 08544, USA +\and +Universit\'{e} de Paris-Sud, +Laboratoire d'Analyse Num\'{e}rique, B\^{a}timent 425,\\ +F-91405 Orsay Cedex, France} + +\maketitle +% +% Modify the bibliography environment to call for the author-year +% system. This is done normally with the citeauthoryear option +% for a particular contribution. +\makeatletter +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`\.=\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def\@cite#1{#1}% + \def\@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\makeatother +% +\begin{abstract} +The abstract should summarize the contents of the paper +using at least 70 and at most 150 words. It will be set in 9-point +font size and be inset 1.0 cm from the right and left margins. +There will be two blank lines before and after the Abstract. \dots +\keywords{graph transformations, convex geometry, lattice computations, +convex polygons, triangulations, discrete geometry} +\end{abstract} +% +\section{Fixed-Period Problems: The Sublinear Case} +% +With this chapter, the preliminaries are over, and we begin the search +for periodic solutions to Hamiltonian systems. All this will be done in +the convex case; that is, we shall study the boundary-value problem +\begin{eqnarray*} + \dot{x}&=&JH' (t,x)\\ + x(0) &=& x(T) +\end{eqnarray*} +with $H(t,\cdot)$ a convex function of $x$, going to $+\infty$ when +$\left\|x\right\| \to \infty$. + +% +\subsection{Autonomous Systems} +% +In this section, we will consider the case when the Hamiltonian $H(x)$ +is autonomous. For the sake of simplicity, we shall also assume that it +is $C^{1}$. + +We shall first consider the question of nontriviality, within the +general framework of +$\left(A_{\infty},B_{\infty}\right)$-subquadratic Hamiltonians. In +the second subsection, we shall look into the special case when $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, +and we shall try to derive additional information. +% +\subsubsection{The General Case: Nontriviality.} +% +We assume that $H$ is +$\left(A_{\infty},B_{\infty}\right)$-sub\-qua\-dra\-tic at infinity, +for some constant symmetric matrices $A_{\infty}$ and $B_{\infty}$, +with $B_{\infty}-A_{\infty}$ positive definite. Set: +\begin{eqnarray} +\gamma :&=&{\rm smallest\ eigenvalue\ of}\ \ B_{\infty} - A_{\infty} \\ + \lambda : &=& {\rm largest\ negative\ eigenvalue\ of}\ \ + J \frac{d}{dt} +A_{\infty}\ . +\end{eqnarray} + +Theorem 21 tells us that if $\lambda +\gamma < 0$, the boundary-value +problem: +\begin{equation} +\begin{array}{rcl} + \dot{x}&=&JH' (x)\\ + x(0)&=&x (T) +\end{array} +\end{equation} +has at least one solution +$\overline{x}$, which is found by minimizing the dual +action functional: +\begin{equation} + \psi (u) = \int_{o}^{T} \left[\frac{1}{2} + \left(\Lambda_{o}^{-1} u,u\right) + N^{\ast} (-u)\right] dt +\end{equation} +on the range of $\Lambda$, which is a subspace $R (\Lambda)_{L}^{2}$ +with finite codimension. Here +\begin{equation} + N(x) := H(x) - \frac{1}{2} \left(A_{\infty} x,x\right) +\end{equation} +is a convex function, and +\begin{equation} + N(x) \le \frac{1}{2} + \left(\left(B_{\infty} - A_{\infty}\right) x,x\right) + + c\ \ \ \forall x\ . +\end{equation} + +% +\begin{proposition} +Assume $H'(0)=0$ and $ H(0)=0$. Set: +\begin{equation} + \delta := \liminf_{x\to 0} 2 N (x) \left\|x\right\|^{-2}\ . + \label{2eq:one} +\end{equation} + +If $\gamma < - \lambda < \delta$, +the solution $\overline{u}$ is non-zero: +\begin{equation} + \overline{x} (t) \ne 0\ \ \ \forall t\ . +\end{equation} +\end{proposition} +% +\begin{proof} +Condition (\ref{2eq:one}) means that, for every +$\delta ' > \delta$, there is some $\varepsilon > 0$ such that +\begin{equation} + \left\|x\right\| \le \varepsilon \Rightarrow N (x) \le + \frac{\delta '}{2} \left\|x\right\|^{2}\ . +\end{equation} + +It is an exercise in convex analysis, into which we shall not go, to +show that this implies that there is an $\eta > 0$ such that +\begin{equation} + f\left\|x\right\| \le \eta + \Rightarrow N^{\ast} (y) \le \frac{1}{2\delta '} + \left\|y\right\|^{2}\ . + \label{2eq:two} +\end{equation} + +\begin{figure} +\vspace{2.5cm} +\caption{This is the caption of the figure displaying a white eagle and +a white horse on a snow field} +\end{figure} + +Since $u_{1}$ is a smooth function, we will have +$\left\|hu_{1}\right\|_\infty \le \eta$ +for $h$ small enough, and inequality (\ref{2eq:two}) will hold, +yielding thereby: +\begin{equation} + \psi (hu_{1}) \le \frac{h^{2}}{2} + \frac{1}{\lambda} \left\|u_{1} \right\|_{2}^{2} + \frac{h^{2}}{2} + \frac{1}{\delta '} \left\|u_{1}\right\|^{2}\ . +\end{equation} + +If we choose $\delta '$ close enough to $\delta$, the quantity +$\left(\frac{1}{\lambda} + \frac{1}{\delta '}\right)$ +will be negative, and we end up with +\begin{equation} + \psi (hu_{1}) < 0\ \ \ \ \ {\rm for}\ \ h\ne 0\ \ {\rm small}\ . +\end{equation} + +On the other hand, we check directly that $\psi (0) = 0$. This shows +that 0 cannot be a minimizer of $\psi$, not even a local one. +So $\overline{u} \ne 0$ and +$\overline{u} \ne \Lambda_{o}^{-1} (0) = 0$. \qed +\end{proof} +% +\begin{corollary} +Assume $H$ is $C^{2}$ and +$\left(a_{\infty},b_{\infty}\right)$-subquadratic at infinity. Let +$\xi_{1},\allowbreak\dots,\allowbreak\xi_{N}$ be the +equilibria, that is, the solutions of $H' (\xi ) = 0$. +Denote by $\omega_{k}$ +the smallest eigenvalue of $H'' \left(\xi_{k}\right)$, and set: +\begin{equation} + \omega : = {\rm Min\,} \left\{\omega_{1},\dots,\omega_{k}\right\}\ . +\end{equation} +If: +\begin{equation} + \frac{T}{2\pi} b_{\infty} < + - E \left[- \frac{T}{2\pi}a_{\infty}\right] < + \frac{T}{2\pi}\omega + \label{2eq:three} +\end{equation} +then minimization of $\psi$ yields a non-constant $T$-periodic solution +$\overline{x}$. +\end{corollary} +% + +We recall once more that by the integer part $E [\alpha ]$ of +$\alpha \in \bbbr$, we mean the $a\in \bbbz$ +such that $a< \alpha \le a+1$. For instance, +if we take $a_{\infty} = 0$, Corollary 2 tells +us that $\overline{x}$ exists and is +non-constant provided that: + +\begin{equation} + \frac{T}{2\pi} b_{\infty} < 1 < \frac{T}{2\pi} +\end{equation} +or +\begin{equation} + T\in \left(\frac{2\pi}{\omega},\frac{2\pi}{b_{\infty}}\right)\ . + \label{2eq:four} +\end{equation} + +% +\begin{proof} +The spectrum of $\Lambda$ is $\frac{2\pi}{T} \bbbz +a_{\infty}$. The +largest negative eigenvalue $\lambda$ is given by +$\frac{2\pi}{T}k_{o} +a_{\infty}$, +where +\begin{equation} + \frac{2\pi}{T}k_{o} + a_{\infty} < 0 + \le \frac{2\pi}{T} (k_{o} +1) + a_{\infty}\ . +\end{equation} +Hence: +\begin{equation} + k_{o} = E \left[- \frac{T}{2\pi} a_{\infty}\right] \ . +\end{equation} + +The condition $\gamma < -\lambda < \delta$ now becomes: +\begin{equation} + b_{\infty} - a_{\infty} < + - \frac{2\pi}{T} k_{o} -a_{\infty} < \omega -a_{\infty} +\end{equation} +which is precisely condition (\ref{2eq:three}).\qed +\end{proof} +% + +\begin{lemma} +Assume that $H$ is $C^{2}$ on $\bbbr^{2n} \setminus \{ 0\}$ and +that $H'' (x)$ is non-de\-gen\-er\-ate for any $x\ne 0$. Then any local +minimizer $\widetilde{x}$ of $\psi$ has minimal period $T$. +\end{lemma} +% +\begin{proof} +We know that $\widetilde{x}$, or +$\widetilde{x} + \xi$ for some constant $\xi +\in \bbbr^{2n}$, is a $T$-periodic solution of the Hamiltonian system: +\begin{equation} + \dot{x} = JH' (x)\ . +\end{equation} + +There is no loss of generality in taking $\xi = 0$. So +$\psi (x) \ge \psi (\widetilde{x} )$ +for all $\widetilde{x}$ in some neighbourhood of $x$ in +$W^{1,2} \left(\bbbr / T\bbbz ; \bbbr^{2n}\right)$. + +But this index is precisely the index +$i_{T} (\widetilde{x} )$ of the $T$-periodic +solution $\widetilde{x}$ over the interval +$(0,T)$, as defined in Sect.~2.6. So +\begin{equation} + i_{T} (\widetilde{x} ) = 0\ . + \label{2eq:five} +\end{equation} + +Now if $\widetilde{x}$ has a lower period, $T/k$ say, +we would have, by Corollary 31: +\begin{equation} + i_{T} (\widetilde{x} ) = + i_{kT/k}(\widetilde{x} ) \ge + ki_{T/k} (\widetilde{x} ) + k-1 \ge k-1 \ge 1\ . +\end{equation} + +This would contradict (\ref{2eq:five}), and thus cannot happen.\qed +\end{proof} +% +\paragraph{Notes and Comments.} +The results in this section are a +refined version of \cite{2clar:eke}; +the minimality result of Proposition +14 was the first of its kind. + +To understand the nontriviality conditions, such as the one in formula +(\ref{2eq:four}), one may think of a one-parameter family +$x_{T}$, $T\in \left(2\pi\omega^{-1}, 2\pi b_{\infty}^{-1}\right)$ +of periodic solutions, $x_{T} (0) = x_{T} (T)$, +with $x_{T}$ going away to infinity when $T\to 2\pi \omega^{-1}$, +which is the period of the linearized system at 0. + +\begin{table} +\caption{This is the example table taken out of {\it The +\TeX{}book,} p.\,246} +\begin{center} +\begin{tabular}{r@{\quad}rl} +\hline +\multicolumn{1}{l}{\rule{0pt}{12pt} + Year}&\multicolumn{2}{l}{World population}\\[2pt] +\hline\rule{0pt}{12pt} +8000 B.C. & 5,000,000& \\ + 50 A.D. & 200,000,000& \\ +1650 A.D. & 500,000,000& \\ +1945 A.D. & 2,300,000,000& \\ +1980 A.D. & 4,400,000,000& \\[2pt] +\hline +\end{tabular} +\end{center} +\end{table} +% +\begin{theorem} [Ghoussoub-Preiss] +Assume $H(t,x)$ is +$(0,\varepsilon )$-subquadratic at +infinity for all $\varepsilon > 0$, and $T$-periodic in $t$ +\begin{equation} + H (t,\cdot )\ \ \ \ \ {\rm is\ convex}\ \ \forall t +\end{equation} +\begin{equation} + H (\cdot ,x)\ \ \ \ \ {\rm is}\ \ T{\rm -periodic}\ \ \forall x +\end{equation} +\begin{equation} + H (t,x)\ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n (s)s^{-1}\to \infty\ \ {\rm as}\ \ s\to \infty +\end{equation} +\begin{equation} + \forall \varepsilon > 0\ ,\ \ \ \exists c\ :\ + H(t,x) \le \frac{\varepsilon}{2}\left\|x\right\|^{2} + c\ . +\end{equation} + +Assume also that $H$ is $C^{2}$, and $H'' (t,x)$ is positive definite +everywhere. Then there is a sequence $x_{k}$, $k\in \bbbn$, of +$kT$-periodic solutions of the system +\begin{equation} + \dot{x} = JH' (t,x) +\end{equation} +such that, for every $k\in \bbbn$, there is some $p_{o}\in\bbbn$ with: +\begin{equation} + p\ge p_{o}\Rightarrow x_{pk} \ne x_{k}\ . +\end{equation} +\qed +\end{theorem} +% +\begin{example} [{{\rm External forcing}}] +Consider the system: +\begin{equation} + \dot{x} = JH' (x) + f(t) +\end{equation} +where the Hamiltonian $H$ is +$\left(0,b_{\infty}\right)$-subquadratic, and the +forcing term is a distribution on the circle: +\begin{equation} + f = \frac{d}{dt} F + f_{o}\ \ \ \ \ + {\rm with}\ \ F\in L^{2} \left(\bbbr / T\bbbz; \bbbr^{2n}\right)\ , +\end{equation} +where $f_{o} : = T^{-1}\int_{o}^{T} f (t) dt$. For instance, +\begin{equation} + f (t) = \sum_{k\in \bbbn} \delta_{k} \xi\ , +\end{equation} +where $\delta_{k}$ is the Dirac mass at $t= k$ and +$\xi \in \bbbr^{2n}$ is a +constant, fits the prescription. This means that the system +$\dot{x} = JH' (x)$ is being excited by a +series of identical shocks at interval $T$. +\end{example} +% +\begin{definition} +Let $A_{\infty} (t)$ and $B_{\infty} (t)$ be symmetric +operators in $\bbbr^{2n}$, depending continuously on +$t\in [0,T]$, such that +$A_{\infty} (t) \le B_{\infty} (t)$ for all $t$. + +A Borelian function +$H: [0,T]\times \bbbr^{2n} \to \bbbr$ +is called +$\left(A_{\infty} ,B_{\infty}\right)$-{\it subquadratic at infinity} +if there exists a function $N(t,x)$ such that: +\begin{equation} + H (t,x) = \frac{1}{2} \left(A_{\infty} (t) x,x\right) + N(t,x) +\end{equation} +\begin{equation} + \forall t\ ,\ \ \ N(t,x)\ \ \ \ \ + {\rm is\ convex\ with\ respect\ to}\ \ x +\end{equation} +\begin{equation} + N(t,x) \ge n\left(\left\|x\right\|\right)\ \ \ \ \ + {\rm with}\ \ n(s)s^{-1}\to +\infty\ \ {\rm as}\ \ s\to +\infty +\end{equation} +\begin{equation} + \exists c\in \bbbr\ :\ \ \ H (t,x) \le + \frac{1}{2} \left(B_{\infty} (t) x,x\right) + c\ \ \ \forall x\ . +\end{equation} + +If $A_{\infty} (t) = a_{\infty} I$ and +$B_{\infty} (t) = b_{\infty} I$, with +$a_{\infty} \le b_{\infty} \in \bbbr$, +we shall say that $H$ is +$\left(a_{\infty},b_{\infty}\right)$-subquadratic +at infinity. As an example, the function +$\left\|x\right\|^{\alpha}$, with +$1\le \alpha < 2$, is $(0,\varepsilon )$-subquadratic at infinity +for every $\varepsilon > 0$. Similarly, the Hamiltonian +\begin{equation} +H (t,x) = \frac{1}{2} k \left\|k\right\|^{2} +\left\|x\right\|^{\alpha} +\end{equation} +is $(k,k+\varepsilon )$-subquadratic for every $\varepsilon > 0$. +Note that, if $k<0$, it is not convex. +\end{definition} +% + +\paragraph{Notes and Comments.} +The first results on subharmonics were +obtained by Rabinowitz in \cite{2rab}, who showed the existence of +infinitely many subharmonics both in the subquadratic and superquadratic +case, with suitable growth conditions on $H'$. Again the duality +approach enabled Clarke and Ekeland in \cite{2clar:eke:2} to treat the +same problem in the convex-subquadratic case, with growth conditions on +$H$ only. + +Recently, Michalek and Tarantello (see Michalek, R., Tarantello, G. +\cite{2mich:tar} and Tarantello, G. \cite{2tar}) have obtained lower +bound on the number of subharmonics of period $kT$, based on symmetry +considerations and on pinching estimates, as in Sect.~5.2 of this +article. + +% +% ---- Bibliography ---- +% +\begin{thebibliography}{} +% +\bibitem[1980]{2clar:eke} +Clarke, F., Ekeland, I.: +Nonlinear oscillations and +boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) + +\bibitem[1981]{2clar:eke:2} +Clarke, F., Ekeland, I.: +Solutions p\'{e}riodiques, du +p\'{e}riode donn\'{e}e, des \'{e}quations hamiltoniennes. +Note CRAS Paris 287, 1013--1015 (1978) + +\bibitem[1982]{2mich:tar} +Michalek, R., Tarantello, G.: +Subharmonic solutions with prescribed minimal +period for nonautonomous Hamiltonian systems. +J. Diff. Eq. 72, 28--55 (1988) + +\bibitem[1983]{2tar} +Tarantello, G.: +Subharmonic solutions for Hamiltonian +systems via a $\bbbz_{p}$ pseudoindex theory. +Annali di Matematica Pura (to appear) + +\bibitem[1985]{2rab} +Rabinowitz, P.: +On subharmonic solutions of a Hamiltonian system. +Comm. Pure Appl. Math. 33, 609--633 (1980) + +\end{thebibliography} +\clearpage +\addtocmark[2]{Author Index} % additional numbered TOC entry +\renewcommand{\indexname}{Author Index} +\printindex +\clearpage +\addtocmark[2]{Subject Index} % additional numbered TOC entry +\markboth{Subject Index}{Subject Index} +\renewcommand{\indexname}{Subject Index} +\input{subjidx.ind} +\end{document} diff --git a/llncsdoc.pdf b/llncsdoc.pdf Binary files differ. diff --git a/llncsdoc.sty b/llncsdoc.sty @@ -0,0 +1,42 @@ +% This is LLNCSDOC.STY the modification of the +% LLNCS class file for the documentation of +% the class itself. +% +\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% + A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}} +\def\AmSTeX{{\protect\AmS-\protect\TeX}} +% +\def\ps@myheadings{\let\@mkboth\@gobbletwo +\def\@oddhead{\hbox{}\hfil\small\rm\rightmark +\qquad\thepage}% +\def\@oddfoot{}\def\@evenhead{\small\rm\thepage\qquad +\leftmark\hfil}% +\def\@evenfoot{}\def\sectionmark##1{}\def\subsectionmark##1{}} +\ps@myheadings +% +\setcounter{tocdepth}{2} +% +\renewcommand{\labelitemi}{--} +\newenvironment{alpherate}% +{\renewcommand{\labelenumi}{\alph{enumi})}\begin{enumerate}}% +{\end{enumerate}\renewcommand{\labelenumi}{enumi}} +% +\def\bibauthoryear{\begingroup +\def\thebibliography##1{\section*{References}% + \small\list{}{\settowidth\labelwidth{}\leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \usecounter{enumi}}% + \def\newblock{\hskip .11em plus .33em minus -.07em}% + \sloppy + \sfcode`\.=1000\relax}% + \def\@cite##1{##1}% + \def\@lbibitem[##1]##2{\item[]\if@filesw + {\def\protect####1{\string ####1\space}\immediate + \write\@auxout{\string\bibcite{##2}{##1}}}\fi\ignorespaces}% +\begin{thebibliography}{} +\bibitem[1982]{clar:eke3} Clarke, F., Ekeland, I.: Nonlinear +oscillations and boundary-value problems for Hamiltonian systems. +Arch. Rat. Mech. Anal. 78, 315--333 (1982) +\end{thebibliography} +\endgroup} diff --git a/readme.txt b/readme.txt @@ -0,0 +1,30 @@ +Dear LLNCS user, + +The files in this directory belong to the LaTeX2e package for +Lecture Notes in Computer Science (LNCS) of Springer-Verlag. + +It consists of the following files: + + readme.txt this file + + history.txt the version history of the package + + llncs.cls the LaTeX2e document class + + llncs.dem the sample input file + + llncs.doc the documentation of the class (LaTeX source) + llncsdoc.pdf the documentation of the class (PDF version) + llncsdoc.sty the modification of the class for the documentation + llncs.ind an external (faked) author index file + subjidx.ind subject index demo from the Springer book package + llncs.dvi the resultig DVI file (remember to use binary transfer!) + + sprmindx.sty supplementary style file for MakeIndex + (usage: makeindex -s sprmindx.sty <yourfile.idx>) + + splncs03.bst current LNCS BibTeX style with aphabetic sorting + + aliascnt.sty part of the Oberdiek bundle; allows more control over + the counters associated to any numbered item + remreset.sty by David Carlisle diff --git a/refs.bib b/refs.bib @@ -0,0 +1,81 @@ +@inproceedings{gankevich2015subordination, + title={Subordination: Cluster management without distributed consensus}, + author={Gankevich, Ivan and Tipikin, Yuri and Gaiduchok, Vladimir}, + booktitle={High Performance Computing \& Simulation (HPCS), 2015 International Conference on}, + pages={639--642}, + year={2015}, + organization={IEEE} +} + +@inproceedings{gankevich2016factory, + title={Factory: Master Node High-Availability for Big Data Applications and Beyond}, + author={Gankevich, Ivan and Tipikin, Yuri and Korkhov, Vladimir and Gaiduchok, Vladimir and Degtyarev, Alexander and Bogdanov, Alexander}, + booktitle={International Conference on Computational Science and Its Applications}, + pages={379--389}, + year={2016}, + organization={Springer} +} + +@inproceedings{gankevich2016nonstop, + title={Factory: Non-stop batch jobs without checkpointing}, + author={Gankevich, Ivan and Tipikin, Yuri and Korkhov, Vladimir and Gaiduchok, Vladimir}, + booktitle={High Performance Computing \& Simulation (HPCS), 2016 International Conference on}, + pages={979--984}, + year={2016}, + organization={IEEE} +} + +@article{cox2014iridis, + title={Iridis-pi: a low-cost, compact demonstration cluster}, + author={Cox, Simon J and Cox, James T and Boardman, Richard P and Johnston, Steven J and Scott, Mark and O’brien, Neil S}, + journal={Cluster Computing}, + volume={17}, + number={2}, + pages={349--358}, + year={2014}, + publisher={Springer} +} + +@inproceedings{fox2015raspberry, + title={Raspberry HadooPI: a low-cost, hands-on laboratory in big data and analytics}, + author={Fox, Kenneth and Mongan, William M and Popyack, Jeffrey}, + booktitle={SIGCSE}, + pages={687}, + year={2015} +} + +@article{hajji2016understanding, + title={Understanding the Performance of Low Power Raspberry Pi Cloud for Big Data}, + author={Hajji, Wajdi and Tso, Fung Po}, + journal={Electronics}, + volume={5}, + number={2}, + pages={29}, + year={2016}, + publisher={Multidisciplinary Digital Publishing Institute} +} + +@inproceedings{kaewkasi2014study, + title={A study of big data processing constraints on a low-power hadoop cluster}, + author={Kaewkasi, Chanwit and Srisuruk, Wichai}, + booktitle={Computer Science and Engineering Conference (ICSEC), 2014 International}, + pages={267--272}, + year={2014}, + organization={IEEE} +} + +@misc{spark, + title={Apache Spark official website}, + howpublished={\url{http://spark.apache.org/}} +} + +@misc{mastering-spark, + author={Jacek Laskowski}, + title={Mastering Apache Spark 2.0}, + howpublished={\url{https://www.gitbook.com/book/jaceklaskowski/mastering-apache-spark/details}} +} + +@misc{BATMAN, + title={{B.A.T.M.A.N.} official web page}, + howpublished={\url{https://www.open-mesh.org/projects/open-mesh/wiki}} +} diff --git a/remreset.sty b/remreset.sty @@ -0,0 +1,39 @@ + +% remreset package +%%%%%%%%%%%%%%%%%% + +% Copyright 1997 David carlisle +% This file may be distributed under the terms of the LPPL. +% See 00readme.txt for details. + +% 1997/09/28 David Carlisle + +% LaTeX includes a command \@addtoreset that is used to declare that +% a counter should be reset every time a second counter is incremented. + +% For example the book class has a line +% \@addtoreset{footnote}{chapter} +% So that the footnote counter is reset each chapter. + +% If you wish to bas a new class on book, but without this counter +% being reset, then standard LaTeX gives no simple mechanism to do +% this. + +% This package defines |\@removefromreset| which just undoes the effect +% of \@addtorest. So for example a class file may be defined by + +% \LoadClass{book} +% \@removefromreset{footnote}{chapter} + + +\def\@removefromreset#1#2{{% + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else + \noexpand\@elt{##1}% + \fi}% + \expandafter\xdef\csname cl@#2\endcsname{% + \csname cl@#2\endcsname}}} + + diff --git a/splncs03.bst b/splncs03.bst @@ -0,0 +1,1519 @@ +%% BibTeX bibliography style `splncs03' +%% +%% BibTeX bibliography style for use with numbered references in +%% Springer Verlag's "Lecture Notes in Computer Science" series. +%% (See Springer's documentation for llncs.cls for +%% more details of the suggested reference format.) Note that this +%% file will not work for author-year style citations. +%% +%% Use \documentclass{llncs} and \bibliographystyle{splncs03}, and cite +%% a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. +%% +%% This file comes to you courtesy of Maurizio "Titto" Patrignani of +%% Dipartimento di Informatica e Automazione Universita' Roma Tre +%% +%% ================================================================================================ +%% This was file `titto-lncs-02.bst' produced on Wed Apr 1, 2009 +%% Edited by hand by titto based on `titto-lncs-01.bst' (see below) +%% +%% CHANGES (with respect to titto-lncs-01.bst): +%% - Removed the call to \urlprefix (thus no "URL" string is added to the output) +%% ================================================================================================ +%% This was file `titto-lncs-01.bst' produced on Fri Aug 22, 2008 +%% Edited by hand by titto based on `titto.bst' (see below) +%% +%% CHANGES (with respect to titto.bst): +%% - Removed the "capitalize" command for editors string "(eds.)" and "(ed.)" +%% - Introduced the functions titto.bbl.pages and titto.bbl.page for journal pages (without "pp.") +%% - Added a new.sentence command to separate with a dot booktitle and series in the inproceedings +%% - Commented all new.block commands before urls and notes (to separate them with a comma) +%% - Introduced the functions titto.bbl.volume for handling journal volumes (without "vol." label) +%% - Used for editors the same name conventions used for authors (see function format.in.ed.booktitle) +%% - Removed a \newblock to avoid long spaces between title and "In: ..." +%% - Added function titto.space.prefix to add a space instead of "~" after the (removed) "vol." label +%% ================================================================================================ +%% This was file `titto.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `vonx,nm-rvvc,yr-par,jttl-rm,volp-com,jwdpg,jwdvol,numser,ser-vol,jnm-x,btit-rm,bt-rm,edparxc,bkedcap,au-col,in-col,fin-bare,pp,ed,abr,mth-bare,xedn,jabr,and-com,and-com-ed,xand,url,url-blk,em-x,nfss,') +%% ---------------------------------------- +%% *** Tentative .bst file for Springer LNCS *** +%% +%% Copyright 1994-2007 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)] + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is a numerical citation style, and as such is standard LaTeX. + % It requires no extra package to interface to the main text. + % The form of the \bibitem entries is + % \bibitem{key}... + % Usage of \cite is as follows: + % \cite{key} ==>> [#] + % \cite[chap. 2]{key} ==>> [#, chap. 2] + % where # is a number determined by the ordering in the reference list. + % The order in the reference list is alphabetical by authors. + %--------------------------------------------------------------------- + +ENTRY + { address + author + booktitle + chapter + edition + editor + eid + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + url + volume + year + } + {} + { label } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} +STRINGS { s t} +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ +% newline$ +% "\newblock " write$ % removed for titto-lncs-01 + " " write$ % to avoid long spaces between title and "In: ..." + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} +FUNCTION {fin.entry} +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + + +FUNCTION {add.colon} +{ duplicate$ empty$ + 'skip$ + { ":" * add.blank } + if$ +} + +FUNCTION {date.block} +{ + new.block +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} +STRINGS {z} +FUNCTION {remove.dots} +{ 'z := + "" + { z empty$ not } + { z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + while$ +} +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} +FUNCTION {emphasize} +{ skip$ } +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ +} +FUNCTION {titto.space.prefix} % always introduce a space +{ duplicate$ text.length$ #3 < + { " " } + { " " } + if$ + swap$ +} + + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.etal} +{ "et~al." } + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "vol." } + +FUNCTION {titto.bbl.volume} % for handling journals +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "pp." } + +FUNCTION {bbl.page} +{ "p." } + +FUNCTION {titto.bbl.pages} % for journals +{ "" } + +FUNCTION {titto.bbl.page} % for journals +{ "" } + +FUNCTION {bbl.chapter} +{ "chap." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + } + { swap$ + pop$ + } + if$ + } + if$ +} +FUNCTION {format.url} +{ url empty$ + { "" } +% { "\urlprefix\url{" url * "}" * } + { "\url{" url * "}" * } % changed in titto-lncs-02.bst + if$ +} + +INTEGERS { nameptr namesleft numnames } + + +STRINGS { bibinfo} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, jj}{, f{.}.}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.names.ed} +{ + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f{.}.~}{vv~}{ll}{ jj}" + format.name$ + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + "," * + t "others" = + { + + " " * bbl.etal * + } + { " " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} +FUNCTION {format.authors} +{ author "author" format.names +} +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ")" * + * + } + if$ +} +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { output.state mid.sentence = + { "l" } + { "u" } + if$ + change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ + { "t" change.case$ } + if$ + "title" bibinfo.check +} +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in capitalize + ":" * + " " * } + +FUNCTION {format.date} +{ + month "month" bibinfo.check + duplicate$ empty$ + year "year" bibinfo.check duplicate$ empty$ + { swap$ 'skip$ + { "there's a month but no year in " cite$ * warning$ } + if$ + * + } + { swap$ 'skip$ + { + swap$ + " " * swap$ + } + if$ + * + remove.dots + } + if$ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} +FUNCTION {format.btitle} +{ title "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + } + if$ +} +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.prefix + "volume" bibinfo.check * * + series "series" bibinfo.check + duplicate$ empty$ 'pop$ + { emphasize ", " * swap$ * } + if$ + "volume and number" number either.or.check + } + if$ +} +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * + series "series" bibinfo.check * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + output.state mid.sentence = + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + " " * bbl.edition * + } + if$ +} +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} +FUNCTION {format.pages} +{ pages duplicate$ empty$ 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + } + { + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { + ", " * + swap$ + n.dashify + pages multi.page.check + 'titto.bbl.pages + 'titto.bbl.page + if$ + swap$ tie.or.space.prefix + "pages" bibinfo.check + * * + * + } + if$ + } + if$ +} +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { + ", " * + } + if$ + swap$ * + } + if$ +} +FUNCTION {format.vol.num.pages} % this function is used only for journal entries +{ volume field.or.null + duplicate$ empty$ 'skip$ + { +% bbl.volume swap$ tie.or.space.prefix + titto.bbl.volume swap$ titto.space.prefix +% rationale for the change above: for journals you don't want "vol." label +% hence it does not make sense to attach the journal number to the label when +% it is short + "volume" bibinfo.check + * * + } + if$ + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "(" swap$ * ")" * + } + if$ * + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { bbl.chapter } + { type "l" change.case$ + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle "booktitle" bibinfo.check +} +FUNCTION {format.in.ed.booktitle} +{ format.booktitle duplicate$ empty$ 'skip$ + { +% editor "editor" format.names.ed duplicate$ empty$ 'pop$ % changed by titto + editor "editor" format.names duplicate$ empty$ 'pop$ + { + " " * + get.bbl.editor +% capitalize + "(" swap$ * ") " * + * swap$ + * } + if$ + word.in swap$ * + } + if$ +} +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} +FUNCTION {format.article.crossref} +{ + key duplicate$ empty$ + { pop$ + journal duplicate$ empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } + { "journal" bibinfo.check emphasize word.in swap$ * } + if$ + } + { word.in swap$ * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + editor num.names$ duplicate$ + #2 > + { pop$ + "editor" bibinfo.check + " " * bbl.etal + * + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + "editor" bibinfo.check + " " * bbl.etal + * + } + { + bbl.and space.word + * editor #2 "{vv~}{ll}" format.name$ + "editor" bibinfo.check + * + } + if$ + } + if$ + } + if$ +} +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + capitalize + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { series emphasize * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.incoll.inproc.crossref} +{ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { format.booktitle duplicate$ empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + } + { word.in swap$ * } + if$ + } + { word.in key * " " *} + if$ + } + { word.in format.crossref.editor * " " *} + if$ + " \cite{" * crossref * "}" * +} +FUNCTION {format.org.or.pub} +{ 't := + "" + address empty$ t empty$ and + 'skip$ + { + t empty$ + { address "address" bibinfo.check * + } + { t * + address empty$ + 'skip$ + { ", " * address "address" bibinfo.check * } + if$ + } + if$ + } + if$ +} +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { + journal + "journal" bibinfo.check + "journal" output.check + add.blank + format.vol.num.pages output + format.date "year" output.check + } + { format.article.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {booklet} +{ output.bibitem + format.authors output + add.colon + new.block + format.title "title" output.check + new.block + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + add.colon + } + { format.authors output.nonnull + add.colon + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + format.btitle "title" output.check + crossref missing$ + { + format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + new.sentence + format.number.series output + format.publisher.address output + } + { + format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.chapter.pages output + new.sentence + format.number.series output + format.publisher.address output + format.edition output + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + new.sentence % added by titto + format.bvolume output + format.pages output + new.sentence + format.number.series output + publisher empty$ + { format.organization.address output } + { organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + format.date "year" output.check + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ +% new.block + format.url output +% new.block + format.note output + fin.entry +} +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization "organization" bibinfo.check + duplicate$ empty$ 'pop$ + { output + address "address" bibinfo.check output + } + if$ + } + { format.authors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + author empty$ + { organization empty$ + { + address new.block.checka + address "address" bibinfo.check output + } + 'skip$ + if$ + } + { + organization address new.block.checkb + organization "organization" bibinfo.check output + address "address" bibinfo.check output + } + if$ + format.edition output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.mthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + add.colon + title howpublished new.block.checkb + format.title output + howpublished new.block.checka + howpublished "howpublished" bibinfo.check output + format.date output +% new.block + format.url output +% new.block + format.note output + fin.entry + empty.misc.check +} +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.btitle + "title" output.check + new.block + bbl.phdthesis format.thesis.type output.nonnull + school "school" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization "organization" bibinfo.check output + } + { format.editors output.nonnull } + if$ + add.colon + new.block + format.btitle "title" output.check + format.bvolume output + editor empty$ + { publisher empty$ + { format.number.series output } + { + new.sentence + format.number.series output + format.publisher.address output + } + if$ + } + { publisher empty$ + { + new.sentence + format.number.series output + format.organization.address output } + { + new.sentence + format.number.series output + organization "organization" bibinfo.check output + format.publisher.address output + } + if$ + } + if$ + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title + "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" bibinfo.warn output + address "address" bibinfo.check output + format.date "year" output.check +% new.block + format.url output +% new.block + format.note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + add.colon + new.block + format.title "title" output.check + format.date output +% new.block + format.url output +% new.block + format.note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } +READ +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} +INTEGERS { len } +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}{ ff{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} +ITERATE {presort} +SORT +STRINGS { longest.label } +INTEGERS { number.label longest.label.width } +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} +EXECUTE {initialize.longest.label} +ITERATE {longest.label.pass} +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * + write$ newline$ + "\providecommand{\url}[1]{\texttt{#1}}" + write$ newline$ + "\providecommand{\urlprefix}{URL }" + write$ newline$ +} +EXECUTE {begin.bib} +EXECUTE {init.state.consts} +ITERATE {call.type$} +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `titto.bst'. + + diff --git a/sprmindx.sty b/sprmindx.sty @@ -0,0 +1,4 @@ +delim_0 "\\idxquad " +delim_1 "\\idxquad " +delim_2 "\\idxquad " +delim_n ",\\,"