!gRge      !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                   !!!!"###################$$$$$$$$$$$$%%%%%&&&&&&&&'''''''''''''''''''''((((((((()))))))) ) ) ) * ******************* +!+"+#+$+%+&+'+(+)+*++,,,-,.,/-0-1-2-3-4-5-6-7-8-9-:.;.<.=.>.?.@.A.B.C/D/E/F/G/H/I/J/K0L0M0N0O0P0Q0R0S0T0U1V1W1X1Y1Z1[1\1]1^2_2`2a2b2c2d2e2f2g3h3i3j3k3l3m3n3o3p3q4r4s4t4u4v4w4x4y4z4{4|4}4~4444555555555556666666666666666666666666666677777888888888889:;;;<<<<<<<<<<<<<<<<<<<<<<<<<=================>>>????????????????????????????? ? ? ? @ @@@@@@@@@@@@@@@@@@@ @!@"@#@$@%@&@'@(@)@*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;A<A=A>A?A@AAABACADAEBFBGBHBIBJBKCLCMCNCOCPCQCRCSCTCUCVCWCXDYDZD[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkFlFmFnFoFpFqFrFsFtFuFvFwFxFyFzG{G|G}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHIIIJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKLLLMMMMMMMMMMMMNNNOOOOOOOOOOOOPPPPPPPPPPPPPPPPPQQQQQQQQQQRRRRS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#S$S%S&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;T<T=T>T?T@TATBTCTDTETFTGUHUIUJUKULUMUNUOUPUQURUSUTUUUVUWUXUYUZU[U\U]U^U_U`UaUbUcUdUZSafeMQweekdaze,The representation in HTML of 24-bit colour.eweekdazeEThe number of hex-digits required to represent 24-bit colour in HTML.weekdaze4The prefix used when specifying an HTML colour-code.fweekdazeHash the specified string.weekdazeLGenerate an arbitrary HTML colour-code using a hash of the specified string.weekdaze.Interpret the specified string as hexadecimal.weekdaze8Return the complement of the specified HTML colour-code.Safeaweekdaze;The representation of a colour as three primary components.weekdaze Constructor.gweekdazeSmart-constructor.weekdazeSmart-constructor.weekdazeHConstant base of number-system used to represent 24-bit colours in HTML. weekdaze?Represents the specified positive integral value as RGB 24-bit. weekdazeDeconstructor.hweekdazeEThe constant base of number-system used to represent colours in HTML. weekdazeThe constant representation of black in RGB. weekdazeThe constant representation of white in RGB.iweekdaze\Combine two RGB-representations using the specified function to combine each primary colour. weekdaze#Add the matching component colours.$CAVEAT: this may result in overflow.jweekdaze;Find the difference between the matching component colours.#CAVEAT: negative values may result.weekdazeDFind the absolute difference between the matching component colours.weekdazetConvert RGB 24-bit to RGB UnitInterval, i.e. map from the closed interval [0,255] to the semi-closed interval [0,1).weekdazetConvert RGB UnitInterval to RGB 24-bit, i.e. map from the semi-closed interval [0,1) to the closed interval [0,255].weekdazeRed.weekdazeGreen.weekdazeBlue.gweekdazeRed.weekdazeGreen.weekdazeBlue.weekdazeRed.weekdazeGreen.weekdazeBlue.       6j6Safet`weekdaze8Represents the specified HTML colour-code as RGB 24-bit.weekdaze4Represents the specified RGB as an HTML colour-code.weekdazehMaps the specified value from the unit-interval to the corresponding spectral colour represented as RGB.The mapping from the spectrum to RGB is performed by modeling the spectrum as a circular arc drawn on the colour triangle, of radius equal to the specified saturation, & centered on green. CAVEAT: this algorithm has no solid basis.]One may specify the angular span & angular offset of this arc, to define the values to which 0 & 1 map.weekdazeCalls ", with default parameters to make 0 map to blue & 1 to red&, & with a moderately high saturation.Calls # to convert to an HTML colour-code.weekdaze?Red, green & blue component-colours, each in the unit-interval.weekdazeZThe angular span in the range [0 .. 2 * pi radians], to which the unit-interval is mapped.weekdazeThe angular offset in radians.weekdaze%The saturation in the unit-interval; 0 will always result in black.weekdazeFThe value in the unit-interval which is to be represented by a colour.SafetSafewweekdazeThe core & optional( requirements, of some unspecified type.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdaze Accessor.weekdaze Accessor.VNonexNonexEWNoneyNkweekdaze'Pickler for an arbitrary datum of type l.kNonezmweekdazeJTruncate the rounding-error introduced by conversion to a rational number.XNone|inweekdaze0An extreme addition to the picklers packaged in Text.XML.HXT.Arrow.Pickle.nNone>@A"weekdazeCAn interface to which a collection of criteria-weights may conform.$weekdazeWQuantifies the relative significance, of criteria used to assess the desirability of a resource.uThe larger the value, the more significant the criterion; relative to other criteria applicable to the same resource.&weekdazeSmart constructor.*weekdazeTrue if the specified 'criterion-weight' falls within the closed unit-interval;  +https://en.wikipedia.org/wiki/Unit_interval.#weekdaze!True if all the weights are zero."#$%&"#$%& None 0weekdaze9Quantifies criteria used to assess the desirability of a resource.XThe larger the value the better, relative to the same criterion applied other resources.1weekdazeSmart constructor.2weekdazeBuild a  criterion from a o, arbitrarily assuming p is better than q.3weekdaze2Define the middle of the range of possible values.4weekdazeAMap a natural number into the unit-interval, by reflecting about one" & compressing the range; so that one remains one, but infinity becomes zero.5weekdaze]Map a whole number into the unit-interval, so that zero becomes one, & infinity becomes zero.6weekdazeTReflect a number in the unit-interval, so that zero becomes one, & one becomes zero.LCAVEAT: if the number provided exceeds one, then an error will be generated.7weekdazeCalculates the  weighted meanM of the specified criterion-values using the corresponding criterion-weights.DAlso writes individual unweighted criterion-values, to facilitate post-analysis; if the corresponding weight is zero, evaluation of the criterion is avoided, both for efficiency & to avoid the possibility of generating an error while evaluating a criterion which may have no validity in the context of the current problem.DCAVEAT: if all weights are zero, then the result can't be evaluated.8weekdazeTrue if the specified 'criterion-weight' falls within the closed unit-interval;  +https://en.wikipedia.org/wiki/Unit_interval.0123456703456712 None>' =weekdazeOEncapsulates the data which drives the optimisation of lesson-criteria weights.>weekdazeYThe number of random trials used when attempting to optimise the lesson-criteria weights.?weekdazepThe magnitude of the random change applied to individual lesson-criteria, while attempting to find a better set.@weekdazeBThe factor used to reduce the change-magnitude after each success.Aweekdaze$Whether to accept a proposed set of lesson-criteria weights on the basis of the mean (as opposed to the maximum) over the specified raster-scans, of the weighted mean over all heterogeneous timetable-criteria.rweekdazeA number of trials.BweekdazeUsed to qualify XML.sweekdazeUsed to qualify SQL & XML.CweekdazeUsed to qualify SQL & XML.tweekdazeUsed to qualify SQL & XML.uweekdazeUsed to qualify SQL & XML.DweekdazeSmart constructor.Eweekdaze!Whether optimisation is required.DweekdazeThe number of random trials.weekdazeChange-magnitudeweekdazeReduction-factor.weekdazeUse Mean over Raster-scans. =>?@ABCDE =>?@ABCDE None>*A+vweekdaze=The type of a function which mutates lesson-criteria weights.Mweekdaze0The weight of various criteria used to select a lesson3 from alternatives, at specific coordinates in the  timetable.4These criteria relate only to the attributes of the lesson$ rather than its coordinates in the  timetable1; since the latter is common to all alternatives.OweekdazeA lesson is preferred, if the required resources (locations & teachers) are shared with other student-bodies', by merging them into a single larger  student-class.PweekdazeA lesson is preferred, if the course$ to which it belongs, has a greater minimum consecutive lessonsN; since this makes it harder to book later, into the smaller spaces remaining.QweekdazeA course* is preferred, if it has greater unbooked lesson s, since a course requiring only one lesson can be booked on any day.RweekdazeA course4 is preferred, if it is a member of a larger set of synchronised course1s; it seems prudent to book the most constrained course's lesson s, early.SweekdazeA subject+ is preferred, if it is categorised by the student, as a core knowledge-requirement.TweekdazeA teacher is preferred, if their specialtyTopic is the proposed topic.UweekdazeA location is preferred, when its capacity matches the course 's optional maximum class-size.VweekdazeA location is preferred, the more its  facilities are used; cf. `D, which tries to make a distinction based on the type of the wasted facility.WweekdazeA course is preferred, the more any maximum class-size is filled by the proposed  student-class0. CAVEAT: this can change retrospectively given YZ.XweekdazeA location is preferred, the more its capacity is filled by the proposed  student-class0. CAVEAT: this can change retrospectively given YZ.Yweekdaze A booking-time3 is preferred, if there's minimal probability that courses for other the knowledge-requirement s of this  student-body & any studying synchronised courses!, will specifically request that time0; the probability becomes a certainty for those knowledge-requirement%s which can only be satisfied by one course, allowing corresponding lessonDs to be filtered from all candidate-lessons, before this evaluation.ZweekdazeA location/ is preferred, when booked by the fewest other teachers.[weekdazeA course- is preferred, if it is booked closer to any timeslot-request.\weekdazeA course is preferred, if inter-campus migrations of students are minimised.]weekdazeA course is preferred, if inter-campus migrations of teachers are minimised.^weekdazeA lesson" is preferred, when the number of student-body combination0s is minimised. CAVEAT: potential conflict with X & W._weekdazeA location is preferred, if the size of teacherG's locus-operandi is minimised; based merely on the number of distinct location0s booked, rather than the distance between them.`weekdazeA lesson is preferred, if the location 's unused  facilities(, are commonly available elsewhere; cf. V, which treats all  facilities equally.aweekdazeUsed to qualify XML.bweekdazeUsed to qualify XML.cweekdazeUsed to qualify XML.dweekdazeUsed to qualify XML.eweekdazeUsed to qualify XML.fweekdazeUsed to qualify XML.gweekdazeUsed to qualify XML.hweekdazeUsed to qualify XML.iweekdazeUsed to qualify XML.jweekdazeUsed to qualify XML.kweekdazeUsed to qualify XML.lweekdazeUsed to qualify XML.mweekdazeUsed to qualify XML.nweekdazeUsed to qualify XML.oweekdazeUsed to qualify XML.pweekdazeUsed to qualify XML.qweekdazeUsed to qualify XML.rweekdazeUsed to qualify XML.sweekdazeUsed to qualify XML.tweekdaze%The ordered list of tags & accessors.uweekdazeVReturns the weighted sum of the specified criteria, divided by the sum of the weights.SEach criterion increases in proportion to some desirable attribute of the proposed lesson.Each criterion should be in the same range of magnitudes, so that none dominates the total, thus making the total a clear measure of the value attributed to each.The magnitude of the value of each criterion should be independent of the dimensions of the problem, such that the balance isn't disturbed when it's changed; i.e. they should be dimensionless.Lessonjs lacking the concept being measured shouldn't be disadvantaged, but assigned a constant median magnitude.wweekdaze6Adjust the mean weight, so that the maximum weight is '1'.weekdazeNPerturb each weight by an independent random value, of configurable magnitude.Under this transformation, criterion-weights of zero will remain unchanged.uweekdazeareResourcesReused: Maximum if the proposed lesson* already exists at the same time in other  student-bodyF timetable, & therefore allows resource-reuse, by merging them into a  student-class.weekdazeminimumConsecutiveLessons: Maximum when the proposed lesson, belongs to a course' which specifies the greatest possible minimum consecutive lessons.weekdazeremainingCourseLessons: Maximum when the number of lessons required for the course matches the number of days the student & teacherK are mutually available, falling to minimum when there are fewer remaining lessons.weekdazesynchronisedCourseSetSize: Maximum if the course9 is a member of the largest possible set of synchronised courses.weekdazeisCoreKnowledgeRequirement: Maximum if the subject is categorised as a core knowledge-requirement for the student, otherwise minimum.weekdazeisSpecialistInTopic: Maximum if the teacher is a specialist in a given topic, otherwise minimum.weekdaze(matchOfCourseClassSizeToLocationCapacity8: Maximum when the maximum class-size specified for the course matches the capacity of the location0, falling to minimum as the deviation increases.weekdazerelativeFacilityUtilisation: The number of  facilities= used (regardless of their nature), over the total number of  facilities available at the location. weekdaze#studentClassSizeOverCourseClassSize: The number of students in the class, over the courseJ's maximum class-size; this makes little sense if the class-size can grow. weekdaze$studentClassSizeOverLocationCapacity: The number of students in the class, over the location@'s capacity; this makes little sense if the class-size can grow. weekdaze$bookingAtAnotherCoursesSpecifiedTime0: Maximum when if there's zero probability that course s for this  student-body 's other knowledge-requirements, will specify the proposed  booking-time. weekdaze bookingOfLocationByOtherTeachers: Maximum when the location has been booked by zero other teacher)s, tending to minimum as each additional teacher books a lesson in this location. weekdazedeviationFromTimeslotRequest3: Maximum when the proposed booking-time matches a timeslot-request for the course,, falling to minimum as the deviation rises.weekdazeinterCampusMigrationsOfStudents: Maximum when the campus for the proposed booking matches that in which the student is located in adjacent  time-slots.weekdazeinterCampusMigrationsOfTeachers: Maximum when the campus for the proposed booking matches that in which the teacher is located in adjacent  time-slots.weekdazestudentBodyCombinations2: Maximum if there's no increase in the number of  student-body-combinations for the proposed lesson/, falling towards minimum with each additional  student-body -combination.weekdazeteachersLocusOperandi: Maximum if either the teacher has no previous bookings, or their locus operandi is unchanged, falling towards minimum with large relative increases to the locus operandi.weekdazewasteOfScarceFacilities: Maximum if the proposed lesson either doesn't waste any  facilities;, or failing that merely wastes those which are ubiquitous.weekdazeThe individual criteria values, & their  weighted mean.weekdazegThe magnitude of the random perturbation; resulting in an increase or a decrease, by a factor of up to  (1 + x) .9MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~9MNOPQRSTUVWXYZ[\]^_`tabcdefghijklmnopqrsuvwxyz{|}~ None7( weekdazeIDescribes a pair of boolean values, which independently switch on or off.weekdazeThe  fecundity to use when breeding a  timetable- for subsequent deterministic reconstruction.weekdazeThe  fecundity to use when breeding a  timetable& for subsequent random reconstruction.weekdazeWThe number of candidate solutions to breed in any one generation of the evolution of a  timetable.xweekdazeUsed to qualify XML.yweekdazeUsed to qualify XML.zweekdazeUsed to qualify XML.weekdazeSmart constructor.weekdaze Constant.weekdaze Combine two 2s, returning the geometric mean of the individual s.The operation is commutative;  2https://en.wikipedia.org/wiki/Commutative_property.7 None>!){weekdaze@The type of a function which mutates timetable-criteria weights.weekdaze(The weight of criteria used to select a  timetable from alternatives.weekdazeA  timetable) is preferred, when it complies with any free time-slot preference, of student-bodies & teachers.weekdazeA  timetable& is preferred, when the mean over all booking#s, of the ratio of the size of the  student-class to the location's capacity, is greatest.weekdazeA  timetable. is preferred, when the mean over the size of  student-class$es, relative to the total number of students, is greatest.weekdazeA  timetable is preferred, when the lessons of synchronised course s are consistently synchronised.weekdazeA  timetable& is preferred, when the mean over all student-bodiesK, of their utilisation-ratio, is maximised. It doesn't distinguish between core & optional subjects like 2minimiseMeanRatioOfIncompletelyBookedCoreKnowledge & 6minimiseMeanRatioOfIncompletelyBookedOptionalKnowledge%, but it does value partially booked courses.weekdazeA  timetable is preferred, when lessons are booked close to any ideal timeslot-request for their courseH. CAVEAT: excessive weight makes it preferable to take the penalty from  or , by not scheduling a lesson if the available  time-slot#s are far from any specified ideal.weekdazeA  timetable is preferred, when students' free period.s are spread evenly across their working-week.weekdazeA  timetable is preferred, when teachers' free period.s are spread evenly across their working-week.weekdazeA  timetable6 is preferred, when the relative workload between all teachers, is similar.weekdazeA  timetable) is preferred, when the average over all students, of the number of inter-campus$ migrations in a week, is minimised.weekdazeA  timetable) is preferred, when the average over all teachers, of the number of inter-campus$ migrations in a week, is minimised.weekdazeA  timetable) is preferred, when the average over all teacher%s, of the number of changes in their location in a week, is minimised; cf. #minimiseMeanLocusOperandiOfTeachers-, which merely counts the number of distinct locations used.weekdazeA  timetable) is preferred, when the average over all teacherTs, of the size of their locus-operandi, is minimised; based merely on the number of locationCs, rather than the distance or the number of changes, between them.weekdazeA  timetable) is preferred, when the average over all student-bodies&, of the ratio of incompletely booked core knowledge-requirements4, to all requirements, is minimised. All incomplete course/s are valued equally, regardless of the extent.weekdazeA  timetable) is preferred, when the average over all student-bodies&, of the ratio of incompletely booked optional knowledge-requirements4, to all requirements, is minimised. All incomplete course4s are valued equally, regardless of the extent; cf. /maximiseWeightedMeanStudentBodyUtilisationRatio.weekdazeA  timetable: is preferred, when the average number of combinations of  student-class per lesson%-definition, is minimised; ideally a  student-body always studies a subject*, in a class composed from the same other student-bodies.weekdazeA  timetable4 is preferred, when blocks of consecutive identical lessonOs are booked, whose length most closely corresponds, to that requested for the course to which they belong.weekdazeA  timetable is preferred, when the lesson s of any course , are on any day!, booked in one contiguous block.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdaze%The ordered list of tags & accessors.weekdazeVReturns the weighted sum of the specified criteria, divided by the sum of the weights.The magnitude of each  criterion should be in the same range, so that none dominates the total, thus making the total a clear measure of the value attributed to each.#The magnitude of the value of each  criterion0 should be independent of the dimensions of the  timetable ( observerIds, day s per week,  time-slots per day), so that should any of these change, the balance between criteria doesn't shift; i.e. they should be dimensionless.weekdaze#complianceWithFreePeriodPreferences : maximum when each unallocated  time-slot' complies with the preferences of both student-bodies & teachers.weekdazeclassSizeOverLocationCapacity: maximum when location4 which has been booked, is completely filled by the  student-class.weekdazeA  timetable. is preferred, when the mean over the size of  student-class$es, relative to the total number of students, is greatest.weekdaze$synchronisationOfSynchronisedCourses: maximum if the lesson s for all synchronised courses, are synchronised.weekdaze'weightedMeanStudentBodyUtilisationRatio: maximum if all student-bodies are fully utilised.weekdaze0averageAbsoluteDeviationFromIdealTimeslotRequest: maximum if all lesson s, whose course specifies an ideal  time-slotc, have been booked exactly on it, falling towards minimum as the mean absolute deviation increases.weekdaze$dispersionOfStudentFreePeriodsPerDay3: maximum when the deviation in the number of free student-periodEs per day is zero, falling towards minimum when they all fall on one day.weekdaze$dispersionOfTeacherFreePeriodsPerDay3: maximum when the deviation in the number of free teacher-periodEs per day is zero, falling towards minimum when they all fall on one day. weekdazedispersionOfTeacherWorkload$: maximum when the deviation in the workload between teacherNs is zero, falling towards minimum as their workloads move away from the mean. weekdaze#meanInterCampusMigrationsOfStudents: maximum when each student migrates to a different campus between each timeslot. weekdaze#meanInterCampusMigrationsOfTeachers: maximum when each teacher migrates to a different campus between each timeslot. weekdazemeanLocationChangesOfTeachers$: maximum when the location of each teacher changes at every  time-slot", falling towards minimum as each lesson is taught at the same location. weekdazemeanLocusOperandiOfTeachers*: maximum when the locus-operandi of each teacher7 is just one location, falling towards minimum as each lesson taught is in a different location.weekdaze*meanRatioOfIncompletelyBookedCoreKnowledge: maximum when all of a  student-body's required core subjectCs are completely booked, falling towards minimum when none are met.weekdaze.meanRatioOfIncompletelyBookedOptionalKnowledge: maximum when all of a  student-body's required optional subjectCs are completely booked, falling towards minimum when none are met.weekdaze$meanStudentBodyCombinationsPerLesson: maximum when each  student-body studies a subject, as a member of a constant  student-class:, falling towards minimum as the mean number of different  student-body-combinations per subject rises.weekdazeratioOfConsecutiveEqualLessons/: maximum when blocks of consecutive identical lesson9s are booked, whose length equals that requested for the course to which they belong.weekdaze(ratioOfSeparatedEqualLessonsWithinAnyDay,: maximum when only one contiguous block of lesson s in any subject, has been booked each day:, falling towards minimum where separated blocks of equal lessons occur within any one day.weekdazeThe individual criteria values, & their  weighted mean.55Safe\weekdazeIThe type of the version of the configuration-file format; major to minor.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeThe default value for getConfigVersion.weekdaze#Discard irrelevant trailing zeroes.|weekdaze'The separator to use when representing  as a dotted-decimal }.weekdaze7Splits a dotted-decimal string into a list of integers.PCAVEAT: negative version-elements aren't accepted & trailing zeroes are dropped.weekdaze Represent a  ConfigVersion as a dotted-decimal string.None@A weekdazeBThe source of the string to hash, when generating the colour of a lesson in the timetable.weekdazeUsed to qualify SQL & XML.Noneweekdaze'Defines the three orthogonal axes of a  timetable.weekdaze/This axis spans the coordinates defined by the  observerId, which is one of  student-body,  location-id, or  teacher-id.weekdazeThis axis spans the days of the week.weekdaze$This axis spans the identifier of a  time-slot , within a day.weekdazeUsed to qualify XML.weekdaze)The constant complete list of all values.weekdaze-Returns those axes other than that specified.weekdaze@Returns the axis perpendicular to the orthogonal pair specified.NoneY weekdaze3Defines an axis & the direction of travel along it.weekdaze:Optionally defines the direction of travel along the axis.weekdaze&Defines which of the axes to traverse.weekdaze/Defines the direction of travel along an axis; p! being interpreted as positive & q negative.~weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdaze Interpret a sense-specification.weekdazeCConstruct a traversal which goes the other way along the same axis.weekdaze!True if the sense is ill-defined.  None.  weekdaze6Dummy data-type on which to hang instance-definitions.weekdaze2Defines the order & sense, in which the axes of a  timetable are traversed.:Each traversal is a raster-scan over the coordinates of a  timetablem, but the order in which one nests the required iterations potentially affects both the efficiency & result.eThe first axis specified changes least frequently during the raster-scan, & the last most frequently. There are  (3! * 2^3 = 48) 0 permutations, since we distinguish between the senses% in which each axis can be traversed. weekdazeUsed to qualify XML. weekdazeSmart constructor.weekdaze.True if the three specified axes are distinct. weekdazeNInvert the sense of each axis, but not their order, thus reversing the raster.weekdazeConvert from a list of axis-traversals.weekdazeConvert into a list of axis-traversals.weekdazeQThe constant list of all permutations of axis-order & sense of travel along each.weekdazehThe list of permutations of axis-order & sense of travel along each matching the supplied specification.weekdaze!True if the sense is ill-defined.            None@Aweekdaze$Define the levels of program-output.weekdazeUsed to qualify SQL & XML.weekdaze&The constant complete range of values.None%weekdaze@The perspective from which a timetable is intended to be viewed.)weekdazeUsed to qualify XML.*weekdaze&The constant complete range of values.%&'()*%&'()*[Safe weekdaze2An interface to which a set of checks may conform.weekdaze,Defines whether to check a specific feature.weekdazeDefault value for a .weekdaze$True if all switches are turned-off.None 4weekdaze0Encapsulates the data which defines the problem.6weekdazeCheck that all subjects for which there's a booking, are required by the  student-body.7weekdazeCheck that all subject6s for which there's a booking, have been offered as a course, by the referenced teacher.8weekdazeCheck that all  locationIds referenced in an imported studentViewTimetable, exist in the location-catalogue.9weekdazeCheck that all student-bodies referenced in an imported studentViewTimetable, exist in the studentBody-register.:weekdazeCheck that all  teacherIds referenced in an imported studentViewTimetable, exist in the teacher-register.;weekdaze Check for lessons booked at the same time as a meeting, with a common resource -requirement.<weekdaze Check for lesson s booked at locations lacking either adequate capacity or  facilities for their course.=weekdaze Check for student-bodies for whom more lesson"s have been booked, in a specific subject, that required by the course of which they're a part.>weekdaze Check for student-bodies for whom more lesson;s have been booked, than allocated for tuition in one week.?weekdaze Check for teachers for whom more lesson;s have been booked, than allocated for tuition in one week.@weekdaze Check for time s at which resource's have been allocated in more than one location.Aweekdaze Check for lessonDs which have been booked in runlengths shorter than required by the course of which they're a part.Bweekdaze Check that resources have been booked only on days when they're  available.CweekdazeCheck that all the teachers of a set of synchronised courses, have booked synchronous lessons.DweekdazeCheck that all days have the correct number of  time-slots.weekdazeUsed to qualify XML.EweekdazeUsed to qualify SQL & XML.FweekdazeUsed to qualify SQL & XML.GweekdazeUsed to qualify SQL & XML.HweekdazeUsed to qualify SQL & XML.IweekdazeUsed to qualify SQL & XML.JweekdazeUsed to qualify SQL & XML.KweekdazeUsed to qualify SQL & XML.LweekdazeUsed to qualify SQL & XML.MweekdazeUsed to qualify SQL & XML.NweekdazeUsed to qualify SQL & XML.OweekdazeUsed to qualify SQL & XML.PweekdazeUsed to qualify SQL & XML.QweekdazeUsed to qualify SQL & XML.RweekdazeUsed to qualify SQL & XML.SweekdazeUsed to qualify SQL & XML. 456789:;<=>?@ABCDEFGHIJKLMNOPQRS 456789:;<=>?@ABCDEFGHIJKLMNOPQRSNone'tZweekdaze0Encapsulates the data which defines the problem.\weekdazeCCheck that at least one member, can attend each meeting of a group.]weekdazeCheck that any location, specified for the meeting s of each group, has adequate capacity.^weekdazeCheck that no courses, required to satisfy a student's knowledge-requirements, specify the same  booking-time._weekdazeCheck that when more than one group requires a location , that their meeting-times are mutually exclusive.`weekdazeCheck that when more than one teacher claims a single location: as their own, their working-weeks are mutually exclusive.aweekdaze Ensure that students can migrate easily between synchronised courses, by prohibiting any teacher from offering an alternative course outside the set of synchronised courses, but with an identical subject to one of the member-courses.bweekdazeCheck that no student%-identifier belongs to more than one  student-body.cweekdaze Check for students who require zero subject"s, but have allocated one or more  time-slots for teaching.dweekdaze Check for teachers who offer zero courses required by student"s, but have allocated one or more  time-slots for teaching.eweekdazeCheck that all the  timeslot-IdMs, used to define the meeting-times of groups, are within permissible bounds.fweekdazeCheck that no teacher offers more than one course with the same synchronisationId.gweekdazeCheck whether all  facilities, referenced by those course s offered by teachers, exist in at least one location.hweekdazeCheck whether all group-ids, referenced by human-resources, exist independently.iweekdazeCheck whether all  location-id s, required for the meetings of group s, exist.jweekdazeCheck whether all  location-ids, referenced by teachers, exist independently.kweekdaze Check for students who have allocated zero  time-slot/s for teaching, but have requested one or more subjects.lweekdaze Check for teachers whose course8s are members of singleton sets of synchronised courses.mweekdazeCheck for any  student-body requiring multiple subject!s only offered within one set of synchronised courses.nweekdazeCheck for any  student-body+ whose preference for the position of free  time-slot"s, within those days when they're  available8, can never be realised because of the meeting-times of groups of which they're members.oweekdaze Check that synchronised courses don't define timeslotRequests with different ideal timeslot-ids.pweekdaze Check for synchronised course%s which require different numbers of lesson s per week.qweekdaze Check for synchronised courses which require more lessons per week, than the number of  time-slots for which all the interested student-bodies & required teachers, are simultaneously  available.rweekdaze Check for synchronised courses which have fewer lesson per week than specified  booking-times.sweekdaze Check for synchronised courses which define both ideal timeslotIds & specified  booking-times.tweekdaze Check for synchronised courses which lack sufficient  locations offering the required  facilities, which are simultaneously  available to the teachers & all interested students.uweekdaze Check for synchronised courses which specify times, on day8s when not all the interested student-bodies & required teachers, are  available.vweekdazeCheck for any teacher+ whose preference for the position of free  time-slot"s, within those days when they're  available', can never be realised because of the meeting -times of groups of which they're members.wweekdaze#Check whether there are sufficient teachers for the number of student-bodies, on each day.xweekdazeCheck whether each  student-body( can be accommodated within the largest  available location.yweekdazeCheck whether all student-bodies can be accommodated within the  available locations, on each day.zweekdaze Check that student-bodies are members of group}s which specify meeting-times (even those which don't mandate attendance), which match any of the specified booking-times of courses they must attend.{weekdaze Check that teachers are members of group}s which specify meeting-times (even those which don't mandate attendance), which match any of the specified booking-times of courses they must attend.|weekdaze Check that there are sufficient location.s, simultaneously available with at least one  student-body & at least one teacher!, to support the total number of  time-slots required for the courses offered by all teachers.}weekdazeCheck there are enough  locations, in which to book lesson s, at those times specified by different teachers.~weekdazeCheck that any location required for a group, is  available at all meeting-times.weekdaze Check that a course's minimumConsecutiveLessons doesn't exceed the number of  time-slots per day.weekdaze"Check for null identifiers in the group-catalogue.weekdazeCheck whether the location-catalogue is empty.weekdazeCheck whether the student-body register is empty.weekdazeCheck whether the teacher register is empty.weekdazeCheck that if teachers specify their own location, that there's some common  availability.weekdazeCheck that no course! is offered, which requires more lessons per week, than the teacher works.weekdaze#Check that all the members of each group, are simultaneously  available.weekdaze Check that student-bodies are  available for the meeting-times of the groups of which they're members.weekdazeCheck that no course, required to satisfy a student's knowledge-requirements, specifies any time, on a day when that student's un available.weekdazeCheck that the knowledge-requirements of each  student-body, don't specify more than one level in any topic3. This might occur legitimately where studying one subject8 for two different exams e.g. Scottish Higher & A-level.weekdaze Check that student-bodies aren't members of group!s with synchronous meeting-times.weekdaze Check that student-bodies book sufficient subjects.weekdaze Check that student-bodies don't book excess subjects.weekdaze)Check for the existence of the requested subjects.weekdazeCheck that there are suitable location s for each knowledge-requirement of each  student-body.weekdaze Check that teachers are  available for the meeting-times of the groups of which they're members.weekdaze Check that teachers aren't members of groups with synchronous meeting-times.weekdaze Check that teachers aren't members of too many groups.weekdazeJCheck that there's sufficient teaching-capacity, to satisfy the demand by student s for each subject.weekdazeCheck the range of  timeslot-ids defined, is sufficient.weekdazeCheck that all timeslot-requests reference a valid  timeslot-id.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.tZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~tZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safeweekdaze A number of  time-slots.weekdaze A number of teachers.weekdaze A number of students.weekdaze A number of locations.weekdaze A number of  timetables.weekdaze A number of days.None@AweekdazeKContains all days generally considered to be work-days rather than weekend.weekdaze%Defines the days of the working-week.weekdazeUsed to qualify SQL & XML.weekdazeLike 4, but treats the enumerable type as a circular list.weekdazeLike 4, but treats the enumerable type as a circular list.weekdazeReturns yesterday & tomorrow.weekdaze&The constant number of days in a week.weekdaze&The constant complete range of values.None@Aweekdaze The set of days on which an arbitrary resource is  available.weekdazeUsed to qualify SQL & XML.weekdaze Constant.weekdaze Constant.weekdazeSmart constructor.(Prevents one directly constructing an un available resourceV, though one can indirectly as a result of an operation which returns a new one; e.g. .weekdazeThe number of day$s per week, which can be considered  available.weekdaze,Counts non-terminal blocks of consecutive un available days.weekdaze_Returns the ratio of the available portion of the week, to the whole week (including weekends).weekdaze Returns the days on which both resources are  available.weekdaze Returns the days on which all the specified resources are  available.weekdaze Returns the days on which either resource is  available.weekdaze Returns the day s on which any of the specified resources is  available.weekdaze True if the resource is available every day.weekdazep is the resource is available on zero days. CAVEAT: an  which is completely un available, can't be constructed by , but it can result from .weekdazeTrue if the unspecified resource is available on the specified day.  None>+weekdaze?The type of any function which mutates an evolution-strategies.weekdaze2Defines the various strategies used to evolve the  timetable.weekdaze!Whether to attempt to evolve the  timetable, by unbooking the lessons of synchronised course7s, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable%, by unbooking synchronous groups of lessons for synchronised course7s, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable, by unbooking the terminal lessonOs of excessive runlengths, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable%, by unbooking groups of homogeneous student-view lesson7s, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable, by unbooking all the lessons for incomplete course s, in the  timetable for each student6, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable, by unbooking random lesson s from the  timetable6, before (deterministically, randomly) reconstructing.weekdaze!Whether to attempt to evolve the  timetable, by unbooking lessons whose student-classes" have been composed from a single  student-body6, before (deterministically, randomly) reconstructing. weekdaze!Whether to attempt to evolve the  timetable, by unbooking runlengths of lesson)s which occur in split sessions within a day6, before (deterministically, randomly) reconstructing. weekdaze!Whether to attempt to evolve the  timetable, by unbooking lessons for a course, whose student-classes6 have been composed from more than one combination of student-bodies6, before (deterministically, randomly) reconstructing. weekdaze!Whether to attempt to evolve the  timetable&, by unbooking a whole day, from each studentViewTimetableForWeekC in isolation, before (deterministically, randomly) reconstructing. weekdaze!Whether to attempt to evolve the  timetable3, by unbooking a small number of randomly selected lesson s, from each studentViewTimetableForWeekC in isolation, before (deterministically, randomly) reconstructing. weekdaze!Whether to attempt to evolve the  timetable6, by unbooking groups of synchronous of heterogeneous lessons.weekdaze*The number of random trials to perform in .weekdazeThe number of  time-slots to randomly unbook in .weekdazeThe optional number of days to unbook in  ; if $ then all possible values are tried.weekdaze*The number of random trials to perform in  .weekdazeThe number of  time-slots to randomly unbook in  .weekdaze6The factor (in the closed unit-interval) by which the  fecundity_ of the breeding-program for future generations, is multiplied (& therefore reduced), when the population-diversity ratio falls beneath .weekdazeThe population-diversity ratioA (in the closed unit-interval), beneath which a reduction in the  fecundity@ of the breeding-program for future generations, by a factor of , is triggered.weekdazeXThe initial number of candidates to select from each generation in the evolution of the  timetable; if W then all candidates measuring equal best & better than their parent, will be selected.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML. weekdazeUsed to qualify XML.!weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML."weekdazeUsed to qualify XML.#weekdazeUsed to qualify XML.$weekdazeUsed to qualify XML.,      !"#$%&'()*+,      !"#$%&'()*+None>9Z-weekdaze)The type of a function used to transform 2.2weekdaze6Encapsulates the data which drives the implementation.4weekdazePThe extent to which various strategies are applied, in an attempt to evolve the  timetable.5weekdaze.Optionally define either the order in which a  timetable{'s axes are traversed during construction of the initial deterministic solution or a path to a file from which the initial StudentView.Timetable.TimetableI can be read; the default is to perform all traverses, & select the best.6weekdazeTOptionally seed the pseudo-random number-generator to produce a repeatable sequence.7weekdazeWhether & how to optimise the weights of lesson-criteria by maximising the weighted mean of timetable-criteria for the initial deterministic timetable.8weekdaze5The weight associated with criteria used to select a lesson', at a specific time-coordinate in the  timetable.9weekdaze-Whether to permit a temporary merger between student-bodies, to permit a teacher & location$ to be shared for the duration of a course.:weekdazeWhether to permanently merge student-bodiesY with identical profiles, thus reducing the number of independently schedulable entities.;weekdazeWhether to remove any courses' offered, which aren't required by any student.<weekdazeWhether to remove groups from the group-catalogue, for which zero meetings have been timetable.=weekdazeWhether to remove groups from the group-catalogue, to which neither student-bodies nor teachers have subscribed.>weekdaze7The weight associated with criteria used to evaluate a  timetable, during optimisation.?weekdaze#Whether to zero the weight of each lesson-criterion & timetable-criterion, & the  fecundity of each evolution-strategyE, which is either inappropriate for, or irrelevant to, the specified problem-parameters.@weekdazeWhether to remove course s for which there's zero demand.AweekdazeWhether to automatically merge student-bodies with identical profiles.BweekdazeWhether to permit student-bodies to be temporarily merged for a lesson.Cweekdaze@A seed from which to construct a pseudo-random number-generator.weekdazeOne can either define the raster-scan by which the initial solution is constructed, or specify an XML-file containing the initial solution.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.DweekdazeUsed to qualify XML.EweekdazeUsed to qualify SQL & XML.FweekdazeUsed to qualify SQL & XML.GweekdazeUsed to qualify SQL & XML.HweekdazeUsed to qualify SQL & XML.IweekdazeUsed to qualify SQL & XML.JweekdazeUsed to qualify SQL & XML.KweekdazeUsed to qualify SQL & XML.LweekdazeMutator.If student-bodies1 can be temporarily merged, allowing the size of  student-classres to grow, then there's no obvious advantage to fitting this transient class-size to either the capacity of the location. or to any maximum class-size defined for the course; so X & WY aren't relevant, equally if student-bodies can't be merged, then synchronous identical lessonBs are permissible, so there's no point trying to promote them via O.Alternatively, if student-bodies/ can't be temporarily merged into a variety of student-classes%, then there's no concept of either ^ or .MweekdazeMutator.NweekdazeMutator.OweekdazeMutator.PweekdazeMutator.QweekdazeMutator.RweekdazeMutator.SweekdazeMutator.TweekdazeMutator.UweekdazeMutator.VweekdazeMutator.WweekdazeMutator.XweekdazeMutator.YweekdazeMutator.ZweekdazeMutator.[weekdaze True if a (traversalOrder, input file-path) was specified.*23945678:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[*CBA@23945678:;<=>?DEFGHIJKLMNOPQRSTUVWXYZ[NoneFgcweekdaze"Describes a map indexed by unique resource -identifiers.dweekdaze:Describes a finite resource, or group of finite resources.gweekdazeThe number of day s in any week, on which all the resources are simultaneously  available.hweekdazeTrue if on any day , all the resource/s are regularly scheduled to be simultaneously  available.weekdaze Returns the days on which all the specified resources are  available.iweekdazeExtract those resource#s from the map provided, which are  available on the specified day.eweekdaze The set of days on which the resources are all regularly  available to be booked.fweekdazeTrue if on the specified day, all resource s are regularly scheduled to be  available.cdefghidefcghiNoned.oweekdazeA collection of distinct  location-ids.pweekdazeA measure of the capacity & specific  facilities, which are available at a location!, but are unused in some context.qweekdazeAggregates the attributes of a locationH, which a generalisation of a room, since it also includes games-fields.rweekdazeUTypically the number of seats. N.B.: though the games-field has a rather ill-defined capacity, the changing-rooms don't.sweekdazeThe location may advertise  facilities to support specific activities.tweekdazeThe location may have a periodic  availability.uweekdaze Proximate  locations are grouped into campus1es, between which intra-day migration is trivial.vweekdaze*The set of facility-names advertised by a location.wweekdazeA subject -specific facility7, e.g. "desks", "musical instruments", or "goal-posts".IThe specific string used to designate these must match those defined for courses.weekdazeUsed to qualify XML.xweekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.yweekdazeUsed to qualify SQL & XML.zweekdazeUsed to qualify SQL & XML.{weekdazeUsed to qualify XML.|weekdazeThe default value for  facilityNames.}weekdazeSmart constructor.~weekdaze True if the q) meets or exceeds the specified criteria.Takes no account of either  availability or campus.weekdaze True if the location has some facilities.weekdaze Accessor.weekdaze Accessor.weekdazeMeasures the excess capacity & unused  facilities, of the specified location.All  facilities are considered equal. CAVEAT: each location must have previously passed ~.weekdazeConvert p to a pair of ratios.weekdazeThe relative extent to which capacity &  facilities are used.weekdaze The required capacity.weekdaze The required  facilities.weekdazeThe location whose  resources& are to be compared with requirements.opqrstuvwxyz{|}~wvpoqrstuxyz{|}~None>m weekdazeThe complete set of locations, indexed by their  locationId.weekdazeUsed to qualify XML.weekdaze Accessor.weekdazeCount the total available day s, of those locations offering each type of facility.weekdazeCount the number of distinct campuses which have been configured.weekdaze Whether all locations exist on the same campus.weekdazeExtracts the set of distinct  facilities, from the catalogue.weekdaze Find those  locations. which meet or exceed, the specified criteria.weekdaze True if any location offers any  facilities.None@Auweekdaze@The human-resource's preference for the position of unallocated  time-slots, within any working day.weekdazeA preference for unallocated  time-slot!s to precede the first allocated lesson of the day.weekdazeA preference for unallocated  time-slots to follow the last allocated lesson of the day.weekdazeA preference for unallocated  time-slot2s to either precede the first or follow the last, lesson of the day.weekdazeUsed to qualify SQL & XML. None>Y weekdaze Arbitrary times, categorised by day.weekdazeAn arbitrary set of Times.weekdaze$Defines the coordinates of specific  time-slot, within a given week.weekdaze Accessor.weekdaze Accessor.weekdaze Constructor.weekdazeUsed to qualify XML.weekdazeCalculates the number of  time-slot,s in a week, when provided by the number of  time-slots per day.weekdazeThe signed distance between  time-slots.weekdazeThe absolute distance between  time-slots.weekdaze Shift the  time-slot# by the specified number of places.weekdaze Shift the time by the specified number of  time-slots.weekdaze3Categorise the specified times, according to their day. CAVEAT: some dayHs have zero meetings, & therefore don't have a key in the resulting map.  !NoneZweekdazeAn ordered sequence of .weekdazeEach  time-slot in a  timetableG is defined by three coordinates, though the two temporal coordinates (day &  timeslot-id$) have been paired to form a pseudo time. The third  coordinate , which depends on the intended observer, separates the weekly  timetable, for one observer, from those for all other  observers of the same type.DThe whole structure can be visualised as a cuboid, with an optional lesson& defined at each Cartesian coordinate.weekdaze Accessor.weekdaze Accessor."NoneXyweekdaze Generate the $ defining a raster-scan through the  time-slot's in a  timetable.The first axis specified, changes the least frequently during the raster-scan, & the last specified, changes the most frequently.weekdaze2Defines the order & sense, in which the axes of a  timetable are traversed.weekdaze Defines the keys into the outer map of a  timetable.weekdaze!Defines the keys in the enclosed array.#NoneNweekdazeThe group s to which a human-resource belongs.weekdazeAggregates the attributes of a group.weekdaze<The list of meeting-times required of members of this group.weekdazeZThe optional (it might be a teleconference, or there might currently be no meeting-times) location$ at which all meetings will be held.weekdaze=Whether each group-member is required to attend all meetings.weekdazeNames a group to which human-resource may belong.weekdazeUsed to qualify XML.weekdazeUsed to qualify CSS, SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeThe default value for .weekdazeThe default value for .weekdazeSmart constructor.weekdazeCounts the number of  time-slots per week required for meeting s of this group.CAVEAT: this total is independent of the individual member, but if attendance isn't mandated, it should be reduced according to individual availability.weekdaze Whether the meetings of the specified group have a designated location.  $NoneRweekdaze Describes a resource, which is also a person.weekdazeUsed to qualify XML.weekdazeThe default value for .weekdazeThe number of  time-slots in each week, that this resource is regularly scheduled to be  available.weekdazeFinds the set of groups, of which at least one human-resource claims membership.weekdazeIdentify those human-resources, in the specified resource"-map, who belong to the specified group.weekdaze'Get the union of all group-memberships.weekdaze Whether the human-resource: has specified a preference for the position, within each day on which they're  available , of free  time-slots.weekdazeThe number of  time-slots per day.weekdazeThe number of those  time-slotDs when the person is available, devoted to teaching or being taught.weekdazeThe number of  time-slots per day.weekdazeThe number of those  time-slot~s when the person is available, devoted to any activity other than teaching; e.g. lunch, meetings, administration, free-study.weekdazeThe groups to which this human-resource belongs.weekdaze,Any preference for the position within each day, of unallocated  time-slots.  %None>weekdazeA map indexed by a group-id, of  resource-ids.weekdazeThe complete set of  , indexed by .weekdazeUsed to qualify XML.weekdazeExtracts the set of distinct  locationId s, from the group-catalogue.weekdazeGather the set of  meeting-time(s corresponding to the specified set of groups.&NoneweekdazeBDefines a concept over the two Cartesian axes used to graph it by time.weekdaze Accessor.weekdaze Accessor.weekdaze Constructor.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.'Noneweekdaze5Defines the style in which the timetable is rendered.weekdazeThe views from which to display the  timetable.weekdaze(Optional URL to a Cascading Style-Sheet.weekdazeOptions to merge duplicate lessons between adjacent days, & between consecutive  time-slot4s respectively, in the presentation of the solution.weekdazeOptions to display day &  timeslot-id? axis-labels respectively, in the presentation of the solution.weekdazeWOption to display both warnings & the runtime-log, in the presentation of the solution.weekdaze<Option to augment the output with supplementary information.weekdaze The set of dayGs generally considered to constitute the weekend rather than work-days.weekdaze$Whether to generate the colour of a lessonS from one of its attributes or to delegate colouring to the CSS-file specified via .weekdaze5The attribute from which to generate the colour of a lessonT & the minimum acceptable contrast-ratio wrt to its complementary background colour.weekdaze8Whether to display the runtime-log in the output markup.weekdaze8Whether to display the runtime-log in the output markup.weekdazeLWhether to apply a concept to each of the two Cartesian axes of a timetable.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL.weekdazeUsed to qualify SQL.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeDefault value.weekdazeSmart constructor.weekdazeThe views from which to display the  timetable, when rendering as xhtml.weekdazeThe optional URL to a CSS-file.weekdazeThose day<s of the weekend, which may be visually distingished by CSS.(Noneweekdaze.Defines the alternative output-formats of the  timetable.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdaze Accessor.)None%weekdaze1The format associated with a specified file-path.weekdazeThe special file-path , will be interpreted as stdout.weekdaze1A special file-name interpreted as a request for stdout.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeSmart constructor.weekdaze`A path to a file, into which the unprocessed configuration, formatted as XML, should be written.weekdaze<The number of decimal digits with which to log the value of lesson-criteria & timetable-criteria.*None weekdaze Defines the ideal time-slot on any day, or the specific time#s in each week, at which to book a lesson of a specific course. weekdazeBook as close to the specified  time-slot" as possible, but on an arbitrary day.weekdazeBook at the specified times in each week; any remaining lesson required for the course are booked at arbitrary times.weekdazeUsed to qualify Output & XML.weekdazeUsed to qualify Output & XML.weekdazeUsed to qualify Output & XML.weekdaze@Accessor, which returns a default value for data constructed by .weekdaze@Accessor, which returns a default value for data constructed by  .weekdazeCounts the number of specified times.weekdazeCounts the number of discrete day s specified.weekdazeTrue when the timeslot-request was constructed by  .weekdazeTrue when the timeslot-request was constructed by CAVEAT: the set of specified times may still be null.weekdaze!True if there are zero specified times. CAVEAT: an ideal time-slot may still have been defined.weekdazeTrue if the specified time is one of those requested.weekdazeTrue if one of the specified times falls on the specified day.weekdaze The ascending list of specified time s, for each day.CAVEAT: the specific day] is dropped from the results, & the results don't include those days on which there're zero timeslot-requests.weekdaze>Find the set of distinct run-lengths of consecutive specified times, occuring within any single day.    \Safe$weekdaze#The minimum & maximum duration, in  time-slots.weekdaze The origin.weekdaze Accessor.weekdaze Accessor.weekdazeAdd the specified bounds.6+Safe  weekdazeMerely aids self-documentation.!weekdazeThe suffix used for CSS-files."weekdazeA CSS class-label, for an HTML box.#weekdaze+A CSS class-label, denoting console-output.$weekdaze&A CSS class-label, for arbitrary data.%weekdaze&A CSS class-label, for arbitrary data.&weekdaze=A CSS class-label, denoting some form of informative message.'weekdaze9A CSS class-label, denoting some form of warning message.(weekdaze&A CSS class-label, for the individual  timetable& for a week, as seen by some observer.)weekdaze#A CSS class-label, for a view of a  timetable for the week.weekdazeKAn identifier in CSS, can only be composed from a restricted character-set.,CAVEAT: valid HTML-identifiers also include : & .*weekdaze;Normalises an arbitrary string into a valid CSS-identifier. 1http://www.w3.org/TR/CSS2/syndata.html#characters  !"#$%&'()*  "!#$%&'()*,SafeoweekdazeA CSS class-label, for an HTML button.+weekdaze3Create a button to show/hide the specified element.,weekdazeMake an XHTML div), which labels & classifies the contents.-weekdazeMake an XHTML span), which labels & classifies the contents.+weekdaze/Whether the element is initially displayed; if q[, the caller should insert 'Text.XHtml.Strict.thestyle "display: none"' into their element.weekdaze(The name of the element to show or hide.+,-+,--None@A/weekdaze@Define a concrete type for the identifier of a time-slot in any day.weekdazeUsed to qualify XML & CSS.0weekdaze Constructor./0/0.None@A]:weekdaze0Define a concrete type for the identifier for a teacher.weekdazeUsed to qualify XML & CSS.;weekdaze Constructor.:;:;/None@A!Cweekdaze6Define a concrete type for the identifier of a set of courses, whose heterogeneous lessons must be synchronised.weekdazeUsed to qualify XML.Dweekdaze Constructor.CDCD0None@A#Kweekdaze+Define a concrete type for the stream of a student.weekdazeUsed to qualify XML & CSS.Lweekdaze Constructor.KLKL1None@A&-Uweekdaze0Define a concrete type for the identifier for a location.weekdazeUsed to qualify XML & CSS.Vweekdaze Constructor.UVUV2None@A(h^weekdaze*Define a concrete type for the level of a topic.weekdazeUsed to qualify XML & CSS._weekdaze Constructor.^_^_3None@A*gweekdaze0Define a concrete type for the identifier for a campus.weekdazeUsed to qualify XML.hweekdaze Constructor.ghgh4None>6U qweekdazeA collection of distinct rs.rweekdaze4The subject which is being either taught or learned.sweekdazeThe topic3 of study, which would typically be something like Maths or English/, but it could be something non-academic, like Games; but it shouldn't be either Assembly or Lunch2, since these aren't required to have exactly one teacher in attendance.tweekdazeThe level at which this topica is being taught; which may be merely the academic year, or a finer-grain concept representing a topic-specific stream.uweekdazeThe type of the topic of study.vweekdazeUsed to qualify CSS & XML.wweekdazeUsed to qualify CSS, SQL & XML.xweekdazeUsed to qualify CSS, SQL & XML.yweekdazeSmart constructor. qrstuvwxy uqrstvwxy5None@UweekdazeA potentially undefined lesson.weekdazeDefines a potential booking of the resources required to teach a subject.It doesn't specify the  time-slotN at which it's to be booked, because that's defined by it's position within a  timetable.A  timetable composed from these lessons, can be viewed by either a location, student or teacher, so  is polymorphic.weekdazeHThe concrete type depends on whether viewed from the perspective of the location, student or teacher.weekdazeThe subject to be taught.weekdazeUsed to qualify output.weekdazeUsed to qualify CSS & XML.6None}"weekdazeA list associated by lesson, of lists associated by  timeslotId.weekdazeA runlength-encoded list of lessons.weekdaze*An association-list keyed by the starting  timeslotId@, of runlength-encoded generalised (i.e. potentially undefined) lessons.weekdazeA runlength-encoded list of  time-slots.weekdazeEA runlength-encoded list of generalised (i.e. potentially undefined) lesson.weekdazeA lesson qualified by the  time-slot at which it is booked.weekdazeThe association on which  is based.weekdazeCThe ordered sequence of time-slots within a single unspecified day.-The sequence of time-slots are contiguous; double lesson-s are representated by consecutive duplicate lesson-definitions, free-periods are represented by .Each time-slot has a specific unspecified start-time & probably a constant duration; but that depends on the school, so no such assumption is made here.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdaze Accessor.weekdaze Accessor.weekdaze True if the  time-slot has been booked.weekdaze+Defines a pickler to convert the specified  timetable to, or from, XML.weekdaze Accessor.weekdaze Accessor.weekdaze#Constructor. Create an unallocated  timetable, for any single day.weekdaze/Bisect the association-list extracted from the , at the specified  timeslotId>, to form two lists, those before & those after the specified  time-slot.The list of earlier  time-slot>s is reversed, as though looking backwards from the specified  time-slot.)CAVEAT: the association at the specified  timeslotId isn't returned in either half.weekdazeGet any lesson(s immediately adjacent to the specified  time-slot.The relevance is that adjacent lesson9s can typically be replicated, to form a longer duration lessonE, but duplication of a non-adjacent one, would leave an awkward gap.weekdazeLDefines the (lower & upper) bounds, & measures the span-length, of adjacent lessons, equal to that referenced.CAVEAT: if an undefined  time-slot1 is referenced, then the run-length of undefined  time-slots will be measured.weekdaze Defines the  timeslotId+-interval, delimiting the span of adjacent lessons, equal to that referenced.weekdazeReturns the list of  timeslotIds where lesson's equal to that referenced, are booked.weekdaze,Measures the length of the span of adjacent lessons, equal to that referenced.weekdazeTrue if the specified subject has already been booked at any  time-slot in today's  timetable.weekdazeIdentifies unallocated  time-slots. CAVEAT: doesn't account for the  availability of the resource, or whether any  time-slots has been reserved for meetings.weekdaze Counts the  time-slot s which haven't been yet booked. CAVEAT: doesn't account for the  availability of the resource, or whether any  time-slots has been reserved for meetings.weekdazeDefine a single lesson in the  timetable.weekdazeSMeasures run-lengths of consecutive equal generalised (i.e. potentially undefined) lessons.!Includes consecutive unallocated  time-slot$s & trivial sequences of length one. CAVEAT: the  coordinates( of each runlength aren't explicit; see .weekdazeCalls  & derives the  coordinates of the start of each runlength.weekdazeVFinds separated equal (according to the attribute returned by the specified accessor) lessons; separated unallocated  time-slots don't qualify.CAVEAT: discards the  coordinates at which each lesson was booked.weekdazeFinds separated equal lessons; separated unallocated  time-slots don't qualify.CAVEAT: discards the  coordinates at which each lesson was booked.weekdazeFinds separated lesson s of equal subject.CAVEAT: discards the  coordinates at which each lesson was booked.weekdaze$Finds runlengths of separated equal lessons; separated unallocated  time-slots don't qualify.(Returns a list associated by the common lesson", of lists associated by starting  timeslotId, of runlengths.weekdaze8Measure the ratio of those free (neither reserved for a meeting nor booked with a lesson)  time-slotLs which comply with the specified preference, to the total number of free  time-slots.weekdazeThe identifier of the  time-slot- at which to measure the run-length of equal lessons.weekdazeThe identifier of the  time-slot- at which to measure the run-length of equal lessons.weekdazeThe identifier of the  time-slot- at which to measure the run-length of equal lessons.weekdazeThe identifier of the  time-slot- at which to measure the run-length of equal lessons.weekdaze Accessor.weekdazeThe  timeslotIdAs of meetings, for the groups of which this observer is a member.7NoneweekdazeAn interface to which users of resources can conform.weekdazeCheck whether the specified lesson< is compatible with the incumbent collection of synchronous lessons.Each of the incumbent lesson+s must either be identical to the proposed lesson, or use completely different resources.#This property allows the specified lesson to be booked into a  timetable at the same time.CAVEAT: performance-hotspot.weekdazep if all the listed lesson"s are identical, or none of their  resource-Id s are common.CThis property allows them to co-exist, when booked into the weekly  timetables of distinct observers, but at the same time.>CAVEAT: is pretty inefficient; all we're really want to do is nub the list of lesson&s, then check that neither of the two resources per lessonB, is used more than once, it's just that we can't access the two resource.s, because they're behind the class-interface.weekdaze Whether the resourceJs used by the first instance, are independent of those used by the second.weekdaze The proposed lesson.weekdazeThe lessons already booked in the  timetable, at the proposed time.8NoneweekdazeComposed from both the  locationId &  teacherId.weekdazeThe identifier for the location at which the class will be held.weekdazeThe identifier for the teacher instructing this class.weekdazeUsed to qualify XML.9NoneweekdazeA , specialised for viewing by a student.:Noneweekdaze#Specialise for the case in which a lesson% is viewed from the perspective of a  student-body.;Noneweekdaze&The details of a booking, of either a lesson or nothing, at a  coordinate , in the  timetable for an observer.weekdaze Accessor.weekdaze Accessor.<NoneweekdazeThe attributes of a student.weekdaze_The common academic year & potentially also the topic-independent ability-stream of the member-students.weekdazeThe core & optional subject+s required for the education of the member-students.weekdazeStudent,s are typically unavailable at the weekends.weekdazeNThe ratio in the semi-closed unit-interval (0,1], of the time when the member-students are available, which is allocated to tuition; the remainder by inference being allocated to free study (as often required by final year students), or meetings.weekdaze The member-student"s may meet regularly with various groups.weekdaze,Any preference for the position within each day, of unallocated  time-slots.weekdazeA specification of subject1-requirements, partitioned into those considered core & the optional remainder.weekdazeuA unique identifier, which may be merely their name, or more likely a registration-number of some unspecified format.Though arbitrary, a string% adequately covers all possibilities.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeThe default value for .weekdazeA combination of the core & optional knowledge-requirements.weekdazeSmart constructor.weekdazeGet the core & optional subject-requirements.weekdaze True if the student has any core subject-requirements.weekdaze True if the student has any optional subject-requirements.weekdaze True if the student is interested in a subject', according to the specified predicate.weekdaze&Unsubscribe from the specified set of groups.weekdazeThe stream for this student.weekdazeThe subject s to study.weekdazeThe days on which this student can attend school.weekdazeThe portion of the  working-week allocated to tuition.weekdazeThe groups of which this student is a member.weekdaze9Any preference for the position within each day, of free  time-slots.weekdaze Predicate.=Noneӥ weekdaze A group of students with identical profile$s; i.e. with identical requirements.rBecause this data-type forms part of the results for the application, & can become excessively verbose, a concise mnemonic is provided.weekdazeA mnemonic for the whole  student-body; e.g. "2/B" or Remedial.weekdazeThe identifiers of the member-students.weekdazeThe type the member-students.weekdaze$The type of the mnemonic by which a  student-body is known.weekdazeUsed to qualify CSS & XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeSmart constructor.weekdaze Deconstruct.weekdazeThe number of students in the body.  >NoneׇweekdazeAn ordered sequence of .weekdaze7Defines the three coordinates of a time-slot, within a  timetable designed to be viewed by a student.weekdaze Timetable is designed to be viewed by a  student-body.?NoneweekdazeThe attributes of a course.weekdazeThe subject is assumed to take a minimum time-duration to teach, & for ease of scheduling, we assume that this is divided into a constant number of lesson s per week.weekdazeBThe specific strings used to designate these, must match those in q.weekdaze Either the ideal time-slot or the specified times, at which to book lesson s in this course.weekdazeSome topic;s may require too great a preparation-time for an isolated lesson to be practical; e.g. "games", or possibly "cookery". The specified value represents an ideal number of periods, which can be exceeded if necessary.weekdaze*The optional upper bound on the number of students for whom the teacher$ can cater; which is independent of r.weekdaze#The optional identifier, shared by courses whose bookings must be synchronised.weekdazeUsed to qualify Output & XML.weekdaze"Used to qualify Output, SQL & XML.weekdaze"Used to qualify Output, SQL & XML.weekdazeUsed to qualify Output & XML.weekdaze"Used to qualify Output, SQL & XML.weekdazeThe default value for .weekdazeSmart constructor.weekdazeGet the number of studentE-places, when accounting for the capacity-limits imposed by both the course & the location; but not for any students already booked.weekdazeThe required lessons per week0 would typically be an integral multiple of the minimum consecutive lessonsQ, but otherwise some sessions must be longer to absorb the fractional remainder.Ideally the required number of lessons would be divided equally amongst the maximum possible number of sessions, to make the session-durations as equal as possible.bThis function returns that ideal mean fractional duration, of the integral session-durations. Eg:  requiredLessonsPerWeek minimumConsecutiveLessons isolated sessions ideal mean session-duration ====================== ========================= ================= =========================== 7 2 3 7/3 == 2.33 7 3 2 7/2 == 3.5 7 4 1 7 11 3 3 11/3 == 3.67~CAVEAT: when the ideal is non-integral, it can never be achieved in practice; deviations from this ideal of less than half a  time-slot, are therefore insignificant.weekdazep if the course is in the required subject & its teacher& can cater for the required number of students.weekdazeTrue if times have been specified.weekdaze True if the course requests booking of a lesson at the specified time.weekdaze!True if the one of the specified time s for the course, falls on the specified day.weekdaze True if zero lesson s of the course are to be booked at specified times.weekdaze True if all lesson s of the course are required to be booked at specified times.weekdaze True if the day s on which lessons must be booked, is known.bCAVEAT: this result doesn't account for the case where multiple times have been specified for one day&, but can't be booked as one span of minimumConsecutiveLessons+ because of the extent of the gaps between.weekdaze True if all booking.s require more than one consecutive identical lesson.weekdazeCount the total number of lessonZs implied by specifically requested times, assuming that a split session isn't acceptable.weekdaze True if the courseX specifies times which can't be satisfied without splitting the session in at least one day.weekdaze True if the course references a synchronisationId.BCAVEAT: doesn't account for the possibility that this is the only course to reference this specified synchronisationId.weekdazeThe topic & level at which it is to be taught.weekdazeThe required number of  time-slot s per week.weekdaze#The set of things required for the course.weekdazeThe ideal time-slot or specified times, at which to book lesson s in this course.weekdaze"The minimum number of consecutive  time-slot#s required for any booking in this subject.weekdazeThe maximum class-size.weekdaze$The optional identifier of a set of course s, whose lessons must be synchronised.@NoneNK weekdazeThe service offered by a teacher. weekdaze The set of course s offered.weekdazeA teacher may have their own personal location (i.e. a  form-room).GAbsence of this field implies that they're nomadic, & may use any free  locationId, appropriate for the course!; however inconveniently located. A personal location" can't be assumed to have all the  facilities required for the service offered.#CAVEAT: it's conceivable that some teacher s share a location$, but each one still only uses that location.weekdazeA teacher may be part-time.weekdaze;The maximum ratio, in the closed unit-interval [0,1], of a teacher's working week (rather than the whole week), which is devoted to teaching. The remainder may be administration or attendance at meetingsa. This concept may also be required, to allow ad-hoc re-scheduling, to compensate for absentees.This concept differs from a part-time teacher, who teaches for a static contractually specified portion of the week.When the type-parameter is a Rational$ & the denominator is the number of lessonFs per week, specification is in the basic time-units of the timetable.uThe value can't be exceeded, but may not be reached, thus allowing at least the required time for the administration.weekdazeA teacher! may meet regularly with various groups.weekdazeA teacher may specialise in a specific topic!, rather than being a generalist.weekdazeA teacher4 may have a preference for the position within each day, of unallocated  time-slots.weekdazeA teacher offers a set of courses.:Whilst they may perform a reserve-role in some additional subject!, this isn't going to affect the  timetable.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeThe default value for  .weekdazeSmart constructor.weekdaze Extract any course from the specified profile, which matches the specified subject.weekdaze Extract any course from the specified profile, which matches the specified subject% & caters for the required number of students.weekdazeFind the set of all specified times, for any of the course s offered.weekdaze True if the teacher offers a course in the required subject( & can cater for the required number of students.weekdazeTrue if the specified teacher makes any ideal timeslot-request amongst the courses offered in their service.weekdazeTrue if the specified teacher makes any specific time-request amongst the courses offered in their service.weekdazeTrue if the specified teacher claims any topic as their specialty.weekdazeTrue if the specified teacher claims the specified location as their own.weekdaze True if the teacher specializes in the specified topic.weekdazeTrue if the specified teacher offers any synchronised course. weekdaze True if the teacher offers one or more course s in their service.!weekdaze&Unsubscribe from the specified set of groups.weekdaze The set of course s offered.weekdazePersonal classroom.weekdazeThe days on which the teacher is contracted to work.weekdazeAThe maximum ratio of a working-week actually devoted to teaching.weekdazeThe groups of which this teacher is a member.weekdazeSpecialty topic.weekdaze,Any preference for the position within each day , of free  time-slots.   !  ! ANone>z*weekdazeThe type returned by @subjectsOfferedInMultipleCoursesRequiringDifferentLessonsPerWeek.+weekdazeA map indexed by synchronisationId, of ,.,weekdazeA map indexed by  teacherId, of courses.-weekdazeThe complete set of   , indexed by  teacherId..weekdazeUsed to qualify XML./weekdaze Accessor.0weekdaze Accessor.1weekdazeExtracts the set of all  s, from the teacher-register.2weekdazeExtracts the set of distinct  locationId s, from the teacher-register.3weekdazeExtracts the set of all r s, from the teacher-register.weekdaze&Extracts the set of distinct required ]^ s, from the teacher-register.4weekdazeDetermine the total number of lessons required for each subject, according to the  s offered. Since each course! may be offered by more than one  teacherId<, the actual workload can only be constrained within bounds.5weekdaze Find those teacher s offering a course in the specified subject.6weekdazeThe sum of the number of days worked by each teacher.7weekdazeThe total number of lesson"s per week, required by all those courses requiring each facility. CAVEAT: all courseAs are counted, not just those for which there's some demand from students.8weekdaze True if a teacher" typically inhabits the specified  locationId.9weekdazeReturns courses which reference a synchronisationId, indexed by that synchronisationId, sub-indexed by the  teacher-Id who offers them. CAVEAT: If a teacher erroneously offers two courses with the same synchronisationId+, then the second will overwrite the first.CAVEAT: course+s are returned irrespective of whether any student requires them.:weekdazeReturns the set of courses corresponding to each synchronisationId2, irrespective of whether they're required by any student.;weekdaze True if any teacher has specified a free-period preference.<weekdaze True if any teacher has offered a synchronised course in their service.=weekdaze True if any teacher has requested an ideal timeslot in their service.>weekdaze True if any teacher has specified a maximum class-size in their service.?weekdaze True if any teacher has requested a  specific time in their service.@weekdaze True if any teacher has requested a  specific time in their service.Aweekdaze True if any teacher has requested an ideal timeslot in their service.BweekdazeFind the set of all specified time s, for any course, offered by any teacher.CweekdazeFinds subjects offered by more than one teacher , but as courses requiring different lesson s per week.DweekdazeATightens the constraints on each member of a set of synchronised course@s, to a level compatible with the requirements of other members.5weekdazeThe number of students, who need to be placed.*+,-./0123456789:;<=>?@ABCD-,+*.4612359:BCD7/0;<=>?@A8BNoneEweekdazeUsed to separate mnemonics, when merging a  student-class into a  student-body.Fweekdaze Whilst a  student-bodyC represents a group with identical requirements, when one or more student-bodies( have similar requirements for a single subject,, they can be temporarily merged to form a class.GweekdazeUsed to qualify XML & CSS.Hweekdaze/Remove the boundaries separating the groups of student#s within a class, to form a single  student-body."The mnemonics for the constituent student-bodies; are concatenated to form a composite mnemonic for the new  student-body. CAVEAT: any  student-Ids common to more than one  student-body within the  student-class, will be merged.NCAVEAT: a null set, will result in a null mnemonic, which will be rejected by .IweekdazeCounts the number of student s in a class.CAVEAT: assumes that the student-bodies1, from which the class is composed, are distinct.JweekdazeConvert to XHTML.EFGHIJFEGHIJCNoneKweekdazeComposed from both the  locationId & F.LweekdazeThe identifier for the location at which the class will be held.MweekdazeThe class of students to be taught.weekdazeUsed to qualify XML.NweekdazeSmart constructor.OweekdazeConvert from the student -view to a teacher-view.PweekdazeConvert from the teacher -view to a student-view.NweekdazeThe identifier of the location at which the  student-class is to be taught.weekdaze The class of students to be instructed.KLMNOPKLMNOPDNoneXweekdaze#Specialise for the case in which a ' is viewed from the perspective of the teacher.YweekdazeConvert from the student -view to a teacher-view.ZweekdazeConvert from the teacher -view to a student-view.XYZXYZENone>f [weekdaze"Defines the set of output-options.\weekdaze1Defines the formats of the required output-files.]weekdazeOptional path to a file, into which the unprocessed configuration, formatted as XML, should be written (obliterating any existing file-contents).^weekdaze>The precision to which fractional auxiliary data is displayed._weekdaze1The separator used when merging the mnemonics of student-bodies.`weekdaze3Set the threshold for ancillary information-output.aweekdazeA number of decimals digits.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.bweekdazeUsed to qualify SQL & XML.cweekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.dweekdazeSmart constructor.dweekdaze)The formats in which to file the results.weekdazejAn optional path to a file, into which the unprocessed configuration, formatted as XML, should be written.weekdaze<The number of decimal digits with which to log the value of lesson-criteria & timetable-criteria.weekdazeThe separator to use when student-bodiesG with identical profiles have been merged automatically during runtime.weekdaze$The amount of auxiliary data to log. [\]^_`abcd a[\]^_`bcdFNonea weekdazeA function used to mutate a k.kweekdazeA map indexed by time , of sets of meetings.lweekdazeDefines a potential booking of the resources required for a group to meet. It doesn't directly specify the  time-slotN at which it's to be booked, because that's defined by it's position within a  timetable.mweekdazeThe name of the group which is meeting.nweekdaze The optional locationQ at which the meeting will be held. Whilst this could be found by looking-up the group*, containing it permits implementation of .oweekdazeThe student-bodies that will be attending.pweekdazeThe teachers who will be attending.weekdazeUsed to qualify output.weekdazeUsed to qualify output.qweekdazeSmart constructor.rweekdazeDelete the specified  location-Id from all specified meetings.sweekdazeDelete the specified  student-body, from the members of all specified meetings.tweekdazeDelete the specified  teacher-Id, from the members of all specified meetings.qweekdazeThe identifier of the group which it meeting.weekdaze The optional location of the rendezvous.weekdazeThe potentially empty set of student-members of the group.weekdazeThe potentially empty set of teacher-members of the group. klnopmqrst klnopmrstqGNoneX/0zweekdazeEA runlength-encoded list of generalised (i.e. potentially undefined) lessons, indexed by the day & then  timeslotId!, at which each runlength begins.{weekdazeEA runlength-encoded list of generalised (i.e. potentially undefined) lessons, indexed by the day & then  timeslotId!, at which each runlength begins.|weekdazeA lesson qualified by the time at which it is booked.}weekdazeEnhance ~, with parameters for styling.~weekdaze,A basic specification required to convert a  timetable to XHTML.MThe first three parameters supply auxiliary information required for styling.weekdazeThe association on which TimetableForDay is based.weekdazeOA timetable for observers with identical scheduling-requirements, for any week.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify output.weekdazeUsed to qualify CSS & XML.weekdazeUsed to qualify XML.weekdaze Accessor.weekdaze Accessor.weekdazeGet any lesson booked at the specified time.weekdaze True if a booking has been made at the specified time in the  timetable.weekdaze Extracts any lesson!-definitions, from the specified  timeslot-Id on each day.weekdazeExtracts the set of distinct lessons from the specified  timetable.weekdazeCalculates the average absolute deviation ( Khttps://en.wikipedia.org/wiki/Absolute_deviation#Average_absolute_deviation) in the number of free-period s, over the days in the week on which the resource is actually  available.weekdazeCounts the number of lesson s booked.weekdazeReturns the total number of lesson0-definitions currently booked for the specified subject.weekdaze)Returns the total number of each type of lesson currently booked.!CAVEAT: if zero of the requested lessonC have been booked, then there won't be any matching key in the map.cCAVEAT: be careful with the interpretation of these results, unless it can be guaranteed that all lessons for a given subject' are identical (i.e. they use the same  resourceIds*); otherwise the workload returned for a subject" could be split amongst different lesson.s. Whilst this is typically the case for the  student-view of a timetableForWeek7, it's may not be the case for other views, since the  student-class may vary.weekdazeThe number of lessons booked for the specified human-resource/, relative to the limit of their teaching-time.,This factors into the denominator, both the  availability of the resourceq, & the ratio of that working-time for which they're required to be in teaching rather than some other job-role.weekdaze Replace any lesson-definition at the specified time-coordinate.weekdazeUndefines any lesson! booked at each of the specified time-coordinates.weekdazeMeasure the ratio, for each day- on which the observer, for whom this weekly  timetable was intended, is  available), of those free (neither reserved for a meeting nor booked with a lesson)  time-slotKs which comply with the specified preference, to the total number of free  time-slots,weekdaze Render in XHTML, as a table, with days varying horizontally &  timeslotIds varying vertically.weekdaze Extracts the lessons from the specified  timetable, discarding the  booking-time.weekdazeExtract the list of all times in the specified  timetable, regardless of whether a lesson has been booked there.weekdaze Finds the  coordinates of all unallocated times, when the specified resource is  available.CAVEAT: doesn't account for times reserved for meetings.weekdaze'Counts the total number of unallocated  time-slots, discounting those when the observer is unavailable.HCAVEAT: this function takes no account of the possibility that when the observer represents a  student-body, some  time-slotsn may be allocated for unsupervised study, & the remainder must be multiplied by the number of members in the  student-body.weekdaze+Defines a pickler to convert the specified  timetable to, or from, XML.weekdaze Accessor.weekdaze Accessor.weekdaze True if a booking already exists in the  timetable which matches the specified  predicate.weekdazeTrue if the specified booking already exists in the  timetable.weekdaze#Constructor. Create an unallocated  timetable, for a whole week.weekdazeAFinds consecutive equal generalised (i.e. potentially undefined) lesson1s, & the run-length of each sequence, indexed by day & then  timeslotId.weekdazeFinds separated equal lessons, within the  timetable for any single day.weekdazeFinds separated lesson s of equal subject , within the  timetable for any single day.weekdaze$Finds runlengths of separated equal lessons, within the  timetable for any single day; separated unallocated  time-slots don't qualify.Returns an array indexed by day , of lists associated by common lesson", of lists associated by starting  timeslotId, of runlengths.weekdazep if all the times specified by a course!, are currently unbooked, & the resource is regularly  available on each requested day.weekdazeTrue if the specified lesson is booked an an adjacent day.weekdaze True if the course requires only a trivial minimumConsecutiveLessons, or the referenced lesson/ is at either end of a runlength which exceeds minimumConsecutiveLessons.If True, then minimumConsecutiveLessons! doesn't preclude the referenced lessonI from being unbooked; though there may be other reasons why it shouldn't. CAVEAT: if  minimumConsecutiveLessons==1 r, but a runlength of three or more have been booked, then unbooking the middle one will result in a split session. ~weekdazeWhether to merge duplicate lessons, between adjacent days & also between consecutive  time-slots.weekdazeWhether to depict axis-labels.weekdaze Define the days which constitute the weekend.weekdaze$Whether to generate the colour of a lessonD from one of its attributes, or to delegate colouring to a CSS-file.weekdazeThe  timetableN to represent; which can be from any view, or merely a slice dedicated to one  observerId.weekdaze/This observer's preferred position, within any day , of free  time-slots.weekdazeThe meeting-times for the group%s of which this observer is a member.weekdaze"The observer for whom this weekly  timetable was intended.weekdazeThe portion of those free  time-slot s in each day', which meet the observer's preference.weekdaze Find the course to which the specified lesson belongs.weekdazeThe resource by whom the  timetable was designed to be viewed.weekdazeUsed to determine  availability.weekdaze"Determines the suitability of any lesson at the specified time.weekdazeThe time at which to look for a lesson.weekdazeThe time & lesson to match.weekdazeThe  timetable whose bookings to inspect.weekdazeThe course whose specified time s, to query.weekdazeThe  timetable whose bookings to inspect.weekdazeThe lesson to match.weekdazeToday.weekdazeThe  timetable whose bookings to inspect.%z{|}~%|~}{zHNone5&weekdazeA timetable for one teacher, for any week.weekdazeCounts the number of times a teacher has to relocate.CAVEAT: an unallocated  time-slot& is considered to have an unspecified location2, which matches that of any adjacent unallocated  time-slot!s, but never that of an adjacent lesson.INoneBBweekdazeA timetable for one _`6 with identical scheduling requirements, for any week.weekdaze&A booking seen from one point-of-view.weekdazeOnce a teacher has been assigned to teach a  student-body, in a subject, at a location', a routine has been established; the  student-body" wouldn't normally be taught that subject, by any other teacher, or in any other location+. If the routine is adhered to, then each subject maps to a singleton set of  resource-Ids.9CAVEAT: this concept doesn't apply to other views of the  timetable: teacher-view; the same teacher can teach other student-bodies , in that subject , & at that location. location-view; the same location can host other student-bodies, for tuition of that subject , & by that teacher.weekdaze The current  timetable.JNoneG%weekdazeA lesson qualified by the  coordinates at which it is booked.weekdaze3A dummy type on which to hang instance-definitions.weekdazeFor use when converting any  timetable-view to XHTML.weekdazeGWhether to augment the marked-up output with supplementary information.weekdaze+A map of weekly timetables, indexed by the  observer-Id for whom it is intended.One can visualise this as a 3-D structure, indexed by  observer-Id, day, &  timeslot-Id, optionally defining a lesson at each coordinate.The type of the  observer-Id & of the  resource-Ids referenced in each lesson8, depend on the perspective from which the polymorphic  timetable, was designed to be viewed: if viewed by a student , then the  observer-Id is a  student-body, & the  resource-Ids are  location-Id &  teacher-Id; if viewed by a teacher , then the  observer-Id is a  teacher-Id, & the  resource-Ids are  location-Id &  student-body; if viewed by a location , then the  observer-Id is a  location-Id, & the  resource-Ids are  student-body &  teacher-Id.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdaze Constructor.Creates an unallocated weekly  timetable-, for each of the specified list of generic  observer-Ids; i.e. locations, student-bodies or  teacher-ids. Each daily  timetable has the specified list of  timeslots-Ids, into which a lesson can be booked.weekdazeGet any lesson booked at the specified  coordinates.weekdaze True if a booking has been made at the specified  coordinates in the  timetable.weekdaze Extracts a core0 of synchronous events, by drilling through the  timetable for all  observer-Ids, at the specified time.The  observer-id1s are discarded, rendering the results anonymous.CAVEAT: performance-hotspot.weekdaze Extracts the lessons from the specified  timetable, by discarding the  coordinates at which each was booked.weekdazeExtract the list of all  coordinates in the specified  timetable.weekdazeExtracts the set of distinct lessons from the specified  timetable.weekdazeOverwrites any lesson defined at the specified  coordinates.weekdaze Undefine the lesson, at the specified  coordinates.weekdazeUndefines each lesson, at the specified list of  coordinates.CAVEAT: if all the  coordinates have the same  observerId, then  should be more efficient.weekdazeUndefines each lesson, at the specified list of times, within the timetableForWeek for the specified  observerId.weekdazeUndefine the whole  timetable.weekdazeOFinds runlengths of consecutive equal generalised (i.e. potentially undefined) lesson1s, & the run-length of each sequence, indexed by  observerId, day &  timeslotId.weekdazeCalls , & flattens the results.weekdaze$Finds runlengths of separated equal lessons, within the  timetable for any single day.weekdaze$Finds runlengths of separated equal lessons, within the  timetable for any single day; separated unallocated  time-slots don't count.Returns a map indexed by  observerId, of arrays indexed by day , of lists associated by common lesson", of lists associated by starting  timeslotId, of runlengths.weekdazeCounts the number of lesson s booked.weekdazeLocates unallocated  coordinates, omitting any days on which the  observerId is un available.CAVEAT: doesn't account for  coordinates reserved for meetings.weekdazeLocates unallocated  coordinates in the specified  timetable, omitting any days on which the  observerId is un available, & any  coordinates reserved by the  observerId for a meeting.weekdaze'Counts the total number of unallocated  time-slots, across all observers in one week (i.e. the whle  timetable); discounting those when the observer is unavailable.HCAVEAT: this function takes no account of the possibility that when the observer represents a  student-body, some  time-slotns may be allocated to unsupervised study, & the remainder must be multiplied by the number of members in the  student-body.weekdaze Calculates the average over all  observer-Ids, of the average over the days in the week on which the observer is actually available, of the absolute deviation ( Khttps://en.wikipedia.org/wiki/Absolute_deviation#Average_absolute_deviation), in the number of free-periods.%CAVEAT: includes in the count, those  time-slots allocated for meetings.weekdazeThe number of lessons booked for each observerC, relative to the required limit of their teaching-time; based on .weekdazeCheck whether all the lessonMs currently booked for the specified time, are compatible with the specified lesson.To pass, any synchronous lesson6-definitions must either be identical to the proposed lesson, or use neither of its resources.%CAVEAT: it doesn't check whether the ability-stream of the  student-body) matches those for the existing bookings.CAVEAT: performance-hotspot.weekdaze2Calculates the mean, over those days on which the resourceB is available, of the ratio of those free (neither booked with a lesson, not reserved for a meeting)  time-slotKs which comply with the specified preference, to the total number of free  time-slots.weekdaze Accessor.weekdaze Accessor.weekdaze Transform a booking , into a generalised booking.weekdaze True if a booking already exists in the  timetable which matches the specified  predicate.weekdazeTrue if the specified booking already exists in the  timetable.weekdazeThe  coordinates to undefine.weekdaze)Identifies the single observer, in whose timetableForWeek all unwanted lessons exist.weekdazeThe times of lessons to undefine.weekdazeThe resource s, from which one can determine  availability.weekdazeThose  observerIds booked for a meeting , indexed by time.weekdazeThe resource s, from which one can determine  availability.weekdaze A map of resources by  observerId.weekdaze*A function which returns the times of the meeting s, for all groups of which this human-resource is a member.weekdaze"Determines the suitability of any lesson at the specified  coordinates.weekdazeThe  coordinates at which to look for a lesson.weekdazeThe  coordinates & lesson to match.$$KNoneweekdaze A flattened  timetable, with undefined  time-slot s removed.weekdazeSerialises the lesson-definitions in the weekly  timetable.LNoneHweekdaze A flattened  timetable', compressed by removing all undefined  time-slots.weekdazeSerialises the lesson-definitions in the specified  timetable.weekdaze1Unbook anything matching the specified predicate.weekdaze"Predicate used to select bookings.MNoneweekdazeComposed from both the F &  teacherId.weekdaze The class of students to be taught.weekdazeThe identifier for the teacher instructing this class.weekdazeUsed to qualify XML.weekdazeSmart constructor.weekdazeConvert from the student -view to a location-view.weekdazeConvert from the location -view to a student-view.weekdaze The class of students to be instructed.weekdazeThe identifier of the teacher taking the class.NNoneweekdaze#Specialise for the case in which a lesson' is viewed from the perspective of the location.weekdazeConvert from the student -view to a location-view.weekdazeConvert from the location -view to a student-view.ONone>Z weekdazeKnowlege-requirement , indexed by  student-body.weekdazeA map indexed by  student-body, of profiles shared amongst student s in the body.weekdazeUsed to qualify XML.weekdaze Accessor.weekdazeExtracts the set of distinct subjects required, gathered from all students.weekdaze Merges those student-bodies whose profile&s are identical, into a single larger  student-body.Writes the lists of merged student-bodies.Checks that any new mnemonics, composed from those of student-bodies` with identical profiles, differ from existing ones. This shouldn't matter, because the key of  is the whole  student-body not just the mnemonic , regrettably, for efficiency,  StudentBody implements  &  using only the mnemonic.weekdaze Merges those student-bodies whose profile&s are identical, into a single larger  student-body.weekdazeThe sum of the number of days worked by each student.weekdazeCount the total number of subjects required by all students.weekdaze True if any  student-body( has specified a free-period preference.weekdaze True if any  student-body has specified a core subject! in their knowledge-requirements.weekdaze True if any  student-body has specified an optional subject! in their knowledge-requirements.  PNone'kweekdazeA lesson qualified by the  coordinates at which it is booked.weekdazeThe type of a map passed to .weekdazeThe type of a map passed to .weekdazeSets of student-classes indexed by the lesson for which they've been booked.weekdaze.An association-list of the timetables for all students.Since body of students6 will have identical requirements, this is indexed by body# rather than an individual student.weekdaze Accessor.weekdazeIdentifies the lists of both  locationId &  teacherId, that have been booked in the  timetable, for the specified time.CAVEAT: whilst the booked  resources could reasonably be returned as sets, facilitating rapid query, the number of resources is typically too small for this approach to be competitive.weekdazeTrue if either of the resources referenced in the specified booking!, are already booked at the same time in the  timetable.(CAVEAT: it is assumed that the required lesson$ hasn't already been defined in the  timetable, since otherwise both location & teacher would clearly be booked.CAVEAT: performance-hotspot.weekdazeGet the student-bodies1 who are simultaneously booked to study the same subject, at the same location, with the same teacher.CAVEAT: performance-hotspot.weekdazeOnce a teacher has been assigned to teach a  student-body, in a subject, at a location', a routine has been established; the  student-body" wouldn't normally be taught that subject, by any other teacher, or in any other location+. If the routine is adhered to, then each subject maps to a singleton set of  resource-Ids.9CAVEAT: this concept doesn't apply to other views of the  timetable: teacher-view; the same teacher can teach other student-bodies , in that subject , & at that location. location-view; the same location can host other student-bodies, for tuition of that subject , & by that teacher.weekdazeTrue if the specified lesson, employs either a different teacher, or uses a different location , as other bookings in the same subject.5CAVEAT: the routine could include mergers with other student-bodies to form a consistent  student-class=, though currently this a soft constraint addressed by both lesson-criteria & timetable-criteria.weekdazeFind the distinct  locationIds booked by the referenced teacher. CAVEAT: doesn't account for the location of any meetings.weekdazeFind the distinct  teacherIds booked at the referenced location.weekdazeGets the average number of location s visited by teachers. Because only teachers who've at least one bookingJ are included, the result is only less than one if there're zero bookings.weekdazeBecause (given sufficient location5-capacity) one may simultaneously book more than one  student-body, at a single location, taught by a single teacher, in a single subject, the specified  timetable may already contain bookingHs formed from a variety of such combinations, each having the specified  student-bodyv as a member. Since one may reasonably wish to minimise these combinations, this function aims to enumerate distinct  student-classes per type of lesson.For each distinct lesson of which the specified  student-body' is a member, it identifies the set of  student-classes already booked./Any set of size greater than one, represents a student-body combination for that lesson.weekdazeCatalogues by lesson , the single  student-class, at each booking-time.A student-body combination exists for a specific lesson, if within the  booking-times identified, any student) exists in more than one of the distinct  student-classNes; a necessary but insufficient prerequisit for which is, that within those times, more than one distinct  student-class must exist.weekdazeEquivalent to calling  for each  student-body,, & merging the results; but more efficient.A student-body combination exists for a specific lesson , if any student) exists in more than one of the distinct  student-classXes; a necessary but insufficient prerequisit for which is, that more than one distinct  student-class' must exist. E.g. if for a particular lesson-type, there are two bookings each for either one of two student-bodies!, then neither will be part of a student-body combination;, but when the results are merged by removing the booking-time, the lesson will map to a set of size two.weekdazeEach  student-body can be booked for a specific lesson (i.e. to learn a subject, taught by a teacher, at a location), by merging with other student-bodies) in a variety of combinations, to form a  student-class.Gets the average number of  student-body"-combinations, over the domain of student-bodies & ?s. Each number of combinations is weighted by the size of the  student-body, in the average.weekdaze Render in XHTML, as a definition-list.QCAVEAT: the extra parameters make it difficult to express this as an instance of .weekdazeThe  timetable.weekdazeThe  student-body whose routine is required.weekdaze The current  timetable.weekdazeThe  student-body whose routine to which the new lesson should conform.weekdazeThe new lesson to be booked.weekdazeThe  student-body, whose  student-class-membership one requires.weekdazeThe number of inter-campus student-migrations, indexed by  student-body.weekdaze The unbooked knowledge-requirements3 by student-body, partitioned into core & optional subjects.weekdaze"Excessively long subject-sessions.weekdazeShort subject-sessions.weekdazeThe number of  time-slots per day.weekdaze Find the course to which the specified lesson belongs.QNoneR weekdazeA map indexed by  teacherId , of sets of times.weekdazeThe type of a map passed to .weekdazeA lesson qualified by the  coordinates at which it is booked.weekdaze.An association-list of the timetables for all teachers.weekdaze Builds a  by inverting a .CAVEAT: in the original  , different student-bodies' may simultaneously reference a single teacher*. This is normal behaviour, provided the teacherB can cope with the class-size, & is implemented seemlessly, as a map-structure with one or more keys referencing a value, containing the same teacher.When inverting such a  timetableB, this many-to-one relationship becomes a one-to-many, & a single  teacher-id must now reference many student-bodies. The simple map-structure, unlike a  multi-mapm, can't directly accommodate multiple identical keys, with different values, so this is achieved by merging student-bodies into  student-classes.weekdazeBuild a , by inverting a .Each lesson in the  timetable seen from the teacher's perspective, contains a  student-class. This  student-class must be broken into student-bodies0, before inserting repeatedly into the required  timetable as seen from the  student-body's perpective.weekdazeApply a  to a TeacherView-timetable.weekdazeCatalogue the  student-classes booked in the specified  timetable , indexed by  location-Id.weekdazeCalculates the mean over all bookings, of the size of the  student-class.weekdaze Counts the location-changes made by each teacher.JThe minimum value of zero can be achieved either by a completely unbooked  timetable#, or one completely booked by the lessons in the same location. CAVEAT: doesn't account for the location of any meetings.weekdazeBooks a TeacherView-booking in a StudentView-timetable.weekdaze Render in XHTML, as a definition-list.weekdazePermit a temporary  student-body merger.weekdazeAn unallocated  timetable, supplied for efficiency.weekdazeAn unallocated  timetable, supplied for efficiency.weekdazePermit a temporary  student-body merger.weekdazeThe  coordinates & lesson from the perspective of the student -view of the  timetable.weekdazeThe  timetable as seen from the teacher's perspective.weekdazeThe  coordinates & lesson from the perspective of the teacher -view of the  timetable.weekdazeThe  timetable as seen from the student's perspective.weekdazeThe number of inter-campus teacher-migrations, indexed by  teacherId.weekdaze!Unbooked but specified times, by  teacherId.weekdazeThe number of  time-slots per day.weekdaze Find the course to which the specified lesson belongs.  RNoneqweekdazeA lesson qualified by the  coordinates at which it is booked.weekdaze.An association-list of the timetables for all  locations.weekdazeBuild a  by inverting a .CAVEAT: in the original  , different student-bodies' may simultaneously reference a single location*. This is normal behaviour, provided the location= has sufficient capacity, & is implemented seemlessly, as a map-structure with one or more keys referencing a value, containing the same location.When inverting such a  timetableB, this many-to-one relationship becomes a one-to-many, & a single  location-id must now reference many student-bodies. The map-structure (cf.  multi-mapr), can't directly accommodate multiple identical keys, with different values, so this is achieved by merging the student-bodies into a class of students.weekdazeBuild a , by inverting a .Each lesson in the  timetable seen from the location's perspective, contains a  student-class. This  student-class must be broken into student-bodies0, before inserting repeatedly into the required  timetable as seen from the  student-body's perpective.weekdazeMake a  in a LocationView-timetable.weekdazeBooks a LocationView-lesson in a StudentView-timetable.weekdaze Render in XHTML, as a definition-list.weekdazePermit a temporary  student-body merger.weekdazeAn unallocated  timetable, supplied for efficiency.weekdazeAn unallocated  timetable, supplied for efficiency.weekdazePermit a temporary  student-body merger.weekdazeThe  coordinates & lesson from the perspective of the student -view of the  timetable.weekdazeThe  timetable as seen from the location's perspective.weekdazeThe  coordinates & lesson from the perspective of the location -view of the  timetable.weekdazeThe  timetable as seen from the student's perspective.weekdaze Find the course to which the specified lesson belongs.SNone>%weekdaze0Encapsulates the data which defines the problem. weekdaze2Defines toggle-switches governing validity-checks. weekdaze2Defines toggle-switches governing validity-checks. weekdaze The closed bounds, defining the  timeslot-id s, in any day. weekdaze"Defines the profiles of available locations, indexed by  location-id.weekdazeDefines the profiles of teachers, indexed by  teacher-id.weekdazeDefines the common profile of student"s, indexed by the mnemonic of the  student-body of which they're all members.weekdaze Defines the groups of which any student or teacher may be a member.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify XML.weekdazeUsed to qualify SQL & XML.weekdazeUsed to qualify SQL & XML.weekdazeDefault value for a .weekdaze;Get the length of the list defined by the specified bounds.mCAVEAT: this implementation accounts for the potential fence-post error when called for a closed interval of ] timeslots, but will result in an equivalent error if (bizarrely) called for an interval of 5 quantities. Regrettably, it can't be restricted to 7, because it may legitimately be required to work with .weekdaze*Total the workload of the core & optional subject-requirements, for the specified student-profile. Since each course! may be offered by more than one teacher<, the actual workload can only be constrained within bounds.#CAVEAT: assumes that all requested subjects, exist amongst the course s offered by teachers.weekdazeFinds student-bodies, who've requested more subject4s (both core & optional), than can be taught by the course-s on offer, in the time allocated to tuition.weekdazeFinds the set of groups, of which a human-resource claims membership. weekdaze For each human-resource , identifies timeIs at which they're required to attend more than one meeting, in separate locations, for any of the groups of which they're a member.Also returns the offending group-ids &  location-ids. weekdaze For each human-resource , identifies timeCs at which they have attend more than one meeting. for any of the groups of which they're a member.Returns the offending group-ids.weekdaze For each  student-body , identifies timeCs at which they have attend more than one meeting. for any of the groups of which they're a member.Returns the offending group-ids.weekdaze For each  teacherId , identifies timeCs at which they have attend more than one meeting. for any of the groups of which they're a member.Returns the offending group-ids. weekdazeIdentifies those human-resources commited to more meeting/s than their non-teaching time can accommodate. weekdazeIdentifies for each human-resource, any dayLs on which they're unavailable for the meetings of the mandatory-attendance groups, of which they're members. CAVEAT: only human-resource4s unable to attend a meeting, appear in the results.weekdazeFinds the members (student-bodies, teacher s) of each group. weekdazeThe number of  time-slots per week, which this human-resource- regularly requires, for the meetings of all groups of which they're a member.CAVEAT: days on which the resourceq is unavailable, aren't counted on the assumption that this is because attendance for that group isn't mandatory.weekdaze Merges those student-bodies whose profiles are identical, into a  student-body.0Also writes the list of those students affected.weekdazeRemoves course s from the teacherRegister, which aren't required by any student.Writes an association-list of  teacherId & any  knowledgeP they offer for which there's no demand; where there's a requirement for all a teacherW's knowledge, then no data is written for that teacher, rather than writing a null set.weekdaze Remove any groups from the groupCatalogue which have zero  meeting-times.weekdaze Remove any groups from the groupCatalogue to which neither student-bodies nor teachers have subscribed.weekdazeProxies request to D.weekdazeWhen temporary student-body mergers are permitted according to the execution-options, some problem-validation switches are inappropriate & should be disabled to prevent false positives./Also writes the names of any disabled switches.weekdaze True if any  student-body or teacherN has a preference for the location of any free timeslots in their working day.weekdazeWhether courses offer different minimumConsecutiveLessons.          TNone.4&weekdazeThe results of the analysis of .'weekdazeIndex course s by the  teacherId who offers them, & by their synchronisationId.(weekdaze Identifies courses which specify times, separated within a single day.)weekdaze1The distinct runlengths of consecutive specified times, per course.weekdaze The distinct subjects amongst the service s offered by teachers.*weekdazeAn unallocated  timetable indexed by locations.+weekdazeAn unallocated  timetable indexed by student-bodies.,weekdazeAn unallocated  timetable indexed by teachers.-weekdaze A map by time , of the resources used by the meetings of group s. CAVEAT: times at which zero meeting%s are booked, don't exist in the map..weekdaze A map by time , of the meetings of groups with at least one member./weekdazeThe number of days in a student-timetable%, each multiplied by the size of the  student-body for which it's applicable.0weekdazeThe number of days in a teacher-timetable.1weekdazeCounts the number of students on the register.2weekdazeCounts the number of teacher:s (excluding purely administrative staff) on the register.weekdazeCounts the non-terminal ( available  - un available)-day boundaries, over all teachers.3weekdazeThe number of  time-slot s in any day.4weekdaze The map by day , of maps by  student-body, of combinations of possible lessons.5weekdaze The map by  student-body, of combinations of possible lessons.weekdazeThe set of all specified time s, for any course, offered by any teacher.6weekdaze A map by synchronisationId, of student-bodies who require a subject from one of the corresponding courses.7weekdazeThe subjects, of the subset of all courses, which have an ideal timeslot-request.8weekdazeCatalogues all the courses, which match each of the knowledge-requirement s, of each  student-body.9weekdaze The range of  time-slot s in any day.:weekdaze The total lesson"s per week, required by all those courses needing a specified facility. CAVEAT: only the subset of  facilities/ offered, which are also required, are indexed.weekdaze A map by synchronisationId, of student-bodies who require a subject from one of the corresponding courses.weekdaze A map by day , of maps by  student-body, of lessons; as returned by .weekdaze A map by  student-body, of lessons; as returned by .weekdaze A map by time , of sets of resources.weekdazeSets of distinct  time-slot run-lengths, for each course.weekdaze A map by  student-body , of maps by subject , of maps by  teacherId, of courses.CAVEAT: it is assumed that no teacher" can offer more than one suitable course.;weekdaze Constructor.weekdaze Catalogue by time, the meetings of group!s which have at least one member.DCAVEAT: the map doesn't necessarily contain a key for each possible time.weekdazeCatalogues by time, the resource s used for meetings of groups.DCAVEAT: the map doesn't necessarily contain a key for each possible time.<weekdazeTrue if any of the required resource)s, are already required at the specified time, for a meeting of a group.weekdazeCatalogues by  teacherId , all the courses which match each of the knowledge-requirement s, of each  student-body.=weekdazeChecks for the proposed booking, whether all suitable courses, for any one of the  student-body6's other knowledge-requirements, specify the proposed time.,CAVEAT: doesn't check whether the specified subject can only be satisfied by a synchronised course, & if so, whether any  student-body who requires a different course0 from the same synchronised set, has any other knowledge-requirement" which can only be satisfied by a course which specifies the proposed time-. This tricky scenario is dealt with in the lesson-criterion ,minimiseBookingAtAnotherCoursesSpecifiedTime where the specific course is known.weekdazeIf the specified teacher has a suitable personal location, then that is prefered.Otherwise, returns a list of  locationIds, of sufficient capacity, & offering the  facilities required by the course corresponding to the specified subject.CAVEAT: the list of  locationId(s returned isn't ordered by suitability.weekdaze"Gets the combinations of possible lessons, required by each  student-body.CAVEAT: though several bookings of a lesson@ are typically required to satisfy the requirements of a single courseX, only one instance for each viable combination of locationId & teacherId, is returned.weekdazeCalls % to get the combinations of possible lessons, required by each  student-body. The list of lesson s for each  student-body@, is replicated & filtered for compatibility with each specific day.Day#s on which there're zero available student-bodies, & student-bodies for which there're zero lesson%s, are included to facilitate lookup.>weekdazeTrue if the specified  student-body, & the location & teacher referenced in the proposed lesson+, are regularly available on the specified day.?weekdazeTrue if the specified human-resource is  available & not booked for a meeting at the specified time.@weekdazeGet the number of studentE-places, when accounting for the capacity-limits imposed by both the course & location; but not for any students already booked.Aweekdaze Lookup the course corresponding to the specified lesson.BweekdazeFind the unique course corresponding to the specified studentViewLesson.CAVEAT: the specified lesson is assumed to exist in the  timetable(, & therefore must have a corresponding course.CweekdazeFind the unique course corresponding to the specified locationViewLesson.DweekdazeFind the unique course corresponding to the specified teacherViewLesson.weekdaze>Find the set of distinct run-lengths of consecutive specified times, occuring within any single day, for each distinct course.weekdazeSome courses may specify times separated within a single dayC, which must be discovered to avoid erroneously downgrading those  timetables correctly booking lesson s in these courses.weekdaze Find the subjects offered by those courses which have an ideal timeslot-request. weekdazeReturns a map by synchronisationId, of student-bodies who require a subject from one of the corresponding courses.If zero student-bodies require any of the subjects offered with a specific synchronisationIdL, then an empty set exists in the returned map, rather than no entry at all.EweekdazeTrue if the specified  timeslotId& falls within the range defined for a day.FweekdazeReturns the list of distinct synchronisationIds, specified amongst all courses.=weekdazeThe subject of the proposed lesson.weekdazeThe  student-body & time, of the proposed booking.weekdaze Required capacity.weekdazeThe subject to be taught.weekdazeThe teacher who will be taking the class.>weekdazeThe day on which we want to book a lesson.weekdazeThe rendezvous we want to book.@weekdazeThe course one wishes to query.weekdaze A specific location in which the course may be held.AweekdazeThe course of which the lesson may be a part.BweekdazeThe studentViewLesson extracted from a studentViewTimetable.weekdazeThe course of which the lesson was a part.!&'()*+,-./0123546789:;<=>?@ABCDEF!&'()*+,-./0123546789:@BCDFA;<>=?EUNone>QGweekdaze!Defines the command-line options.IweekdazeqThe version of the semantics & structure of the configuration-file; cf. the version of XML in which it's written.Jweekdaze8Defines the means by which the problem should be solved.Kweekdaze(Defines the presentation of the results.Lweekdaze&Defines the parameters of the problem.MweekdazeDefines whether the  timetable1 should be shown, from the point-of-view of each teacher.NweekdazeDefines whether the  timetable1 should be shown, from the point-of-view of each location.!weekdaze)The type of a function used to transform G.OweekdazeMutator.QweekdazeMutator.Sets displayRuntimeInformation in all XHTML-formats.RweekdazeMutator.SweekdazeMutator.TweekdazeMutator.UweekdazeMutator.VweekdazeMutator.WweekdazeMutator.XweekdazeMutator.YweekdazeMutator.ZweekdazeMutator.Other options are dependent on this one, & so are also toggled. If this is inappropriate, then they can always be toggled back, by a separate request.[weekdazeMutator.\weekdazeMutator."weekdazeMutator.]weekdazeMutator.As a side-effect various criteria-weights may be turned-off, because the concepts to which they relate, don't exist until there're sufficient  time-slot s per day.^weekdazeMutator.#weekdazecDepending on each of the specified flags, uses the specified function to mutate each corresponding criterion-weight.5Logs the tags of all those criterion-weights changed._weekdazeZeroes the weight of each lesson-criterion & timetable-criterion, & the  fecundity of each evolution-strategyF, which is either inappropriate for, or irrelevant to, the specified problem-parameters.Logs the affected tags.#weekdaze y((Criterion-weights accessor, Whether to mutate this criterion-weight), (Criteria-weights mutator, Criterion-weight tag)).weekdaze Zeroed tags & transformed value._weekdazegWhether to zero non-critical weights, or merely those that must be zeroed to avoid generating an error.weekdazeInitial value.weekdaze Transformed evolution-strategies, & the tags of zeroed ((lesson-criteria weights, timetable-criteria weights), evolution-strategy fecundities).GHIKJLMNOPQRSTUVWXYZ[\]^_NMGHIKJLPOQRSTUVWXYZ[\]^_$abcdefghijklmnopqrstuvwxyz{|}~                                          ! " # $ % & ' ( ) * + , - . / 0 1 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc[defg\hijklmnJopqrstuvwxyz{J|}~      !"#$%&'()H*+,-J./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZB:                   !!!!"###################$$$$ $ $ $ $ $$$$%%%%%&&&&&&&&'''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1(2(3(4(5(6(7(8(9(:);)<)=)>)?)@)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+[+\+]+^+_+`+a+b+c+d,e,f,g,h-I-i-j-k-l-m-n-o-p-q-r.s.t.u.v.w.x.y.z.{/|/}/~/////00000000001111111112=22222222333333333344;444<44444444444455:5555555556666666666666666666666666666677777888888888889::;;;<<<<< <<<<<<<<<<<<<<<<<<<<============ = = = = =>>>G???????????????????Q?R?? ?!?"?#?$?%?&?'?(?)?*@@+@,@-@ @.@/@0@1@@2@3@4@5@6@7@8@9@:@;@<@@@@@@@@@A=A>A?A@AAAABACADAEAFAGAHAIAJAKALAMANAOAPAQARASA4ATAUBVBWBBXBBYCCCZC[C\C]C^CCCCCCD:D\D]E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnFoFpFqFFZFAFrFsFtFuFvFwFxFyFzG{G|GG}G~GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHIIIJJJJJ~JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJKKLLLMMZMM[M\M]M^MMMMMN:N\N]OOOOOEOOOOOMOOPPPPPPPPPPPPPPPPPQQQQQQQQQQRRRRSSSSSSSSSSSSSSSSSSSSSUSSMSSSSSSSTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T U_U U UUUUUUUUUUUUUUUUUUUUUUUUiUlUmUn !"#$%W&'()X*+,-+,.+,/ 0 1 2 3 4 6 5 6 47&89:;[<[=[>[?&@A&@BCDE4&FGHIJKL4MNOPQR ##S#T&&U&V'W'''U'X'Y'Z'['\']'^'_(`(a))N**b*c\d\e\f\g\h+i&8j,k-./01235l56m66n6o6p8<q< <<r=s==t??u@q@v@ @@wAxCEEyEzF{|}~FFlGGGGGGGGGGGJJJM++PPQQRRRSSSSSSSS&&+,SSSSSSTTTKTTTTTTTTTTTTTTTTU4UU'weekdaze-0.0.0.3-KWDPOuzPPeq8Bb6LNfD4lTWeekDaze.Colour.HTMLColourCodeWeekDaze.Colour.RGBWeekDaze.Colour.HTMLColourWeekDaze.ConfigurationWeekDaze.Data.Requirements WeekDaze.Enhanced.EnhancedDoubleWeekDaze.Enhanced.EnhancedRatio/WeekDaze.ExecutionConfiguration.CriterionWeight)WeekDaze.ExecutionConfiguration.Criterion=WeekDaze.ExecutionConfiguration.OptimiseLessonCriteriaWeights5WeekDaze.ExecutionConfiguration.LessonCriteriaWeights9WeekDaze.ExecutionConfiguration.TimetableBreederFecundity8WeekDaze.ExecutionConfiguration.TimetableCriteriaWeightsWeekDaze.Input.ConfigVersion'WeekDaze.Model.GenerateLessonColourFromWeekDaze.Model.TimetableAxis%WeekDaze.Model.TimetableAxisTraversal"WeekDaze.Model.TimetableAxisTriple&WeekDaze.OutputConfiguration.Verbosity!WeekDaze.OutputConfiguration.View9WeekDaze.ProblemConfiguration.TimetableValidationSwitches7WeekDaze.ProblemConfiguration.ProblemValidationSwitches WeekDaze.SizeWeekDaze.Temporal.DayWeekDaze.Temporal.Availability3WeekDaze.ExecutionConfiguration.EvolutionStrategies0WeekDaze.ExecutionConfiguration.ExecutionOptionsWeekDaze.Data.ResourceWeekDaze.Data.Location$WeekDaze.Aggregate.LocationCatalogue&WeekDaze.Temporal.FreePeriodPreferenceWeekDaze.Temporal.Time#WeekDaze.Model.TimetableCoordinatesWeekDaze.Model.TraverseWeekDaze.Data.GroupWeekDaze.Data.HumanResource!WeekDaze.Aggregate.GroupCatalogueWeekDaze.Temporal.TimeAxes"WeekDaze.OutputConfiguration.Style#WeekDaze.OutputConfiguration.Format'WeekDaze.OutputConfiguration.FileFormat!WeekDaze.Temporal.TimeslotRequestWeekDaze.Text.CSSWeekDaze.Text.XHTMLWeekDaze.Identifiers.TimeslotIdWeekDaze.Identifiers.TeacherId&WeekDaze.Identifiers.SynchronisationIdWeekDaze.Identifiers.StreamWeekDaze.Identifiers.LocationIdWeekDaze.Identifiers.LevelWeekDaze.Identifiers.CampusWeekDaze.Data.SubjectWeekDaze.Model.LessonWeekDaze.Model.TimetableForDayWeekDaze.Model.ResourceUser&WeekDaze.StudentView.LessonResourceIds$WeekDaze.StudentView.TimetableForDayWeekDaze.StudentView.Lesson!WeekDaze.Model.GeneralisedBookingWeekDaze.Data.StudentWeekDaze.Aggregate.StudentBody)WeekDaze.StudentView.TimetableCoordinatesWeekDaze.Data.CourseWeekDaze.Data.Teacher"WeekDaze.Aggregate.TeacherRegisterWeekDaze.Aggregate.StudentClass&WeekDaze.TeacherView.LessonResourceIdsWeekDaze.TeacherView.Lesson$WeekDaze.OutputConfiguration.OptionsWeekDaze.Model.MeetingWeekDaze.Model.TimetableForWeek%WeekDaze.TeacherView.TimetableForWeek%WeekDaze.StudentView.TimetableForWeekWeekDaze.Model.Timetable%WeekDaze.LinearModel.TimetableForWeekWeekDaze.LinearModel.Timetable'WeekDaze.LocationView.LessonResourceIdsWeekDaze.LocationView.Lesson&WeekDaze.Aggregate.StudentBodyRegisterWeekDaze.StudentView.TimetableWeekDaze.TeacherView.TimetableWeekDaze.LocationView.Timetable/WeekDaze.ProblemConfiguration.ProblemParameters-WeekDaze.ProblemConfiguration.ProblemAnalysisWeekDaze.Input.OptionsWeekDaze.Enhanced.EnhancedBool WeekDaze.Enhanced.EnhancedEitherWeekDaze.Enhanced.EnhancedTuple'ExecutionConfiguration.ExecutionOptions#getPermitTemporaryStudentBodyMerger.WeekDaze.ProblemConfiguration.ValidationSwitchWeekDaze.Temporal.Workload Data.LocationFacility Data.StudentBodyHTMLColourCodehtmlColourCodePrefixgenerateHTMLColourCodeFromreadHex!deriveComplementaryHTMLColourCodeRGBmkRGB mkRGB24Bitradix fromIntegral'toTripleblack white24Bit>+< absDifferencetoRGBUnitIntervalfromRGBUnitInterval $fFunctorRGB$fEqRGB $fShowRGBhtmlColourCodeToRGBrgbUnitIntervalToHTMLColourCodeunitIntervalToRGBunitIntervalToHTMLColourCode Configuration issueWarnings RequirementscoreTag optionalTaggetCore getOptional$fXmlPicklerDouble $fRandomRatio$fXmlPicklerRatioCriterionWeights areAllZeroCriterionWeight deconstructmkCriterionWeight$fNFDataCriterionWeight$fXmlPicklerCriterionWeight$fDefaultCriterionWeight$fSelfValidatorCriterionWeight$fBoundedCriterionWeight$fCriterionWeights[]$fEqCriterionWeight$fOrdCriterionWeight$fShowCriterionWeight Criterion mkCriterionmkCriterionFrommedian$invertNaturalNumbersIntoUnitInterval"invertWholeNumbersIntoUnitIntervalreflectUnitIntervalcalculateWeightedMean$fSelfValidatorCriterion$fBoundedCriterion $fEqCriterion$fOrdCriterion$fShowCriterionOptimiseLessonCriteriaWeights getNTrialsgetChangeMagnitudegetReductionFactorgetUseMeanOverRasterScanstagchangeMagnitudeTagmkOptimiseLessonCriteriaWeights isRequired)$fXmlPicklerOptimiseLessonCriteriaWeights,$fSelfValidatorOptimiseLessonCriteriaWeights&$fDefaultOptimiseLessonCriteriaWeights%$fNFDataOptimiseLessonCriteriaWeights#$fReadOptimiseLessonCriteriaWeights#$fShowOptimiseLessonCriteriaWeights!$fEqOptimiseLessonCriteriaWeightsLessonCriteriaWeightsMkLessonCriteriaWeightsgetWeightOfAreResourcesReused,getWeightOfGreatestMinimumConsecutiveLessons)getWeightOfGreatestRemainingCourseLessons,getWeightOfGreatestSynchronisedCourseSetSize%getWeightOfIsCoreKnowledgeRequirementgetWeightOfIsSpecialistInTopic1getWeightOfMatchCourseClassSizeToLocationCapacity.getWeightOfMaximiseRelativeFacilityUtilisation6getWeightOfMaximiseStudentClassSizeOverCourseClassSize7getWeightOfMaximiseStudentClassSizeOverLocationCapacity7getWeightOfMinimiseBookingAtAnotherCoursesSpecifiedTime3getWeightOfMinimiseBookingOfLocationByOtherTeachers/getWeightOfMinimiseDeviationFromTimeslotRequest2getWeightOfMinimiseInterCampusMigrationsOfStudents2getWeightOfMinimiseInterCampusMigrationsOfTeachers*getWeightOfMinimiseStudentBodyCombinations(getWeightOfMinimiseTeachersLocusOperandi*getWeightOfMinimiseWasteOfScarceFacilitiesweightOfAreResourcesReusedTag,weightOfGreatestMinimumConsecutiveLessonsTag)weightOfGreatestRemainingCourseLessonsTag,weightOfGreatestSynchronisedCourseSetSizeTag%weightOfIsCoreKnowledgeRequirementTagweightOfIsSpecialistInTopicTag1weightOfMatchCourseClassSizeToLocationCapacityTag.weightOfMaximiseRelativeFacilityUtilisationTag6weightOfMaximiseStudentClassSizeOverCourseClassSizeTag7weightOfMaximiseStudentClassSizeOverLocationCapacityTag7weightOfMinimiseBookingAtAnotherCoursesSpecifiedTimeTag3weightOfMinimiseBookingOfLocationByOtherTeachersTag/weightOfMinimiseDeviationFromTimeslotRequestTag2weightOfMinimiseInterCampusMigrationsOfStudentsTag2weightOfMinimiseInterCampusMigrationsOfTeachersTag*weightOfMinimiseStudentBodyCombinationsTag(weightOfMinimiseTeachersLocusOperandiTag*weightOfMinimiseWasteOfScarceFacilitiesTagassociationList-zeroWeightOfGreatestMinimumConsecutiveLessons-zeroWeightOfGreatestSynchronisedCourseSetSize&zeroWeightOfIsCoreKnowledgeRequirementzeroWeightOfIsSpecialistInTopic2zeroWeightOfMatchCourseClassSizeToLocationCapacity/zeroWeightOfMaximiseRelativeFacilityUtilisation7zeroWeightOfMaximiseStudentClassSizeOverCourseClassSize8zeroWeightOfMaximiseStudentClassSizeOverLocationCapacity8zeroWeightOfMinimiseBookingAtAnotherCoursesSpecifiedTime4zeroWeightOfMinimiseBookingOfLocationByOtherTeachers0zeroWeightOfMinimiseDeviationFromTimeslotRequest3zeroWeightOfMinimiseInterCampusMigrationsOfStudents3zeroWeightOfMinimiseInterCampusMigrationsOfTeachers)zeroWeightOfMinimiseTeachersLocusOperandi+zeroWeightOfMinimiseWasteOfScarceFacilitiesperturbWeights$fNFDataLessonCriteriaWeights'$fCriterionWeightsLessonCriteriaWeights!$fXmlPicklerLessonCriteriaWeights$fDefaultLessonCriteriaWeights$$fSelfValidatorLessonCriteriaWeights$fEqLessonCriteriaWeights$fShowLessonCriteriaWeightsTimetableBreederFecundity$getDeterministicConstructorFecunditygetRandomConstructorFecundity FecunditymkTimetableBreederFecundityzero>*<!$fNFDataTimetableBreederFecundity%$fXmlPicklerTimetableBreederFecundity($fSelfValidatorTimetableBreederFecundity"$fDefaultTimetableBreederFecundity$fShowTimetableBreederFecundity$fReadTimetableBreederFecundity$fEqTimetableBreederFecundityTimetableCriteriaWeightsMkTimetableCriteriaWeights6getWeightOfMaximiseComplianceWithFreePeriodPreferences@getWeightOfMaximiseMeanRatioOfStudentClassSizeToLocationCapacity'getWeightOfMaximiseMeanStudentClassSize7getWeightOfMaximiseSynchronisationOfSynchronisedCourses:getWeightOfMaximiseWeightedMeanStudentBodyUtilisationRatioCgetWeightOfMinimiseAverageAbsoluteDeviationFromIdealTimeslotRequest7getWeightOfMinimiseDispersionOfStudentFreePeriodsPerDay7getWeightOfMinimiseDispersionOfTeacherFreePeriodsPerDay.getWeightOfMinimiseDispersionOfTeacherWorkload6getWeightOfMinimiseMeanInterCampusMigrationsOfStudents6getWeightOfMinimiseMeanInterCampusMigrationsOfTeachers0getWeightOfMinimiseMeanLocationChangesOfTeachers.getWeightOfMinimiseMeanLocusOperandiOfTeachers=getWeightOfMinimiseMeanRatioOfIncompletelyBookedCoreKnowledgeAgetWeightOfMinimiseMeanRatioOfIncompletelyBookedOptionalKnowledge7getWeightOfMinimiseMeanStudentBodyCombinationsPerLesson1getWeightOfMinimiseRatioOfConsecutiveEqualLessons;getWeightOfMinimiseRatioOfSeparatedEqualLessonsWithinAnyDay6weightOfMaximiseComplianceWithFreePeriodPreferencesTag@weightOfMaximiseMeanRatioOfStudentClassSizeToLocationCapacityTag'weightOfMaximiseMeanStudentClassSizeTag7weightOfMaximiseSynchronisationOfSynchronisedCoursesTag:weightOfMaximiseWeightedMeanStudentBodyUtilisationRatioTagCweightOfMinimiseAverageAbsoluteDeviationFromIdealTimeslotRequestTag7weightOfMinimiseDispersionOfStudentFreePeriodsPerDayTag7weightOfMinimiseDispersionOfTeacherFreePeriodsPerDayTag.weightOfMinimiseDispersionOfTeacherWorkloadTag6weightOfMinimiseMeanInterCampusMigrationsOfStudentsTag6weightOfMinimiseMeanInterCampusMigrationsOfTeachersTag0weightOfMinimiseMeanLocationChangesOfTeachersTag.weightOfMinimiseMeanLocusOperandiOfTeachersTag=weightOfMinimiseMeanRatioOfIncompletelyBookedCoreKnowledgeTagAweightOfMinimiseMeanRatioOfIncompletelyBookedOptionalKnowledgeTag7weightOfMinimiseMeanStudentBodyCombinationsPerLessonTag1weightOfMinimiseRatioOfConsecutiveEqualLessonsTag;weightOfMinimiseRatioOfSeparatedEqualLessonsWithinAnyDayTag7zeroWeightOfMaximiseComplianceWithFreePeriodPreferences8zeroWeightOfMaximiseSynchronisationOfSynchronisedCoursesDzeroWeightOfMinimiseAverageAbsoluteDeviationFromIdealTimeslotRequest8zeroWeightOfMinimiseDispersionOfStudentFreePeriodsPerDay7zeroWeightOfMinimiseMeanInterCampusMigrationsOfStudents7zeroWeightOfMinimiseMeanInterCampusMigrationsOfTeachers1zeroWeightOfMinimiseMeanLocationChangesOfTeachers/zeroWeightOfMinimiseMeanLocusOperandiOfTeachersBzeroWeightOfMinimiseMeanRatioOfIncompletelyBookedOptionalKnowledge8zeroWeightOfMinimiseMeanStudentBodyCombinationsPerLesson2zeroWeightOfMinimiseRatioOfConsecutiveEqualLessonsfindSeparatedEqualLessonRunlengthsByStartingTimeslotIdByLessonmeasureFreePeriodCompliance ResourceUserareIndependentareMergeableWithareMutuallyMergeable$fResourceUserSetLessonResourceIdsMkLessonResourceIds getLocationId getTeacherId$fNFDataLessonResourceIds$fResourceUserLessonResourceIds$fXmlPicklerLessonResourceIds$fHTMLLessonResourceIds$fEqLessonResourceIds$fOrdLessonResourceIds$fShowLessonResourceIdsGeneralisedBookinggetCoordinates getStreamgetKnowledgeRequirementsgetTeachingRatioKnowledgeRequirementsknowledgeRequirementsTagteachingRatioTagdefaultTeachingRatioamalgamateKnowledgeRequirements%deriveAmalgamatedKnowledgeRequirementhasAnyCoreKnowledgeRequirements#hasAnyOptionalKnowledgeRequirementsrequiresAnySubjectBy unsubscribe$fHumanResourceProfile $fOrdProfile StudentBody getMnemonic getStudentIdsMnemonic mnemonicTag studentIdTag mkStudentBodytoPairgetSize$fNFDataStudentBody$fXmlPicklerStudentBody$fSelfValidatorStudentBody$fHTMLStudentBody$fShowStudentBody$fReadStudentBody$fEqStudentBody$fOrdStudentBodyCoursegetRequiredLessonsPerWeekgetRequiredFacilityNamesgetTimeslotRequestgetMinimumConsecutiveLessonsgetMaybeMaximumClassSizegetMaybeSynchronisationIdminimumConsecutiveLessonsTagmaximumClassSizeTagrequiredFacilitiesTagrequiredLessonsPerWeekTag defaultMinimumConsecutiveLessonsmkCoursecountStudentPlaces calculateIdealConsecutiveLessonsspecifiesTimesisFluidisRigidhasRigidlySpecifiedDaysrequiresConsecutiveLessons%requestsSeparatedTimelotsWithinAnyDayisSynchronised$fNFDataCourse$fXmlPicklerCourse$fSelfValidatorCourse $fShowCourse $fEqCourse $fOrdCourse getServicegetMaybeOwnLocationIdgetMaybeSpecialtyTopicServicemaximumTeachingRatioTag serviceTagspecialtyTopicTaglookupCourseInlookupSuitableCoursefindSpecifiedTimesoffersSuitableCoursehasAnyIdealTimeslotRequesthasAnySpecificTimeRequesthasSpecialtyTopicinhabitsisSpecialistInoffersAnySynchronisedCourse offersServiceNTimeslotsByTeacherIdBySubject%CoursesByTeacherIdBySynchronisationIdCoursesByTeacherIdTeacherRegister getTeacherIdsgetTeacherProfilesextractDistinctCoursesextractDistinctOwnLocationIdsextractDistinctSubjects calculateWorkloadBoundsBySubjectfindSuitableCourseByTeacherIdcountAvailableTeacherDays!countLessonsPerWeekByFacilityName isInhabited)findCoursesByTeacherIdBySynchronisationId&findDistinctCoursesBySynchronisationIdhasAnyFreePeriodPreferencehasAnySynchronisedCourseshasAnyIdealTimeslotRequestshasAnyCourseMaximumClassSizeshasAnySpecificTimeRequestshasAnyTimeslotRequestshasAnySpecialistsDfindSubjectsOfferedInMultipleCoursesRequiringDifferentLessonsPerWeek%mergeConstraintsOnSynchronisedCoursesMnemonicSeparator StudentClassmergetoHtmlgetStudentClassmkLessonResourceIdsfromStudentView toStudentView $fSelfValidatorLessonResourceIdsOptionsgetFileFormatsgetMaybeOutputConfigFilePathgetNDecimalDigitsgetStudentBodyMnemonicSeparator getVerbosityNDecimalDigitsnDecimalDigitsTagoutputConfigFilePathTag mkOptions$fXmlPicklerOptions$fNFDataOptions$fDefaultOptions$fSelfValidatorOptions $fEqOptions $fShowOptionsMeetingsByTimeMeeting getGroupId mkMeetingdeleteLocationIddeleteStudentBodydeleteTeacherId$fSelfValidatorMeeting $fHTMLMeeting $fEqMeeting $fOrdMeeting $fShowMeeting#RunlengthsByTimeslotIdByLessonByDay+GeneralisedLessonRunlengthByTimeslotIdByDayGenericTimetableToMarkup'GenericTimetableToMarkupTimetableForWeek#observerViewTerminatorCSSIdentifierunavailableCSSIdentifierisDefinedTimeslotextractMaybeLessonsAtextractDistinctLessons4calculateAverageAbsoluteDeviationOfFreeLessonsPerDaycountSubjectWorkloadcountWorkloadByLessoncalculateUtilisationRatioundefineTimeslotsgetFreePeriodCompliancetoXHtmlextractLessons extractTimeslocateUnallocatedAvailableTimes"countUnallocatedAvailableTimeslots getBookedTimehasMatchingLessonAt isBookedWithmkFreeTimetableForWeek0findGeneralisedLessonRunlengthsByTimeslotIdByDay%findSeparatedEqualLessonsWithinAnyDay,findSeparatedEqualSubjectLessonsWithinAnyDayCfindSeparatedEqualLessonRunlengthsByStartingTimeslotIdByLessonByDayareAllSpecifiedTimesBookableisBookedOnAdjacentDayisRunlengthReducibleAtcountLocationChangesextractRoutineBySubjectWrapper MkWrapper AugmentMarkup TimetablemkFreeTimetableextractSynchronousLessonsAtextractCoordinatesundefineTimeslotundefineTimeslotsForpurgedisableAnyValidationInappropriateForTemporaryStudentBodyMerger#hasVariousMinimumConsecutiveLessons $fConfigurationProblemParameters $fSelfValidatorProblemParameters$fNFDataProblemParameters$fXmlPicklerProblemParameters$fEqProblemParameters$fShowProblemParametersProblemAnalysis(getCoursesByTeacherIdBySynchronisationId0getCoursesRequestingSeparatedLessonsWithinAnyDay-getDistinctRunlengthsOfSpecifiedTimesByCoursegetFreeLocationViewTimetablegetFreeStudentViewTimetablegetFreeTeacherViewTimetablegetMeetingResourcesByTimegetMeetingsByTime$getNAvailableDaysPerStudentTimetable$getNAvailableDaysPerTeacherTimetable getNStudents getNTeachersgetNTimeslotsPerDay8getRequiredLessonCombinationsByStudentBodyAvailableByDay*getRequiredLessonCombinationsByStudentBody#getStudentBodiesBySynchronisationId%getSubjectsWithAnIdealTimeslotRequest3getSuitableCoursesByTeacherIdBySubjectByStudentBodygetTimeslotIdRange$getTotalLessonsPerWeekByFacilityNamemkProblemAnalysis$areAnyResourcesBookedForGroupMeeting?doAllCoursesSatifyingAnotherKnowledgeRequirementSpecifyThisTimeareAvailableResourcesisFreelookupCourseFor findCourseForfindCourseForLocationViewLessonfindCourseForTeacherViewLessonisValidTimeslotIdfindDistinctSynchronisationIds MkOptionsgetConfigVersiongetExecutionOptionsgetOutputOptionsgetProblemParametersShowTeacherViewOfTimetableShowLocationViewOfTimetable(appendOutputStudentViewTimetableFilePathsetDisplayRuntimeInformation$setInputStudentViewTimetableFilePathsetMaybeOutputConfigFilePathsetMaybeRandomSeedsetNDecimalDigits setOptimiseLessonCriteriaWeightssetReduceStudentBodyRegistersetRemoveRedundantCoursessetTimeslotIdBounds setVerbosity!zeroInappropriateExecutionOptions$fConfigurationOptionshtmlColourCodeHexDigitshashmkRGBUnitInterval saturatedcombine>-<base Data.EitherEitherround' xp57Tupleghc-prim GHC.TypesBoolTrueFalseNTrials nTrialsTagreductionFactorTaguseMeanOverRasterScansTagMutator$deterministicConstructorFecundityTagrandomConstructorFecundityTag separatorGHC.BaseStringTriple areOrthogonalValidationSwitchSetCheck defaultCheck areAllOffGHC.Enumpredsuccfulltime unavailable findUnion GHC.MaybeNothingrandomLessonMutationNTrialsTag!randomLessonMutationNTimeslotsTag*studentViewTimetableForDayMutationNDaysTag-studentViewTimetableForWeekMutationNTrialsTag0studentViewTimetableForWeekMutationNTimeslotsTagHint filePathTagfindCommonAvailability facilitiesTaggetWastedCapacitycountDistinctCampusesdefaultMeetingTimes hasLocationbyDayTagbyTimeslotIdTagGenerateLessonColour byTimeslotTag cssURLTagmergeDuplicateTimeslotsTagdisplayAxisLabelsTag"displaySupplementaryInformationTagperspectiveTagminimumContrastRatioTagminimumContrastRatioDefaultxhtmlTagxmlTag ideallyTaggroupSpecifiedTimesByDayBoundsunloaded getMinimum getMaximum<+>validIdentifierCharacterSet.showHideButtonCSSIdentifierresourceIdsCSSIdentifierGeneralisedLessonRunlengths bookingTaggetBookedTimeslotIdfindSeparatedEqualLessonsBygetWorkingWeek streamTagMembers studentTagcountImplicitlySpecifiedLessonsgetMaximumTeachingRatiodefaultService$extractDistinctRequiredFacilityNamesfileFormatsTagstudentBodyMnemonicSeparatorTagMeetingsByTimeMutatorxhtml-3000.2.2.1Text.XHtml.InternalsHTML cssIdentifiermeetingsCSSIdentifieroriginCSSIdentifier unallocatedTimeslotCSSIdentifierweekendCSSIdentifierworkdayCSSIdentifierdayToTimetableAssociationTaggetTimetableForDay countWorkload observerIdTag#observerIdToTimetableAssociationTag%locateUnallocatedAvailableCoordinates GHC.ClassesEqOrdextractBookedResourceIdsAt%extractRoutineForStudentBodyBySubjectbookTeacherViewLessonbookLocationViewLessongroupTag locationTag"studentBodyToProfileAssociationTag teacherTagminTagmaxTagdefaultGroupCatalogueGHC.RealIntegral FractionalCharcalculateStudentWorkloadBounds?findSynchronousSeparateMandatoryMeetingsByTimeByHumanResourceId.findSynchronousMeetingsByTimeByHumanResourceId(findHumanResourcesOverloadedWithMeetings-findUnavailableDaysByGroupIdByHumanResourceId!countNTimeslotsPerWeekForMeetingsgetDistinctSubjects#getNTeacherInternalAvailabilityGaps StudentBodiesBySynchronisationIdLessonsByStudentBodyByDay=generateRequiredLessonCombinationsByStudentBodyAvailableByDayLessonsByStudentBody/generateRequiredLessonCombinationsByStudentBodyMeetingResourcesByTime"DistinctTimeslotRunlengthsByCourse(CoursesByTeacherIdBySubjectByStudentBodyfindMeetingsByTimefindMeetingResourcesByTime4findSuitableCoursesByTeacherIdBySubjectByStudentBody.findDistinctRunlengthsOfSpecifiedTimesByCourse1findCoursesRequestingSeparatedLessonsWithinAnyDay&findSubjectsWithAnIdealTimeslotRequest$findStudentBodiesBySynchronisationIdsetTimetableCriteriaWeightscriteriaWeightsMutator