在線ビューワーで指定月以外の平日と土曜休日の判定をしてくれない。
Q&A
Closed
解決したいこと

こちらが現在、指定月以外は常に土曜休日ダイヤとなってしまいます。
平日の時は判定して、平日ダイヤを判定させたいです。
そのために、指定月はきちんとダイヤ判定をしてくれてはいるものの、
他の月で平日ダイヤを表示しません。
例)
発生している問題・エラー
以上同文
例)
NameError (uninitialized constant World)
先にも挙げました画像の通りです。
該当するソースコード
まずはmainから、
// 曜日を表す列挙型
// 曜日を表す列挙型
// 曜日を表す列挙型
// 曜日を表す列挙型
const DayOfWeek = {
SUNDAY: 0,
MONDAY: 1,
TUESDAY: 2,
WEDNESDAY: 3,
THURSDAY: 4,
FRIDAY: 5,
SATURDAY: 6
};
const DiaType = {
OCT_01: 0,
OCT_02: 1,
OCT_03: 2,
WEEKDAY: "weekday",
HOLIDAY: "holiday",
};
let diaDay = DiaType.WEEKDAY;
function judgeDiaDay() {
let nowDateSet = new Date(); // 現在の日付を取得
let nowHour = nowDateSet.getHours();
let nowMinute = nowDateSet.getMinutes();
let nowSecond = nowDateSet.getSeconds();
let nowDay = nowDateSet.getDay();
// 現在の年、月、日を取得
let nowYear = nowDateSet.getFullYear();
let nowMonth = nowDateSet.getMonth() + 1; // 月は0から始まるため1を加算
let nowDate = nowDateSet.getDate();
// 日付変更時刻と現在時刻を比較
if (HHMMSSToSecond(nowHour, nowMinute, nowSecond) < dayChangeTime) {
nowDateSet.setDate(nowDateSet.getDate() - 1); // 前日の日付に変更
nowYear = nowDateSet.getFullYear();
nowMonth = nowDateSet.getMonth() + 1;
nowDate = nowDateSet.getDate();
nowDay = nowDateSet.getDay();
}
if (nowYear < 2000) nowYear += 1900; // 年の補正
setYear = nowYear; // ここでsetYearに現在の年を設定
setMonth = nowMonth;
setDate = nowDate;
setDay = nowDay;
switch (setMonth) {
case 10:
switch (setDate) {
case 01: diaDay = DiaType.OCT_01; break;
case 02: diaDay = DiaType.OCT_02; break;
case 03: diaDay = DiaType.OCT_03; break;
default:
if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.SUNDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.MONDAY; // 週末の処理
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.TUESDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.WEDNESDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.THURSDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.FRIDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.SATURDAY;
} else if (isWeekend(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.WEEKEND; // 週末の処理
} else {
diaDay = DiaType.HOLIDAY;
}
}
break;
case 11:
switch (setDate) {
case 01: diaDay = DiaType.NOV_01; break;
case 02: diaDay = DiaType.NOV_02; break;
case 03: diaDay = DiaType.NOV_03; break;
default:
if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.SUNDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.MONDAY; // 週末の処理
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.TUESDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.WEDNESDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.THURSDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.FRIDAY;
} else if (dayJudge(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.SATURDAY;
} else if (isWeekend(setYear, setMonth, setDate, setDay)) {
diaDay = DiaType.WEEKEND; // 週末の処理
} else {
diaDay = DiaType.HOLIDAY;
}
}
break;
default:
diaDay = dayJudge(setYear, setMonth, setDate, setDay) === "weekday" ? DiaType.WEEKDAY : DiaType.HOLIDAY;
}
updateDisplayDiaDay();
return diaDay === DiaType.WEEKDAY;
}
function updateDisplayDiaDay() {
const todayDiaDaySpan = document.getElementById("todayDiaDaySpan");
if (todayDiaDaySpan) {
todayDiaDaySpan.innerHTML = getDiaTypeString(diaDay);
todayDiaDaySpan.style.backgroundColor = getDiaTypeColor(diaDay);
}
}
function getDiaTypeString(diaType) {
switch (diaType) {
case DiaType.WEEKDAY: return " 平日ダイヤ ";
case DiaType.HOLIDAY: return "土・休日ダイヤ";
case DiaType.OCT_01: return "10月01日ダイヤ";
case DiaType.OCT_02: return "10月02日ダイヤ";
case DiaType.OCT_03: return "10月03日ダイヤ";
case DiaType.NOV_01: return "11月01日ダイヤ";
case DiaType.NOV_02: return "11月02日ダイヤ";
case DiaType.NOV_03: return "11月03日ダイヤ";
default: return "";
}
}
function getDiaTypeColor(diaType) {
switch (diaType) {
case DiaType.WEEKDAY: return "#9ff";
case DiaType.HOLIDAY: return "#fcf";
case DiaType.OCT_01: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
case DiaType.OCT_02: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
case DiaType.OCT_03: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
case DiaType.NOV_01: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
case DiaType.NOV_02: return "#a0f0a0"; // 例:2月11日ダイヤの背景色
case DiaType.NOV_03: return "#f0a0a0"; // 例:2月12日ダイヤの背景色
default: return "";
}
}
function isHoliday(year, month, date) {
return window.isHolidayOrWeekend(year, month, date);
}
function isWeekday(year, month, day) {
const dayOfWeek = new Date(year, month - 1, day).getDay();
return dayOfWeek >= 1 && dayOfWeek <= 5;
}
function isSunday(year, month, date) {
return window.isHolidayOrSunday(year, month, date); // windowを付けて呼び出す
}
function isTwilightDown(year, month, day) {
const date = new Date(year, month - 1, day);
const dayOfWeek = date.getDay();
return dayOfWeek === 1 || dayOfWeek === 3 || dayOfWeek === 5 || dayOfWeek === 6;
}
function isTwilightUp(year, month, day) {
const date = new Date(year, month - 1, day);
const dayOfWeek = date.getDay();
return dayOfWeek === 0 || dayOfWeek === 1 || dayOfWeek === 3 || dayOfWeek === 5;
}
function isWednesday(year, month, day) {
const date = new Date(year, month - 1, day);
return date.getDay() === 3;
}
function judgeTrainRunningDay(value) {
if (value === "全日") return true;
if (value === "平日") {
if (((diaDay === DiaType.WEEKDAY))||
((diaDay === DiaType.OCT_01 && isWeekday(setYear, 10, 1)) ||
(diaDay === DiaType.OCT_02 && isWeekday(setYear, 10, 2)) ||
(diaDay === DiaType.OCT_03 && isWeekday(setYear, 10, 3)) ||
以下略
(diaDay === DiaType.NOV_30 && isWeekday(setYear, 11, 30)))) {
return true; // 水曜日運休の場合
}
}
if ((value === "休日")||(value === "休日運転")) {
if ((diaDay === DiaType.HOLIDAY)||
((diaDay === DiaType.OCT_01 && isSunday(setYear, 10, 1)) ||
(diaDay === DiaType.OCT_02 && isSunday(setYear, 10, 2)) ||
(diaDay === DiaType.OCT_03 && isSunday(setYear, 10, 3)) ||
以下略
(diaDay === DiaType.NOV_30 && isSunday(setYear, 11, 30)))) {
return true; // 水曜日運休の場合
}
}
if (value === "休日運休") {
if ((diaDay === DiaType.WEEKDAY)||
((diaDay === DiaType.OCT_01 && !isSunday(setYear, 10, 1)) ||
(diaDay === DiaType.OCT_02 && !isSunday(setYear, 10, 2)) ||
(diaDay === DiaType.OCT_03 && !isSunday(setYear, 10, 3)) ||
以下略
(diaDay === DiaType.NOV_30 && !isSunday(setYear, 11, 30)))) {
return true; // 水曜日運休の場合
}
}
if (value === "土曜・休日") {
if (((diaDay === DiaType.HOLIDAY))||
((diaDay === DiaType.OCT_01 && isHoliday(setYear, 10, 1)) ||
(diaDay === DiaType.OCT_02 && isHoliday(setYear, 10, 2)) ||
(diaDay === DiaType.OCT_03 && isHoliday(setYear, 10, 3)) ||
以下略
(diaDay === DiaType.NOV_30 && isHoliday(setYear, 11, 30)))) {
return true; // 水曜日運休の場合
}
}
if (value === "10月9・12・31日・11月3・21・24日運転") {
if(!(diaDay === DiaType.WEEKDAY || diaDay === DiaType.HOLIDAY)&&
(diaDay === DiaType.OCT_09 ||
diaDay === DiaType.OCT_12 ||
diaDay === DiaType.OCT_31 ||
diaDay === DiaType.NOV_03 ||
diaDay === DiaType.NOV_21 ||
diaDay === DiaType.NOV_24)) {
return true; // 水曜日運休の場合
}
}
if (value === "10月12日・11月3・24日運転" &&
(diaDay === DiaType.OCT_12 ||
diaDay === DiaType.NOV_03 ||
diaDay === DiaType.NOV_24)) {
return true;
}
if (value === "10月9・12・31日・11月3・21・24日運休") {
if ((diaDay === DiaType.WEEKDAY || diaDay === DiaType.HOLIDAY) ||
!(diaDay === DiaType.OCT_09||
diaDay === DiaType.OCT_12||
diaDay === DiaType.OCT_31||
diaDay === DiaType.NOV_03||
diaDay === DiaType.NOV_21||
diaDay === DiaType.NOV_24)) {
return true; // 水曜日運休の場合
}
}
if (value === "10月10→12日・11月1→3日運転" && ((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
(diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03))) return true;
if (value === "10月10→12日・11月1→3・22→24日運転" &&((diaDay === DiaType.OCT_10)||(diaDay === DiaType.OCT_11)||(diaDay === DiaType.OCT_12)||
(diaDay === DiaType.NOV_01)||(diaDay === DiaType.NOV_02)||(diaDay === DiaType.NOV_03)||(diaDay === DiaType.NOV_22)||(diaDay === DiaType.NOV_23)||(diaDay === DiaType.NOV_24)))
return true;
return false; // その他の場合
}//エラーの原因は認識されていないダイヤパターン
function changeDiaType() {
switch (diaDay) {
case DiaType.WEEKDAY: diaDay = DiaType.HOLIDAY; break;
case DiaType.HOLIDAY: diaDay = DiaType.OCT_01; break;
case DiaType.OCT_01: diaDay = DiaType.OCT_02; break;
case DiaType.OCT_02: diaDay = DiaType.OCT_03; break;
case DiaType.OCT_03: diaDay = DiaType.OCT_04; break;
以下略
case DiaType.NOV_30: diaDay = DiaType.WEEKDAY; break;
}
updateDisplayDiaDay();
getTimeTable();
setNewTime(setSecondSum);
drawTrain();
resetTimetableSpace();
}
//種別を入れると文字色と背景色を返す
//color=0なら背景色を返す、color=1なら文字色を返す
function getTypeColor(typeName, colorType)
{
var i;
for(i=0 ; i<trainTypeColor.length ; i++)
{
//alert(typeName+" "+trainTypeColor[i])
if(typeName == trainTypeColor[i][0])
{
if(colorType == 0)
//背景色を返す
return trainTypeColor[i][1][0];
else
//文字色を返す
return trainTypeColor[i][1][1];
}
}
}
function HHMMtoSecond(HHMM)
{
var hour = Math.floor(HHMM / 100);
var minute = HHMM % 100;
var second = 0;
return hour * 60 * 60 + minute * 60 + second;
}
function HHMMSSToSecond(hour, minute, second)
{
return hour * 60 * 60 + minute * 60 + second;
}
function secondToHHMMSS(value)
{
var hour = Math.floor(value / 3600);
var minute = Math.floor(value % 3600 / 60);
var second = Math.floor(value % 60);
return hour + ":" + minute + ":" + second;
}
function secondToHour(value)
{
var num = Math.floor(value / 3600);
if(num < 24)
return num;
else
return num - 24;
}
function secondToMinute(value)
{
return Math.floor(value % 3600 / 60);
}
function secondToSecond(value)
{
return Math.floor(value % 60);
}
そしてdiatypejudgeです。
(function() { // Start of the IIFE
const DayOfWeek = {
SUNDAY: 0,
MONDAY: 1,
TUESDAY: 2,
WEDNESDAY: 3,
THURSDAY: 4,
FRIDAY: 5,
SATURDAY: 6,
};
const DiaType = {
OCT_01: 0,
OCT_02: 1,
OCT_03: 2,
WEEKDAY: "weekday",
HOLIDAY: "holiday",
};
// getNthDayOfMonth などの関数は変更なしで存置
function getNthDayOfMonth(year, month, dayOfWeek, n) {
let count = 0;
let day = 1;
let targetDate = null;
while (true) {
const dateObj = new Date(year, month - 1, day);
if (dateObj.getMonth() !== month - 1) {
break;
}
if (dateObj.getDay() === dayOfWeek) {
count++;
if (count === n) {
targetDate = dateObj;
break;
}
}
day++;
}
if (targetDate) {
return { month: targetDate.getMonth() + 1, date: targetDate.getDate() };
}
return null;
}
function calculateVernalEquinox(year) {
let day = 20;
if (year % 4 === 0 && year >= 2000 && year <= 2099) {
day = 20;
} else {
day = 21;
}
if (year === 2092 || year === 2096) day = 19;
if (year === 2056 || year === 2060 || year === 2064 || year === 2068 || year === 2072 || year === 2076 || year === 2080 || year === 2084 || year === 2088) day = 20;
return new Date(year, 2, day);
}
function calculateAutumnalEquinox(year) {
let day = 23;
if (year % 4 === 0 && year >= 2000 && year <= 2099) {
day = 23;
} else {
day = 23;
}
if (year === 2012 || year === 2016 || year === 2020 || year === 2024 || year === 2028) day = 22;
return new Date(year, 8, day);
}
// 固定の祝日リストを定義
const fixedHolidays = [
// 月は0-indexedで指定
{ month: 1, date: 1, name: "元日" },
{ month: 2, date: 11, name: "建国記念の日" },
{ month: 2, date: 23, name: "天皇誕生日" },
{ month: 4, date: 29, name: "昭和の日" },
{ month: 5, date: 3, name: "憲法記念日" },
{ month: 5, date: 4, name: "みどりの日" },
{ month: 5, date: 5, name: "こどもの日" },
{ month: 7, date: 20, name: "海の日" }, // 2024年の海の日 例
{ month: 7, date: 11, name: "山の日" },
{ month: 11, date: 3, name: "文化の日" },
{ month: 11, date: 23, name: "勤労感謝の日" },
// 必要に応じて他の固定祝日を追加
];
function getJapaneseHolidays(year) {
const dynamicHolidays = [];
// ハッピーマンデー制度に基づく祝日
dynamicHolidays.push(getNthDayOfMonth(year, 1, DayOfWeek.MONDAY, 2)); // 成人の日 (1月第2月曜日)
dynamicHolidays.push(getNthDayOfMonth(year, 7, DayOfWeek.MONDAY, 3)); // 海の日 (7月第3月曜日)
dynamicHolidays.push(getNthDayOfMonth(year, 9, DayOfWeek.MONDAY, 3)); // 敬老の日 (9月第3月曜日)
dynamicHolidays.push(getNthDayOfMonth(year, 10, DayOfWeek.MONDAY, 2)); // スポーツの日 (10月第2月曜日)
// 春分の日
const equinoxSpring = calculateVernalEquinox(year);
if (equinoxSpring) {
dynamicHolidays.push({ month: equinoxSpring.getMonth() + 1, date: equinoxSpring.getDate() });
}
// 秋分の日
const equinoxAutumn = calculateAutumnalEquinox(year);
if (equinoxAutumn) {
dynamicHolidays.push({ month: equinoxAutumn.getMonth() + 1, date: equinoxAutumn.getDate() });
}
return dynamicHolidays.filter(h => h !== null);
}
// 祝日か日曜日かを判定する関数 (既存のまま)
function isHolidayOrSunday(year, month, date) {
const dateObj = new Date(year, month - 1, date);
const dayOfWeek = dateObj.getDay();
if (dayOfWeek === DayOfWeek.SUNDAY) {
return true;
}
const allHolidaysForYear = [
...fixedHolidays,
...getJapaneseHolidays(year)
];
const isRecognizedHoliday = allHolidaysForYear.some(holiday =>
holiday.month === month && holiday.date === date
);
if (isRecognizedHoliday) {
return true;
}
// 振替休日判定
if (dayOfWeek === DayOfWeek.MONDAY) {
const previousDay = new Date(year, month - 1, date - 1);
const prevDayYear = previousDay.getFullYear();
const prevDayMonth = previousDay.getMonth() + 1;
const prevDayDate = previousDay.getDate();
if (previousDay.getDay() === DayOfWeek.SUNDAY) { // 前日が日曜日の場合のみ振替対象
const isPreviousDayRecognizedHoliday = allHolidaysForYear.some(holiday =>
holiday.month === prevDayMonth && holiday.date === prevDayDate
);
if (isPreviousDayRecognizedHoliday) {
return true;
}
}
}
return false;
}
// 祝日または週末かを判定する関数 (既存のまま)
function isHolidayOrWeekend(year, month, date) {
const dateObj = new Date(year, month - 1, date);
const dayOfWeek = dateObj.getDay();
if ((dayOfWeek === DayOfWeek.SUNDAY)|| (dayOfWeek === DayOfWeek.SATURDAY)){
return true;
}
const allHolidaysForYear = [
...fixedHolidays,
...getJapaneseHolidays(year)
];
const isRecognizedHoliday = allHolidaysForYear.some(holiday =>
holiday.month === month && holiday.date === date
);
if (isRecognizedHoliday) {
return true;
}
// 振替休日判定
if (dayOfWeek === DayOfWeek.MONDAY) {
const previousDay = new Date(year, month - 1, date - 1);
const prevDayYear = previousDay.getFullYear();
const prevDayMonth = previousDay.getMonth() + 1;
const prevDayDate = previousDay.getDate();
if (previousDay.getDay() === DayOfWeek.SUNDAY) {
const isPreviousDayRecognizedHoliday = allHolidaysForYear.some(holiday =>
holiday.month === prevDayMonth && holiday.date === prevDayDate
);
if (isPreviousDayRecognizedHoliday) {
return true;
}
}
}
return false;
}
const dayJudge = (year, month, date) => {
const d = new Date(year, month, date);
const dayOfWeek = d.getDay(); // 0 for Sunday, 1 for Monday, ..., 6 for Saturday
// Check for specific dates first (e.g., OCT_XX, NOV_XX, etc.)
switch (month) { // month is 0-indexed
case 9: // October (0-indexed: 9)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`OCT_${paddedDate}`] !== undefined) {
return DiaType[`OCT_${paddedDate}`];
}
}
break;
case 10: // November (0-indexed: 10)
if (date >= 1 && date <= 30) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`NOV_${paddedDate}`] !== undefined) {
return DiaType[`NOV_${paddedDate}`];
}
}
break;
case 11: // December (0-indexed: 11)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`DEC_${paddedDate}`] !== undefined) {
return DiaType[`DEC_${paddedDate}`];
}
}
break;
case 0: // January (0-indexed: 0)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`JAN_${paddedDate}`] !== undefined) {
return DiaType[`JAN_${paddedDate}`];
}
}
break;
case 1: // February (0-indexed: 1)
if (date >= 1 && date <= 29) { // Consider leap year
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`FEB_${paddedDate}`] !== undefined) {
return DiaType[`FEB_${paddedDate}`];
}
}
break;
case 2: // March (0-indexed: 2)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`MAR_${paddedDate}`] !== undefined) {
return DiaType[`MAR_${paddedDate}`];
}
}
break;
case 3: // April (0-indexed: 3)
if (date >= 1 && date <= 30) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`APR_${paddedDate}`] !== undefined) {
return DiaType[`APR_${paddedDate}`];
}
}
break;
case 4: // May (0-indexed: 4)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`MAY_${paddedDate}`] !== undefined) {
return DiaType[`MAY_${paddedDate}`];
}
}
break;
case 5: // June (0-indexed: 5)
if (date >= 1 && date <= 30) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`JUN_${paddedDate}`] !== undefined) {
return DiaType[`JUN_${paddedDate}`];
}
}
break;
case 6: // July (0-indexed: 6)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`JUL_${paddedDate}`] !== undefined) {
return DiaType[`JUL_${paddedDate}`];
}
}
break;
case 7: // August (0-indexed: 7)
if (date >= 1 && date <= 31) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`AUG_${paddedDate}`] !== undefined) {
return DiaType[`AUG_${paddedDate}`];
}
}
break;
case 8: // September (0-indexed: 8)
if (date >= 1 && date <= 30) {
const paddedDate = String(date).padStart(2, '0');
if (DiaType[`SEP_${paddedDate}`] !== undefined) {
return DiaType[`SEP_${paddedDate}`];
}
}
break;
default:
break;
}
if (isHolidayOrSunday(year, month, date)) {
return DiaType.SUNDAY;
} else if (dayOfWeek === DayOfWeek.SATURDAY) { // 土曜日であるかを確認
return DiaType.SATURDAY;
} else {
return DiaType.WEEKDAY;
}
}; // <--- ここに dayJudge 関数の閉じカッコがあります。これより後ろに余分なカッコがないか確認してください。
// To make dayJudge and isHolidayOrSunday accessible from your "main" script,
// you need to attach them to the global window object.
window.dayJudge = dayJudge;
window.isHolidayOrSunday = isHolidayOrSunday;
window.isHolidayOrWeekend = isHolidayOrWeekend;
})(); // End of the IIFE
例)
def greet
puts Hello World
end
自分で試したこと
ちなみに元ネタはここです。
http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html
ここに問題・エラーに対して試したことを記載してください。
自分で臨んだエラー対策ですが、const diatypeが違うのかと、
生成AIサイトのgeminiで聞きましたが、
それでは改善しませんでした。
思い当たる節が見当たらないので、ここでのご返答をお待ちしております。
なにとぞご理解賜りますようお願い申し上げます。
