text:
A happy wedding day in St. Andrew's Church for Helen and Daniel
By kyreniacommentator on June 4, 2018
On Thursday 31st May, in spite of the inclement weather (thunderstorms and torrential rain!), St. Andrew's Church in Kyrenia was filled with happiness and joy at the wedding of Helen Lukey and Daniel Stickley.
Helen, a Senior Carer from Poole and Daniel, a Leisure Centre Duty Manager and Lifeguard from Blandford met through a dating website some five years ago and, by a remarkable coincidence which neither party realised at the time, became engaged on exactly the same date as Helen's mum and dad 50 years earlier!
Congratulations to Helen and Daniel
Judy and Mike, Helen's parents, had been visiting North Cyprus since 1997 and finally became 'swallows' when they bought their Ozanköy home in 2003. So it was natural that their daughter, who had spent many happy holidays with them in their new home, decided to have her wedding here, especially since the weather would be so beautiful in May!
Daniel was supported by his best man Ricky Trim, while Helen was escorted on the arm of her dad, Mike, by her bridesmaids Nicki Way, Sally Marks, Jasmine Lukey and Anjie Teideman. Flower girl Megan Lukey strewed the aisle with petals while Helen's grandson Noah Lukey, held in his dad Ben Lukey's arms, was page boy: four generations of the family all together for this happy day.
The Revd Christine Goldsmith conducted the ceremony, which was administered by Pat Baulch, the Diocesan Wedding Co-ordinator.
Revd Christine Goldsmith conducts the service
The reception was held in Eminem in Çatalköy.
Judy and Mike, who organised the wedding in North Cyprus said, "We'd like to express our heartfelt thanks to the dedicated members of St. Andrew's Church who have shown the utmost professionalism and care in organising the wedding service of Helen and Dan.
"Special thanks must go to the Church Wardens, Stuart (Hillard) and Sandy (Oram), and to John (Worton-Griffiths) for putting the entrance and exit music into the church's sound system.
"A huge thank you to Earl (Moffitt – St. Andrew's Director of Music), John (Crothers, Organist) and the Choir for their greatly appreciated input."
For more news from St Andrews Church, Kyrenia please click here
Revd Christine Goldsmith
Mr and Mrs at last
Photos courtesy of Susie Forster Photography.
Categories: News, Reviews, Weddings
Tagged as: Çatalköy, Eminem, St Andrews Church Kyrenia, Wedding Day
John Aziz Kent reply to Fikri Toros re Anastasiades rejection of joint mobile phone communications
Peace and Prosperity for all Cypriots, An open letter to Minister of Foreign Affairs Kudret Ozersay


Full service facility with 80 well-equipped guest rooms including jacuzzi and kitchenette suites. All rooms have coffee makers, data ports, iron and ironing boards. Amenities include an outdoor heated pool, indoor hot tub, an exercise room, sports bar and restaurant.


Malays J Med Sci, 2015 Mar-Apr;22(2):55-60.
Cleft lip and palate (CLP) is the most common orofacial congenital malformation in live births. CLP can occur individually or in combination with other congenital deformities. Affected patients experience a number of dental, aesthetic, speech, hearing, and psychological complications and have a higher incidence of severe dental conditions. The purpose of this study is to characterise the different types of dental anomalies that are frequently associated with CLP patients based on a literature survey.
Acta Odontol. Scand., 2013 Nov;71(6):1520-31.
This study aimed to measure and compare tooth size ratios in a Bangladeshi population across the following groups: those with normal occlusion, crowding or spacing; those with normal, increased or decreased overjet; those with normal, increased or decreased overbite; those with or without dental mid-line discrepancy; and those with or without lip competence. It also presents a graphical overview of the anterior and overall ratios from the study and using available global data.
Cleft Palate Craniofac. J., 2015 Sep;52(5):634.
Malays J Med Sci, 2015 Jan-Feb;22(1):4-11.
In the contemporary era, the demand for orthodontic treatment is ever rising. Orthodontic treatment duration can range from a year to a few years. Our aim is to assess the available techniques of categorising treatment effectiveness in patients with cleft lip and palate (CLP) and to study their effect on improvement of treatment outcomes. The electronic databases including Medline-PUBMED, Science Direct, and ISI Web of Knowledge were searched from 1987 to 2013, and 40 311 relevant articles were found. Of these, we identified 22 articles including original articles as well as literature reviews. The different parameters and indices that are applied to speed-up orthodontic treatment outcomes in patients with CLP were identified as the GOSLON Yardstick, 5-year-old index, EUROCRAN index, Huddart Bodenham system, modified Huddart Bodenham system, GOAL Yardstick and, Bauru-Bilateral Cleft Lip and Palate Yardstick. This overview can create better awareness regarding the uses, advantages, and disadvantages of the different indices. It can enable better assessment and provide the impetus needed for a sustained upgrade in the standards of care for CLP in daily orthodontics.
Korean J Orthod, 2016 May;46(3):171-9.
The primary aim of the study was to generate new prediction equations for the estimation of maxillary and mandibular canine and premolar widths based on mandibular incisors and first permanent molar widths.
Eur J Dent, 2816 Apr-Jun;10(2):176-82.
Comprehensive diagnosis and treatment planning are essential in a successful orthodontic practice. The purpose of this study is to determine and compare intermaxillary tooth size discrepancy (IMTSD) using traditional digital caliper (DC) measurement on plaster dental models and stereomicroscopic digital dental models (SM).
The aim of this study was to assess the effects of four enamel preparation techniques on shear bond strength (SBS) of brackets bonded with a resin-modified glass ionomer cement (RMGIC). Adhesive Remnant Index (ARI) and enamel surface roughness (Ra) were also investigated after cement removal.
Eur J Dent, 2015 Oct-Dec;9(4):490-9.
To investigate the maxillary and mandibular anterior crown width/height ratio and its relation to various arch perimeters, arch length, and arch width (intercanine, interpremolar, and intermolar) groups.
Dent Res J (Isfahan), 2013 Jan;10(1):81-6.
Bonding of molar tubes is becoming more popular in orthodontics. Occasionally, these bonding are done on posterior porcelain crowns or bridges. The purpose of this study was to evaluate the shear bond strength of buccal tubes on feldspathic porcelain crowns with two different methods.
Br J Oral Maxillofac Surg, 2013 Dec;51(8):e205-10.
We have evaluated the craniofacial morphology of Japanese patients with unilateral cleft lip and palate (UCLP) and assessed the various postnatal factors that affect it. Lateral cephalograms of 140 subjects (mean (SD) aged 7 (2) years) with UCLP were taken before orthodontic treatment. Surgeons from Hokkaido University Hospital had done the primary operations. The craniofacial morphology was assessed by angular and linear cephalometric measurements. Cheiloplasty, palatoplasty, and preoperative orthopaedic treatment were chosen as postnatal factors. To compare the assessments of the postnatal factors, we made angular and linear cephalometric measurements for each subject and converted them into Z scores in relation to the mean (SD) of the two variables. Subjects treated by the modified Millard cheiloplasty had larger sella-nasion-point A (SNA) and nasion-point A-pogonion (NA-POG) measurements than subjects treated by the modified Millard with a vomer flap cheiloplasty. Two-stage palatoplasty showed consistently better craniofacial morphology than the other palatoplasty. Subjects who had preoperative orthopaedic treatment with a Hotz plate had significantly larger upper incisor/sella-nasion (U1-SN) measurements than who had no preoperative orthopaedic treatment or an active plate. We conclude that in subjects treated by a modified Millard type of cheiloplasty, a two-stage palatoplasty, and a Hotz plate there were fewer adverse effects on craniofacial morphology.
Cleft Palate Craniofac. J., 2018 Aug;55(7):966-973.
OBJECTIVE: To evaluate the dental arch relationship (DAR) of nonsyndromic unilateral cleft lip and palate (UCLP) and to explore the various phenotype and postnatal treatment factors that are responsible for poor DAR.
SETTING: School of Dental Science, Universiti Sains Malaysia.
SUBJECTS: Eighty-four Bangladeshi children with nonsyndromic UCLP who received cheiloplasty and palatoplasty.
MAIN OUTCOME MEASURES: Dental models were taken at 5 to 12 years of age (man: 7.69), and dental arch relationships were assessed using modified Huddart/Bodenham index (mHB) by two raters. Kappa statistics was used to evaluate the intra- and interexaminer agreements, chi-square was used to assess the associations, and logistic regression analysis was used to explore the responsible factors that affect DAR.
RESULTS: The total mHB score (mean [SD]) was -8.261 (7.115). Intra- and interagreement was very good. Using crude and stepwise backward regression analysis, significant association was found between positive history of class III (P = .025, P = .030, respectively) and unfavorable DAR. Complete UCLP (P = .003) was also significantly correlated with unfavorable DAR.
CONCLUSION: This multivariate study suggested complete type of UCLP and positive history of class III had a significantly unfavorable effect on the DAR.
Int. J. Pediatr. Otorhinolaryngol., 2017 Jan;92:70-74.
OBJECTIVES: The purpose of the current study was to assess the treatment outcome of non-syndromic patients having complete unilateral cleft lip and palate (CUCLP) by using GOSLON index and to determine any association of pre and/or postnatal factors with the treatment outcome.
MATERIALS AND METHODS: One hundred and one sets of dental models of patients having CUCLP were assessed in this retrospective study. Five examiners that were blinded to case-specific information scored the dental models at two instances with an interval of two weeks to ensure memory bias elimination (5 × 101 × 2 = 1010 observations). Calibration courses were conducted prior to scoring and each examiner was provided with scoring sheets, pictures of GOSLON reference models and flowcharts explaining the scoring method.
Int. J. Pediatr. Otorhinolaryngol., 2017 Sep;100:91-95.
OBJECTIVES: Assessment of treatment outcome is the only non-invasive approach to identify the effects of cleft lip and palate repair and modify management accordingly. Here the aim is to assess the outcome of complete unilateral cleft lip and palate (CUCLP) patients using EUROCRAN index and to check whether there are any factors associated with the treatment outcome.
MATERIALS AND METHODS: It is a retrospective cross sectional study. Dental models were collected from archives of two cleft referral centers in Pakistan. Five blinded examiners scored 101 models twice at two week interval. The primary outcome was mean EUROCRAN scores based on dental arch relationships and palatal surface morphology.
RESULTS: A mean(SD) score of 2.72 (0.76) and 2.20 (0.73) was determined based on dental arch relationships and palatal surface morphology, respectively. According to the final logistic regression model, modified Millard technique (cheiloplasty) and Veau-Wardill-Kilners' method (palatoplasty) had higher odds of producing unfavorable treatment outcome.
CONCLUSIONS: Present study determined a fair and a fair to poor treatment outcome based on dental arch relationships and palatal surface morphology, respectively. Our study suggests a significant association between treatment outcome and primary surgical techniques for lip and palate. These findings could warrant a modification of management protocols to ensure improvement in future cleft outcomes.
Cleft Palate Craniofac. J., 2018 05;55(5):682-687.
OBJECTIVES: The aim of this study is to assess the treatment outcome of complete unilateral cleft lip and palate (CUCLP) patients using modified Huddart/Bodenham scoring system (MHB). To determine whether there is an association of congenital and postnatal factors with the treatment outcome.
SETTING: Two regional cleft-referral centers.
MAIN OUTCOME MEASURES: In the current study, 101 pairs of dental models of non-syndromic CUCLP patients were retrieved from hospital archives. Each occlusal relationship from central incisor till the first permanent molars were scored except the lateral incisor. Sum of 10 occlusal relationships in each study sample gave a total occlusion score. The primary outcome was the mean total occlusion score.
RESULTS: According to MHB, a mean (standard deviation) total occlusion score of -8.92 (6.89) was determined. Based on treatment outcome, 66 cases were favorable (grades 1, 2, and 3) and 35 cases were unfavorable (grades 4 and 5). Chi-square tests indicated, difference of cheiloplasty ( P = .001) and palatoplasty ( P < .001) statistically significant. Five variables-gender, family history of cleft, cleft side, cheiloplasty, and palatoplasty-were analyzed with a logistic regression model.
CONCLUSIONS: Final model indicated that cases treated with modified Millard technique (cheiloplasty) and Veau-Wardill-Kilner method (palatoplasty) had higher odds of unfavorable treatment outcome.
BMC Pediatr, 2017 May 06;17(1):119.
BACKGROUND: Cleft lip and palate (CLP) is one of the most common birth defects. Multiple factors are believed to be responsible for an unfavorable dental arch relationship in CLP. Facial growth (maxillary) retardation, which results in class III malocclusion, is the primary challenge that CLP patients face. Phenotype factors and postnatal treatment factors influence treatment outcomes in unilateral cleft lip and palate (UCLP) children, which has led to a great diversity in protocols and surgical techniques by various cleft groups worldwide. The aim of this study was to illustrate the dental arch relationship (DAR) and palatal morphology (PM) of UCLP in Bangladeshi children and to explore the various factors that are responsible for poor DAR and PM.
METHODS: Dental models of 84 subjects were taken before orthodontic treatment and alveolar bone grafting. The mean age was 7.69 (SD 2.46) years. The DAR and PM were assessed blindly by five raters using the EUROCRAN index (EI). Kappa statistics was used to evaluate the intra- and inter-examiner agreement, chi square was used to assess the associations, and logistic regression analysis was used to explore the responsible factors that affect DAR and PM.
RESULTS: The mean EUROCRAN scores were 2.44 and 1.93 for DAR and PM, respectively. Intra- and inter-examiner agreement was moderate to very good. Using crude and stepwise backward regression analyses, significant associations were found between the modified Millard technique (P = 0.047, P = 0.034 respectively) of cheiloplasty and unfavorable DAR. Complete UCLP (P = 0.017) was also significantly correlated with unfavorable DAR. The PM showed a significant association with the type of cleft, type of cheiloplasty and type of palatoplasty.
CONCLUSION: This multivariate study determined that the complete type of UCLP and the modified Millard technique of cheiloplasty had significantly unfavorable effects on both the DAR and PM.
Orthod Craniofac Res, 2017 Aug;20(3):134-139.
OBJECTIVE: Reverse Twin-Block (RTB) and Reverse Pull Face Mask (RPFM) appliances are used to correct Class III malocclusion in growing patients. Aim of this retrospective study was to compare and analyse craniofacial changes produced by RTB and RPFM in the early and late mixed dentition in Malay children with Class III malocclusion.
METHODS: Data consisted of pre- and post-treatment lateral cephalograms of 95 children, 49 patients with RTB and 46 patients with RPFM, divided into an early (8-9 year) and late (10-11 year) group. Treatment changes were assessed by the Ricketts analysis using CASSOS software, where 71 anatomic landmarks were identified in each cephalogram. Paired and independent t tests were performed for statistical comparison.
RESULTS: Paired t test revealed significant changes in facial axis, facial angle, MD plane to FH, lower facial height, mandibular arc, maxillary convexity, U1 to APog, L1 to APog, L1 to APog angle and upper lip to E-plane measurements in RPFM, whereas significant changes were found in facial taper, U1 to APog and lower lip to E-plane values with RTB in the early treatment group. Independent t test revealed significant changes in U1 to APog, L1 to APog and U6 to PtV values in the RTB group. Post-treatment comparison of RTB and RPFM showed significant differences in L1 to APog and L1 to APog angle values.
CONCLUSIONS: RPFM revealed more favourable craniofacial changes than RTB, particularly in the late mixed dentition stage.


SONAMARG The Meadow of Gold.Sonamarg is situated at a distance of 84 kms from Srinagar, on the Srinagar-Ladakh Road. The route passes through the picturesque town of Ganderbal (21 kms), Kangan (40 kms) and Gund of the SindhValley, before reaching the resort. Spectacular views of the Harmukh range dominate the horizon. The drive to Sonamarg is through the SindhValley which presents yet another spectacular facet of countryside in Kashmir. Situated at an altitude of 2730 m, Sonamarg (The meadow of gold) has, as its backdrop, snowy mountains against a cerulean sky. The SindhRiver that meanders through the valley abounds with trout. Ponies can be hired for the trip up to Thajiwas glacier, which is a major local attraction during the summer months.
Sonamarg is the base of a major trek that passes along several mountain lakes Vishansar, Kishansar, Gadsar, Satsar and Gangabal. Sonamarg is also the take off station for the drive to Ladakh across the Zojila, a major pass in the Great Himalayan Range, through which the Srinagar-Leh Roadpasses. Sonamarg is also a base for undertaking the yatra to the holy Amarnath cave.
The climate of Sonamarg is very bracing; but the rainfall is frequent though not heavy, except for two or three days at a time in July and August with fine spell in between. From Sonamarg, trekking routes lead to the Himalayan lakes of Vishansar (4084 msl), Krishnasar (3810 msl) and Gangabal (3658 msl). Other lakes in the region are Gadsar, stocked with snowtrout and Satsar, glacier-fed and surrounded by banks of alpine flowers.


text:
/*

An interpreter for a minimalist Reference-Counted Language.

Reads expressions from standard input and executes them.

Syntax:

EXPR ::= ATOM               variable lookup
       | (EXPR EXPR)        function application
       | (fun (PARAM BODY)) lambda expression
       | (quote EXPR)       evaluates to EXPR itself

Currently, there is just one built-in function: 'print_atom'.

Examples:

    (print_atom (quote Hello_world!))
 => Hello_world!

    ((fun (iter (iter iter)))
     (fun (iter ((fun (v (iter iter))) (print_atom (quote Hello))))))
 => HelloHelloHelloHello...

To compile (with MSVC):

    cl rcl.c tokenizer.c stringBuffers.c

Performs tail call optimization. Also: does not use the C stack
(i.e. the C program performs no recursion), so recursion depth is
limited only by available memory and no C stack overflows can
happen.

Memory safety of the interpreter has been verified using VeriFast. It follows
that it is relatively safe to run untrusted code with this interpreter.

*/

#include <stdlib.h>
#include <stdio.h>
#include "stringBuffers.h"
#include "tokenizer.h"
//@ #include "ghostlist.gh"
//@ #include "counting.gh"

void error(char *msg)
    //@ requires [?f]string(msg, ?cs);
    //@ ensures false;
{
    puts(msg);
    abort();
}

typedef void dispose_func/*@(predicate(void *) inv)@*/(struct object *object);
    //@ requires heap0(nil) &*& object->refCount |-> _ &*& object->class |-> _ &*& inv(object);
    //@ ensures heap0(nil);

struct class {
    char *name;
    //@ predicate(void *) inv;
    dispose_func *dispose;
};

struct object {
    int refCount;
    struct class *class;
};

struct globals {
    int dummy;
    //@ int objectListId;
};

struct globals globals;

/*@

predicate object_ticket_base(struct object *object; struct class *class) =
    object->class |-> class &*& [_]globals_objectListId(&globals, ?id) &*& ghost_list_member_handle(id, object);

predicate object_refcount(struct object *object) =
    object->refCount |-> ?refCount &*& 0 < refCount &*& counting(object_ticket_base, object, refCount + 1, _);

predicate object_inv(struct object *object) =
    ticket(object_ticket_base, object, ?f) &*& [f]object->class |-> ?class &*&
    [_]globals_objectListId(&globals, ?id) &*& [f]ghost_list_member_handle(id, object) &*&
    [_]class->dispose |-> ?dispose &*&
    [_]class->inv |-> ?inv &*& inv(object) &*&
    [_]is_dispose_func(dispose, inv);

fixpoint bool sublist<t>(list<t> xs, list<t> ys) {
    switch (xs) {
        case nil: return true;
        case cons(x0, xs0): return mem(x0, ys) && sublist(xs0, ys);
    }
}

predicate heap0(list<struct object *> unpacked) =
    [_]globals_objectListId(&globals, ?id) &*& ghost_list(id, ?objects) &*&
    foreach(objects, object_refcount) &*&
    distinct(unpacked) == true &*&
    sublist(unpacked, objects) == true &*&
    foreach(remove_all(unpacked, objects), object_inv);

predicate ref0(struct object *object, struct class *class) =
    ticket(object_ticket_base, object, ?f) &*& [f]object->class |-> class &*&
    [_]globals_objectListId(&globals, ?id) &*& [f]ghost_list_member_handle(id, object) &*& object != 0;

predicate ref(struct object *object) =
    ticket(object_ticket_base, object, ?f) &*& [f]object->class |-> ?class &*&
    [_]globals_objectListId(&globals, ?id) &*& [f]ghost_list_member_handle(id, object) &*& object != 0;

lemma void ref_not_null(void *object)
    requires ref(object);
    ensures ref(object) &*& object != 0;
{
    open ref(object);
    close ref(object);
}

@*/

void object_add_ref(void *object)
    //@ requires heap0(?unpacked) &*& ref(object);
    //@ ensures heap0(unpacked) &*& ref(object) &*& ref(object);
{
    struct object *o = object;
    //@ open heap0(_);
    //@ open ref(o);
    //@ int id = (&globals)->objectListId;
    //@ ghost_list_member_handle_lemma(id, o);
    //@ assert ghost_list(id, ?objs);
    //@ foreach_remove(o, objs);
    //@ open object_refcount(o);
    o->refCount++;
    //@ create_ticket(object_ticket_base, o);
    //@ close object_refcount(o);
    //@ foreach_unremove(o, objs);
    //@ close heap0(unpacked);
    //@ close ref(o);
    //@ close ref(o);
}

void object_release(void *object)
    //@ requires heap0(nil) &*& ref(object);
    //@ ensures heap0(nil);
{
    //@ open heap0(nil);
    //@ open ref(object);
    struct object *o = object;
    //@ int id = (&globals)->objectListId;
    //@ ghost_list_member_handle_lemma(id, o);
    //@ assert ghost_list(id, ?objs);
    //@ foreach_remove(o, objs);
    //@ open object_refcount(o);
    o->refCount--;
    //@ assert ticket(object_ticket_base, o, ?f1);
    //@ close [f1]object_ticket_base(o, _);
    //@ destroy_ticket(object_ticket_base, o);
    if (o->refCount == 0) {
        //@ foreach_remove(o, objs);
        //@ open object_inv(o);
        //@ assert ticket(object_ticket_base, o, ?f2);
        //@ close [f2]object_ticket_base(o, _);
        //@ destroy_ticket(object_ticket_base, o);
        //@ stop_counting(object_ticket_base, o);
        //@ open object_ticket_base(o, _);
        //@ ghost_list_remove(id, o);
        //@ close heap0(nil);
        dispose_func *dispose = o->class->dispose;
        dispose(o);
    } else {
        //@ close object_refcount(o);
        //@ foreach_unremove(o, objs);
        //@ close heap0(nil);
    }
}

void nil_dispose(void *o)
    //@ requires true;
    //@ ensures false;
{
    abort();
}

struct class nil_class = {"nil_value", nil_dispose};

struct object nil_value = {1, &nil_class}; // One for eval_func

/*@

predicate nil_inv(void *object) = struct_object_padding(object);

predicate heap() =
    heap0(nil) &*& ref(&nil_value)
    &*& [_]class_inv(&nil_class, nil_inv)
    &*& [_]class_dispose(&nil_class, nil_dispose)
    &*& [_]class_inv(&cons_class, cons_inv)
    &*& [_]class_dispose(&cons_class, cons_dispose)
    &*& [_]class_inv(&atom_class, atom_inv)
    &*& [_]class_dispose(&atom_class, atom_dispose)
    &*& [_]class_inv(&function_class, function_inv)
    &*& [_]class_dispose(&function_class, function_dispose)
    &*& pointer(&operand_stack, ?operandStack) &*& stack(operandStack) &*& pointer(&cont_stack, ?contStack) &*& stack(contStack);

@*/

struct object *create_nil()
    //@ requires heap();
    //@ ensures heap() &*& ref(result) &*& result == &nil_value;
{
    //@ open heap();
    object_add_ref(&nil_value);
    return &nil_value;
    //@ close heap();
}

struct cons {
    struct object object;
    struct object *head;
    struct object *tail;
};

//@ predicate cons_inv(struct cons *cons) = cons->head |-> ?head &*& ref(head) &*& cons->tail |-> ?tail &*& ref(tail) &*& struct_object_padding((void *)cons) &*& malloc_block_cons(cons);

void cons_dispose(struct object *object)
    //@ requires heap0(nil) &*& object_refCount(object, _) &*& object_class(object, _) &*& cons_inv((void *)object);
    //@ ensures heap0(nil);
{
    struct cons *cons = (void *)object;
    //@ open cons_inv(cons);
    object_release(cons->head);
    object_release(cons->tail);
    free(cons);
}

struct class cons_class = {"cons", cons_dispose};

/*@

predicate cons0(struct cons *cons; struct object *head, struct object *tail) =
    object_refCount((void *)cons, 1) &*&
    object_class((void *)cons, &cons_class) &*&
    struct_object_padding((void *)cons) &*&
    cons->head |-> head &*&
    cons->tail |-> tail &*&
    malloc_block_cons(cons) &*& cons != 0;

lemma void cons0_to_cons(struct cons *cons)
    requires heap() &*& cons0(cons, ?head, ?tail) &*& ref(head) &*& ref(tail);
    ensures heap() &*& ref((void *)cons);
{
    open heap();
    open heap0(nil);
    int id = (&globals)->objectListId;
    ghost_list_add<struct object *>(id, (void *)cons);
    assert foreach(?objs, _);
    start_counting(object_ticket_base, (void *)cons);
    create_ticket(object_ticket_base, (void *)cons);
    create_ticket(object_ticket_base, (void *)cons);
    close cons_inv(cons);
    produce_function_pointer_chunk dispose_func(cons_dispose)(cons_inv)(o) { call(); }
    close object_refcount((void *)cons);
    close foreach(cons((void *)cons, objs), object_refcount);
    close object_inv((void *)cons);
    close foreach(cons((void *)cons, objs), object_inv);
    close heap0(nil);
    close heap();
    close ref((void *)cons);
}

@*/

struct cons *create_cons0(struct object *head, struct object *tail)
    //@ requires true;
    //@ ensures cons0(result, head, tail) &*& result != 0;
{
    struct cons *cons = malloc(sizeof(struct cons));
    if (cons == 0) error("create_cons: out of memory");
    (&cons->object)->refCount = 1;
    (&cons->object)->class = &cons_class;
    cons->head = head;
    cons->tail = tail;
    return cons;
}

struct cons *create_cons(struct object *head, struct object *tail)
    //@ requires heap() &*& ref(head) &*& ref(tail);
    //@ ensures heap() &*& ref((void *)result);
{
    struct cons *cons = create_cons0(head, tail);
    //@ cons0_to_cons(cons);
    return cons;
}

void destruct_cons(struct object *object, struct object **head, struct object **tail)
    //@ requires heap() &*& ref(object) &*& pointer(head, _) &*& pointer(tail, _);
    //@ ensures heap() &*& pointer(head, ?h) &*& ref(h) &*& pointer(tail, ?t) &*& ref(t);
{
    //@ open ref(object);
    if (object->class != &cons_class)
        error("cons expected");
    else {
        //@ open heap();
        //@ close ref0(object, &cons_class);
        //@ unpack(object);
        //@ open ref0(object, &cons_class);
        //@ open object_inv(object);
        struct cons *cons = (void *)object;
        //@ open cons_inv(cons);
        *head = cons->head;
        *tail = cons->tail;
        object_add_ref(*head);
        object_add_ref(*tail);
        //@ close cons_inv(cons);
        //@ close object_inv(object);
        //@ pack(object);
        //@ close ref(object);
        object_release(object);
        //@ close heap();
    }
}

struct atom {
    struct object object;
    struct string_buffer *chars;
};

//@ predicate atom_inv(struct atom *atom) = atom->chars |-> ?buffer &*& string_buffer(buffer, _) &*& struct_object_padding((void *)atom) &*& malloc_block_atom(atom);

void atom_dispose(struct object *object)
    //@ requires heap0(nil) &*& object_refCount(object, _) &*& object_class(object, _) &*& atom_inv((void *)object);
    //@ ensures heap0(nil);
{
    struct atom *atom = (void *)object;
    //@ open atom_inv(atom);
    string_buffer_dispose(atom->chars);
    free(atom);
}

struct class atom_class = {"atom", atom_dispose};

struct atom *create_atom(struct string_buffer *buffer)
    //@ requires heap() &*& string_buffer(buffer, _);
    //@ ensures heap() &*& ref((void *)result);
{
    struct atom *atom = malloc(sizeof(struct atom));
    if (atom == 0) abort();
    (&atom->object)->refCount = 1;
    (&atom->object)->class = &atom_class;
    atom->chars = buffer;
    return atom;
    //@ open heap();
    //@ open heap0(nil);
    //@ int id = (&globals)->objectListId;
    //@ ghost_list_add<struct object *>(id, (void *)atom);
    //@ assert foreach(?objs, _);
    //@ start_counting(object_ticket_base, (void *)atom);
    //@ create_ticket(object_ticket_base, (void *)atom);
    //@ create_ticket(object_ticket_base, (void *)atom);
    //@ close atom_inv(atom);
    //@ produce_function_pointer_chunk dispose_func(atom_dispose)(atom_inv)(o) { call(); }
    //@ close object_refcount((void *)atom);
    //@ close foreach(cons((void *)atom, objs), object_refcount);
    //@ close object_inv((void *)atom);
    //@ close foreach(cons((void *)atom, objs), object_inv);
    //@ close heap0(nil);
    //@ close heap();
    //@ close ref((void *)atom);
}

struct atom *create_atom_from_string(char *string)
    //@ requires heap() &*& [?f]string(string, ?cs);
    //@ ensures heap() &*& [f]string(string, cs) &*& ref((void *)result);
{
    struct string_buffer *buffer = create_string_buffer();
    string_buffer_append_string(buffer, string);
    return create_atom(buffer);
}

/*@

predicate cons0_stack(struct cons *parent) =
    parent == 0 ?
        emp
    :
        cons0(parent, ?head, ?tail) &*&
        (head == 0 ? emp : ref(head)) &*&
        cons0_stack((void *)tail);

@*/

struct object *parse(struct tokenizer *tokenizer)
    //@ requires heap() &*& Tokenizer(tokenizer);
    //@ ensures heap() &*& ref(result) &*& Tokenizer(tokenizer);
{
    struct cons *parent = 0;
    //@ close cons0_stack(parent);
    for (;;)
        //@ invariant cons0_stack(parent) &*& heap() &*& Tokenizer(tokenizer);
    {
        int token = tokenizer_next(tokenizer);
        if (token == 'S') {
            struct atom *atom;
            struct object *expr;
            struct string_buffer *buffer = tokenizer_get_buffer(tokenizer);
            buffer = string_buffer_copy(buffer);
            //@ tokenizer_merge_buffer(tokenizer);
            atom = create_atom(buffer);
            expr = (void *)atom;
            for (;;)
                //@ invariant cons0_stack(parent) &*& ref(expr) &*& heap() &*& Tokenizer(tokenizer);
            {
                //@ open cons0_stack(parent);
                if (parent == 0) return expr;
                if (parent->head == 0) {
                    parent->head = expr;
                    //@ ref_not_null(expr);
                    //@ close cons0_stack(parent);
                    break;
                } else {
                    struct cons *newParent = (void *)parent->tail;
                    parent->tail = expr;
                    //@ cons0_to_cons(parent);
                    expr = (void *)parent;
                    parent = newParent;
                    {
                        int newToken = tokenizer_next(tokenizer);
                        if (newToken != ')') error("Syntax error: pair: missing ')'");
                    }
                }
            }
        } else if (token == '(') {
            struct cons *cons = create_cons0(0, (void *)parent);
            parent = cons;
            //@ close cons0_stack(parent);
        } else
            error("Syntax error: expected symbol or '('");
    }
}

struct stack {
    struct object *head;
    struct stack *tail;
};

/*@

predicate stack(struct stack *stack) =
    stack == 0 ?
        emp
    :
        stack->head |-> ?head &*& ref(head) &*&
        stack->tail |-> ?tail &*& stack(tail) &*&
        malloc_block_stack(stack);

@*/

struct stack *operand_stack = 0;
struct stack *cont_stack = 0;

void stack_push(struct stack **stack, struct object *value)
    //@ requires pointer(stack, ?s) &*& stack(s) &*& ref(value);
    //@ ensures pointer(stack, ?s1) &*& stack(s1);
{
    struct stack *newStack = malloc(sizeof(struct stack));
    if (newStack == 0) abort();
    newStack->head = value;
    newStack->tail = *stack;
    *stack = newStack;
    //@ close stack(newStack);
}

struct object *stack_pop(struct stack **stack)
    //@ requires pointer(stack, ?s0) &*& stack(s0);
    //@ ensures pointer(stack, ?s1) &*& stack(s1) &*& ref(result);
{
    struct stack *s = *stack;
    if (s == 0)
        error("pop: operand stack underflow");
    else {
        //@ open stack(s0);
        struct object *result = s->head;
        *stack = s->tail;
        free(s);
        return result;
    }
}

void push(struct object *object)
    //@ requires heap() &*& ref(object);
    //@ ensures heap();
{
    //@ open heap();
    stack_push(&operand_stack, object);
    //@ close heap();
}

struct object *pop()
    //@ requires heap();
    //@ ensures heap() &*& ref(result);
{
    //@ open heap();
    return stack_pop(&operand_stack);
    //@ close heap();
}

void push_cont(struct function *function)
    //@ requires heap() &*& ref((void *)function);
    //@ ensures heap();
{
    //@ open heap();
    stack_push(&cont_stack, (void *)function);
    //@ close heap();
}

struct function *pop_cont()
    //@ requires heap();
    //@ ensures heap() &*& ref((void *)result);
{
    //@ open heap();
    struct object *result = stack_pop(&cont_stack);
    //@ close heap();
    return (void *)result;
}

typedef void apply_func(struct object *data);
    //@ requires heap() &*& ref(data);
    //@ ensures heap();

struct function {
    struct object object;
    apply_func *apply;
    struct object *data;
};

/*@

predicate function_inv(struct function *function) =
    struct_object_padding((void *)function) &*&
    function->apply |-> ?apply &*& is_apply_func(apply) == true &*&
    function->data |-> ?data &*& ref(data) &*&
    malloc_block_function(function);

@*/

void function_dispose(struct object *object)
    //@ requires heap0(nil) &*& object_refCount(object, _) &*& object_class(object, _) &*& function_inv((void *)object);
    //@ ensures heap0(nil);
{
    struct function *function = (void *)object;
    //@ open function_inv(function);
    object_release(function->data);
    free(function);
}

struct class function_class = {"function", function_dispose};

struct function *create_function(apply_func *apply, struct object *data)
    //@ requires heap() &*& is_apply_func(apply) == true &*& ref(data);
    //@ ensures heap() &*& ref((void *)result);
{
    struct function *function = malloc(sizeof(struct function));
    if (function == 0) abort();
    (&function->object)->refCount = 1;
    (&function->object)->class = &function_class;
    function->apply = apply;
    function->data = data;
    return function;
    //@ open heap();
    //@ open heap0(nil);
    //@ int id = (&globals)->objectListId;
    //@ ghost_list_add<struct object *>(id, (void *)function);
    //@ assert foreach(?objs, _);
    //@ start_counting(object_ticket_base, (void *)function);
    //@ create_ticket(object_ticket_base, (void *)function);
    //@ create_ticket(object_ticket_base, (void *)function);
    //@ close function_inv(function);
    //@ produce_function_pointer_chunk dispose_func(function_dispose)(function_inv)(o) { call(); }
    //@ close object_refcount((void *)function);
    //@ close foreach(cons((void *)function, objs), object_refcount);
    //@ close object_inv((void *)function);
    //@ close foreach(cons((void *)function, objs), object_inv);
    //@ close heap0(nil);
    //@ close heap();
    //@ close ref((void *)function);
}

/*@

lemma void unpack(void *object)
    requires heap0(?unpacked) &*& ref0(object, ?class) &*& !mem(object, unpacked);
    ensures heap0(cons(object, unpacked)) &*& ref0(object, class) &*& object_inv(object);
{
    open heap0(unpacked);
    open ref0(object, class);
    assert ghost_list(?id, ?objs);
    ghost_list_member_handle_lemma(id, object);
    mem_remove_all(object, unpacked, objs);
    foreach_remove(object, remove_all(unpacked, objs));
    close heap0(cons(object, unpacked));
    close ref0(object, class);
}

lemma void pack(void *object)
    requires heap0(cons(object, ?unpacked)) &*& object_inv(object);
    ensures heap0(unpacked);
{
    open heap0(_);
    assert ghost_list(?id, ?objs);
    mem_remove_all(object, unpacked, objs);
    foreach_unremove(object, remove_all(unpacked, objs));
    close heap0(unpacked);
}

@*/

void apply(struct object *function)
    //@ requires heap() &*& ref(function);
    //@ ensures heap();
{
    //@ open ref(function);
    if (function->class != &function_class)
        error("apply: not a function");
    {
        struct function *f = (void *)function;
        //@ close ref0(function, _);
        //@ open heap();
        //@ unpack(function);
        //@ open ref0(function, _);
        //@ open object_inv(function);
        //@ open function_inv(f);
        apply_func *applyFunc = f->apply;
        struct object *data = f->data;
        object_add_ref(data);
        //@ close function_inv(f);
        //@ close object_inv(function);
        //@ pack(function);
        //@ close ref(function);
        object_release(function);
        //@ close heap();
        applyFunc(data);
    }
}

void pop_apply(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *f = pop();
    //@ open heap();
    object_release(data);
    //@ close heap();
    apply(f);
}

struct object *assoc(struct atom *key, struct object *map)
    //@ requires heap() &*& ref0((void *)key, &atom_class) &*& ref(map);
    //@ ensures heap() &*& ref0((void *)key, &atom_class) &*& result == 0 ? true : ref(result);
{
    for (;;)
        //@ invariant heap() &*& ref0((void *)key, &atom_class) &*& ref(map);
    {
        if (map == &nil_value) {
            //@ open heap();
            object_release(map);
            //@ close heap();
            return 0;
        }
        //@ open ref(map);
        if (map->class != &cons_class)
            error("assoc: cons cell expected");
        else {
            //@ open heap();
            //@ close ref0(map, &cons_class);
            //@ unpack(map);
            //@ open ref0(map, _);
            //@ open object_inv(map);
            struct cons *cons = (void *)map;
            //@ open cons_inv(cons);
            struct object *mapHead = cons->head;
            struct object *mapTail = cons->tail;
            object_add_ref(mapHead);
            object_add_ref(mapTail);
            //@ close cons_inv(cons);
            //@ close object_inv(map);
            //@ close ref0(map, _);
            //@ pack(map);
            //@ open ref0(map, _);
            //@ close ref(map);
            object_release(map);
            //@ open ref(mapHead);
            if (mapHead->class != &cons_class)
                error("assoc: cons cell expected at head");
            else {
                struct cons *entry = (void *)mapHead;
                //@ close ref0(mapHead, &cons_class);
                //@ unpack(mapHead);
                //@ open ref0(mapHead, _);
                //@ open object_inv(mapHead);
                //@ open cons_inv(entry);
                struct object *entryHead = entry->head;
                struct object *entryTail = entry->tail;
                object_add_ref(entryHead);
                object_add_ref(entryTail);
                //@ close cons_inv(entry);
                //@ close object_inv(mapHead);
                //@ close ref0(mapHead, _);
                //@ pack(mapHead);
                //@ open ref0(mapHead, _);
                //@ close ref(mapHead);
                object_release(mapHead);
                if (entryHead == (void *)key) {
                    object_release(entryHead);
                    object_release(mapTail);
                    //@ close heap();
                    //@ ref_not_null(entryTail);
                    return entryTail;
                }
                //@ open ref(entryHead);
                if (entryHead->class != &atom_class)
                    error("assoc: atom expected at head of head");
                else {
                    //@ close ref0(entryHead, &atom_class);
                    //@ unpack(entryHead);
                    //@ open ref0(entryHead, _);
                    //@ open object_inv(entryHead);
                    struct atom *key0 = (void *)entryHead;
                    //@ open atom_inv(key0);

                    //@ unpack((void *)key);
                    //@ open ref0((void *)key, _);
                    //@ open object_inv((void *)key);
                    //@ open atom_inv(key);

                    bool eq = string_buffer_equals(key->chars, key0->chars);

                    //@ close atom_inv(key);
                    //@ close object_inv((void *)key);
                    //@ pack((void *)key);
                    //@ close ref0((void *)key, _);

                    //@ close atom_inv(key0);
                    //@ close object_inv(entryHead);
                    //@ pack(entryHead);
                    //@ close ref(entryHead);

                    object_release(entryHead);

                    if (eq) {
                        object_release(mapTail);
                        //@ close heap();
                        //@ ref_not_null(entryTail);
                        return entryTail;
                    }
                    object_release(entryTail);
                    //@ close heap();
                    map = mapTail;
                }
            }
        }
    }
}

struct object *map_cons(struct atom *key, struct object *value, struct object *map)
    //@ requires heap() &*& ref((void *)key) &*& ref(value) &*& ref(map);
    //@ ensures heap() &*& ref(result);
{
    struct cons *entry = create_cons((void *)key, value);
    struct cons *cons = create_cons((void *)entry, map);
    return (void *)cons;
}

struct object *map_cons_s(char *key, struct object *value, struct object *map)
    //@ requires heap() &*& [?f]string(key, ?cs) &*& ref(value) &*& ref(map);
    //@ ensures heap() &*& [f]string(key, cs) &*& ref(result);
{
    struct atom *atom = create_atom_from_string(key);
    return map_cons(atom, value, map);
}

struct object *map_cons_s_func_nil(char *key, apply_func *function, struct object *map)
    //@ requires heap() &*& [?f]string(key, ?cs) &*& is_apply_func(function) == true &*& ref(map);
    //@ ensures heap() &*& [f]string(key, cs) &*& ref(result);
{
    struct object *data = create_nil();
    void *func = create_function(function, data);
    return map_cons_s(key, func, map);
}

void eval(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *envs;
    struct object *forms;
    struct object *env;
    struct object *expr;
    destruct_cons(data, &envs, &expr);
    //@ open heap();
    object_add_ref(envs);
    //@ close heap();
    destruct_cons(envs, &forms, &env);
    //@ open ref(expr);
    if (expr->class == &atom_class) {
        struct object *value;
        //@ open heap();
        object_add_ref(env);
        //@ close heap();
        //@ close ref0(expr, _);
        value = assoc((void *)expr, env);
        if (value == 0) error("eval: no such binding");
        //@ open heap();
        object_release(envs);
        object_release(forms);
        object_release(env);
        //@ open ref0(expr, _);
        //@ close ref(expr);
        object_release(expr);
        //@ close heap();
        push(value);
    } else if (expr->class == &cons_class) {
        struct object *f_expr;
        struct object *arg_expr;
        struct object *form;
        bool isForm;

        //@ close ref(expr);
        destruct_cons(expr, &f_expr, &arg_expr);

        //@ open ref(f_expr);
        isForm = f_expr->class == &atom_class;
        if (isForm) {
            //@ open heap();
            object_add_ref(forms);
            //@ close heap();
            //@ close ref0(f_expr, _);
            form = assoc((void *)f_expr, forms);
            //@ open ref0(f_expr, _);
            isForm = form != 0;
        }
        //@ close ref(f_expr);
        //@ open heap();
        object_release(forms);
        object_release(env);
        if (isForm) {
            void *value;
            object_release(f_expr);
            //@ close heap();
            value = create_cons((void *)envs, arg_expr);
            push(value);
            apply((void *)form);
        } else {
            void *functionData;
            void *function;

            //@ close heap();

            functionData = create_nil();
            function = create_function(pop_apply, functionData);
            push_cont(function);

            //@ open heap();
            object_add_ref(envs);
            //@ close heap();
            functionData = create_cons(envs, f_expr);
            function = create_function(eval, functionData);
            push_cont(function);

            functionData = create_cons(envs, arg_expr);
            function = create_function(eval, functionData);
            push_cont(function);
        }
    } else
        error("Cannot evaluate: not an atom or a cons.");
}

void print_atom(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *arg = pop();
    //@ open ref(arg);
    if (arg->class != &atom_class) error("print_atom: argument is not an atom");
    //@ open heap();
    //@ close ref0(arg, _);
    //@ unpack(arg);
    //@ open ref0(arg, _);
    //@ open object_inv(arg);
    //@ open atom_inv((void *)arg);
    print_string_buffer(((struct atom *)(void *)arg)->chars);
    //@ close atom_inv((void *)arg);
    //@ close object_inv(arg);
    //@ pack(arg);
    //@ close ref(arg);
    object_release(data);
    object_release(arg);
    //@ close heap();
    push(create_nil());
}

void quote_function(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *arg = pop();
    struct object *envs;
    struct object *body;
    destruct_cons(arg, &envs, &body);

    //@ open heap();
    object_release(envs);
    object_release(data);
    //@ close heap();
    push(body);
}

void fun_apply_function(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *arg = pop();

    struct object *envs;
    struct object *forms;
    struct object *env;
    struct object *expr;
    struct object *param;
    struct object *body;

    destruct_cons(data, &envs, &expr);
    destruct_cons(envs, &forms, &env);
    destruct_cons(expr, &param, &body);

    //@ open ref(param);
    if (param->class != &atom_class)
        error("fun: param should be an atom");
    else {
        //@ close ref(param);
        struct object *newEnv = map_cons((void *)param, arg, env);

        void *newEnvs = create_cons(forms, newEnv);
        void *newData = create_cons(newEnvs, body);
        void *newFunction = create_function(eval, newData);
        push_cont(newFunction);
    }
}

void fun_function(struct object *data) //@ : apply_func
    //@ requires heap() &*& ref(data);
    //@ ensures heap();
{
    struct object *arg = pop();
    void *newFunction;
    //@ open heap();
    object_release(data);
    //@ close heap();
    newFunction = create_function(fun_apply_function, arg);
    push(newFunction);
}

/*@

predicate hide_object_refCount(struct object *object, int refCount) = object->refCount |-> refCount;

lemma void object_not_null(struct object *object)
    requires object->refCount |-> ?r;
    ensures object->refCount |-> r &*& object != 0;
{
    close [1/2]hide_object_refCount(object, _);
    open object_refCount(object, _);
    integer_to_chars((void *)object);
    if (object == 0) {
        chars_zero();
    }
    close [1/2]object_refCount(object, _);
    open [1/2]hide_object_refCount(object, _);
}

lemma void init_heap()
    requires module(rcl, true);
    ensures heap();
{
    open_module();

    object_not_null(&nil_value);

    int objectListId = create_ghost_list();
    (&globals)->objectListId = objectListId;
    leak globals_objectListId(&globals, _);

    close foreach(nil, object_refcount);
    close foreach(nil, object_inv);

    (&nil_class)->inv = nil_inv;
    leak class_dispose(&nil_class, _) &*& class_inv(&nil_class, _) &*& class_name(&nil_class, _);

    (&cons_class)->inv = cons_inv;
    leak class_dispose(&cons_class, _) &*& class_inv(&cons_class, _) &*& class_name(&cons_class, _);

    (&atom_class)->inv = atom_inv;
    leak class_dispose(&atom_class, _) &*& class_inv(&atom_class, _) &*& class_name(&atom_class, _);

    (&function_class)->inv = function_inv;
    leak class_dispose(&function_class, _) &*& class_inv(&function_class, _) &*& class_name(&function_class, _);

    ghost_list_add(objectListId, &nil_value);
    close object_ticket_base(&nil_value, &nil_class);
    start_counting(object_ticket_base, &nil_value);
    create_ticket(object_ticket_base, &nil_value);
    create_ticket(object_ticket_base, &nil_value);
    close object_refcount(&nil_value);
    close foreach(cons(&nil_value, nil), object_refcount);
    close nil_inv(&nil_value);
    produce_function_pointer_chunk dispose_func(nil_dispose)(nil_inv)(o) { call(); }
    close object_inv(&nil_value);
    close foreach(cons(&nil_value, nil), object_inv);

    close heap0(nil);

    close ref(&nil_value);

    close stack(0);
    close stack(0);

    close heap();

    leak globals_dummy(&globals, _);
}

@*/

int my_getchar() //@ : charreader
    //@ requires true;
    //@ ensures true;
{
    return getchar();
}

int main() //@ : main_full(rcl)
    //@ requires module(rcl, true);
    //@ ensures true;
{
    //@ init_heap();

    struct object *forms;
    struct object *env;
    struct tokenizer *tokenizer;

    forms = create_nil();
    forms = map_cons_s_func_nil("quote", quote_function, forms);
    forms = map_cons_s_func_nil("fun", fun_function, forms);

    env = create_nil();
    env = map_cons_s_func_nil("print_atom", print_atom, env);

    tokenizer = tokenizer_create(my_getchar);

    for (;;)
        //@ invariant heap() &*& ref(forms) &*& ref(env) &*& Tokenizer(tokenizer);
    {
        struct object *expr = parse(tokenizer);
        void *object;

        //@ open heap();
        object_add_ref(forms);
        object_add_ref(env);
        //@ close heap();
        object = create_cons(forms, env);
        object = create_cons(object, expr);
        object = create_function(eval, object);
        push_cont(object);
        for (;;)
            //@ invariant heap();
        {
            //@ open heap();
            if (cont_stack == 0) break;
            //@ close heap();
            object = pop_cont();
            apply(object);
        }
        //@ close heap();
        object = pop();
        //@ open heap();
        object_release(object);
        //@ close heap();
    }
}

redpajama_set_name: RedPajamaGithub


Clairol introduced Summer Blonde Hair Lightener in the mid-1960s with the promise: "be a summer blonde all year round." The box contains Blondessence Developing Lotion in an applicator bottle, a bottle of Summer Blonde lightener, gloves and instructions. Product advertising claimed the lightener would leave blonde hair looking like it was "dipped in sunshine," brunette hair "glowing warm and golden," or red hair "lit up with a sunny brightness."


text:
Q: Llenar un select desde mysql con php Necesito mostrar un select con una cantidad de datos de una tabla, y que al hacer clic poder cargar un valor (el id). Vengo de VB6 donde era bastante fácil, aquí veo que tiene alguna vuelta más. Por cuestiones estéticas conseguí un código donde se reemplaza el select por una lista desordenada ... y me gustó mucho más. El problema es que no lo entiendo del todo, y acorde a como lo pude hacer, logro que cargue los valores menos el primero. La idea es que yo pueda cargar un valor por defecto que se muestre primero, y luego en la lista se carguen todos los valores de ese campo. Me ayudan a entender y resolver ?
Copio el código :

    <title>prueba combo</title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <link href="css/estilo.css" rel="stylesheet" type="text/css" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

<?php include 'conexion.php'; ?>

                <?php
                    $consulta="select sector FROM `maestros`";
                    $result=mysqli_query($con,$consulta);
                    $zzzz = $result->fetch_array(MYSQLI_ASSOC);
                ?>
            <?php echo $zzzz['sector'][0]; ?>

                <?php
                    while ($filas=mysqli_fetch_array($result))
                    {
                     $dato=$filas['sector'];
                ?>

                    <?php echo $dato ?>

            <?php  };
            ?>

Y copio tambien el .js :
$(document).ready(function() {
    function clickcaja(e) {
        var lista = $(this).find("ul"),
            triangulo = $(this).find("span:last-child");
        e.preventDefault();
        //lista.is(":hidden") ? $(this).find("ul").show() : $(this).find("ul").hide();
      $(this).find("ul").toggle();
        if(lista.is(":hidden")) {
            triangulo.removeClass("triangulosup").addClass("trianguloinf");
        }
        else {
            triangulo.removeClass("trianguloinf").addClass("triangulosup");
        }
    }
    function clickli(e) {
        var texto = $(this).text(),
            seleccionado = $(this).parent().prev(),
            lista = $(this).closest("ul"),
            triangulo = $(this).parent().next();
        e.preventDefault();
        e.stopPropagation();
        seleccionado.text(texto);
        lista.hide();
        triangulo.removeClass("triangulosup").addClass("trianguloinf");
    }

    $(".cajaselect").click(clickcaja);

    $(".cajaselect").on("click", "li", clickli);
    });

A: Si lo que quieres es cargar el id de la lista debes agregar el campo a la consulta, después puedes agregar un  oculto a cada
* de registro y agregarlo a un  cada que se de click en el, quedaría algo así

            <?php
                $consulta="select * FROM `maestros`";
                $result=mysqli_query($con,$consulta);
                $zzzz = $result->fetch_array(MYSQLI_ASSOC);
            ?>
        <?php echo $zzzz['sector'][0]; ?>

            <?php
                while ($filas=mysqli_fetch_array($result))
                {
                 $dato=$filas['sector'];
            ?>

                <?php echo $dato ?>

 <?= $dato['id'] ?>

        <?php  };
        ?>

Habría que ocultar las listas y además indexarlas al sublista del span en el js
$(document).ready(function() {
$('ul[name=sublista-2]').hide();
function clickcaja(e) {
    var lista = $(this).find("ul"),
        triangulo = $(this).find("span:last-child");
    e.preventDefault();
    //lista.is(":hidden") ? $(this).find("ul").show() : $(this).find("ul").hide();
  $(this).find("ul").toggle();
    if(lista.is(":hidden")) {
        triangulo.removeClass("triangulosup").addClass("trianguloinf");
    }
    else {
        triangulo.removeClass("trianguloinf").addClass("triangulosup");
    }
}
function clickli(e) {
    console.log($(this).children('ul[name=sublista-2]'));
    var texto = $(this).children()[0].text,
        seleccionado = $('.seleccionado'),
        lista = $(this).closest("ul.listaselect"),
        triangulo = $(this).parent().next();
    $('ul[name=sublista]').append($(this).children('ul[name=sublista-2]').children());
    $('ul[name=sublista]').show();
    e.preventDefault();
    e.stopPropagation();
    seleccionado.text(texto);
    lista.hide();
    triangulo.removeClass("triangulosup").addClass("trianguloinf");
}

$(".cajaselect").click(clickcaja);

$(".cajaselect").on("click", "li", clickli);
});

Espero sea lo que buscas, y si tienes alguna duda o no es lo que buscabas podrías agregar más detalles

A: No se si te entendi... si quieres cargar el id del registro, también tienes que incluirlo en la consulta.
Yo lo haría así en un select
<?php
$consulta="select id, sector FROM `maestros`";
$result=mysqli_query($con,$consulta);
$bandera = true;
?>

<select id="sector_maestros">

<?php
while ($filas=mysqli_fetch_array($result)) {
     $id_dato = $filas['id']; // guarda el id del registro
     $dato = $filas['sector']; // guarda el dato del registro
     ?>

     <option value="<?php echo $id_dato; ?>" <?php echo ($bandera == true) ? "selected" : ""; ?> >
          <?php echo $dato; /* imprime el sector en el option */ ?>
     </option>
     <?php
     $bandera = false; // cambia el valor de la bandera para no seleccionar nada en la siguiente iteración
}
?>
</select>

redpajama_set_name: RedPajamaStackExchange


text:
▼ MENU ▼
Nominate a historic place
Resources on heritage conservation
Provinces and territories
Download our search banner
Faille Cabin
Fort Simpson, Northwest Territories, X0E, Canada
Formally Recognized: 2004/05/03
Faille Cabin, 2004
Other Name(s)
Links and documents
Village of Fort Simpson Website
Construction Date(s)
1919/01/01 to 1920/01/01
Listed on the Canadian Register: 2008/10/02
Statement of Significance
Description of Historic Place
Faille Cabin is located along the Mackenzie River waterfront near the north end of the village. It consists of a small one-room, single-story wood frame cabin, its ancillary buildings, and the lot the cabin sits on.
Heritage Value
The heritage value of the Faille Cabin lies in its status as the oldest surviving building in Fort Simpson and in its association with Albert Faille, a well-known prospector and trapper in the Nahanni area. He was a determined prospector, courageous and skilled outdoorsman, and a living legend during his time. The 1962 National Film Board of Canada film 'The Nahanni' featured Faille in his persevering search for Nahanni gold, and gave Faille a national and international profile. This exposure made Faille an icon of the Nahanni, and a symbol of the many people who come to the area looking for adventure.
Faille's cabin was built c.1919 from locally milled wood as the kitchen wing of the Indian Agent's House. Albert Faille worked for the Indian Agent, Flynn Harris, and took up residence in the wing during the 1940s. When the house was demolished around 1950, Faille was offered the kitchen as a cabin. In 1957, he purchased the waterfront lot the cabin is currently on, where he lived the last years of his life. Albert Faille died during the night of December 31, 1973. Two years later, the cabin and lot were purchased by the Commissioner of the Northwest Territories with the aim of preserving the history of and encouraging tourism in the area.
Today, in its picturesque location overlooking the Mackenzie River, the cabin is a tourist attraction for the many visitors, and canoeists in particular, who come to Fort Simpson on their way to the South Nahanni River.
Source: Village of Fort Simpson Heritage Bylaw.
Character-Defining Elements
The heritage value of the Faille Cabin is defined by its:
-	simple wood frame construction
-	one-room layout
-	existing building materials and construction styles dating to the period of Faille's occupation, from 1940s-1973
-	collection of Albert Faille's personal effects
-	location close to the water, where Faille lived during the latter years of his life
-	view to and from the river
Recognition Authority
Village of Fort Simpson
Recognition Statute
Village of Fort Simpson Heritage By-Law
Recognition Type
Village of Fort Simpson Municipal Historic Site
Recognition Date
Significant Date(s)
Theme - Category and Type
Peopling the Land
Function - Category and Type
Single Dwelling
Architect / Designer
Location of Supporting Documentation
Fort Simpson Heritage Bylaw 601 as amended, Village of Fort Simpson
Cross-Reference to Collection
Fed/Prov/Terr Identifier
SEARCH THE CANADIAN REGISTER
FIND NEARBY PLACES PRINT
Ehdaa National Historic Site of Canada
92 Avenue, Fort Simpson, Northwest Territories
Ehdaa National Historic Site of Canada is the traditional Dene meeting place on the flats at the…
Yellowknife Post Office
4902 - 50th (Franklin) Avenue , Yellowknife, Northwest Territories
The Yellowknife Post Office is a City of Yellowknife Heritage Site. It is a rectangular, two-storey…
Old Barn
Fort Simpson, Northwest Territories
The Old Barn sits back from a quiet residential gravel street, beside a community playground near…
Administered by Parks Canada

redpajama_set_name: RedPajamaCommonCrawl


text:
'use strict';

// Googledocs controller
angular.module('googledocs').controller('GoogledocsController', GoogledocsController);

	function GoogledocsController($scope, $stateParams, $location, $timeout, Authentication, Googledocs, D2lClassesOwnership, D2lLessonsByClass) {
		$scope.authentication = Authentication;

		// Create new Googledoc
		$scope.create = function() {
			// Create new Googledoc object
			var googledoc = new Googledocs ({
				name: this.name,
				link: this.link,
				contentType: this.contentType,
				class: this.class._id,
				lesson: this.lesson._id,
				gdocId: this.gdocId
			});

			// Redirect after save
			googledoc.$save(function(response) {
				$location.path('googledocs/' + response._id);

				// Clear form fields
				$scope.name = '';
			}, function(errorResponse) {
				$scope.error = errorResponse.data.message;
			});
		};

		// Remove existing Googledoc
		$scope.remove = function(googledoc) {
			if ( googledoc ) {
				googledoc.$remove();

				for (var i in $scope.googledocs) {
					if ($scope.googledocs [i] === googledoc) {
						$scope.googledocs.splice(i, 1);
					}
				}
			} else {
				$scope.googledoc.$remove(function() {
					$location.path('googledocs');
				});
			}
		};

		// Update existing Googledoc
		$scope.update = function() {
			var googledoc = $scope.googledoc;

			googledoc.$update(function() {
				$location.path('googledocs/' + googledoc._id);
			}, function(errorResponse) {
				$scope.error = errorResponse.data.message;
			});
		};

		// Find a list of Googledocs
		$scope.find = function() {
			$scope.googledocs = Googledocs.query();
		};

		// Find existing Googledoc
		$scope.findOne = function() {
			$scope.googledoc = Googledocs.get({
				googledocId: $stateParams.googledocId
			});
		};

		// Load Class
		$scope.loadClasses = function() {
			//console.log('Load Class is invoked');
			return $timeout(function() {
				$scope.classes = D2lClassesOwnership.query();
			}, 650);
		};

		$scope.loadLessons = function(classId) {
			return $timeout(function() {
				$scope.lessons = D2lLessonsByClass.query({d2lClassId: classId});
			}, 650);
		}

		$scope.$on('handleEmit', function(event, args) {
			console.log('broadcast is invoked');
			$scope.gdocId=args.message;
			$scope.$digest();
		});
	}


If you help setting-up a new limited liability company, corporation, partnership, or other business entity in West Michigan, it is important to contact a corporate and business attorney. Our office can answer your questions about business planning and forming a limited liability corporation. Corporate and business law is generally done on a flat fee basis. Our office can help make sure your business is set-up correctly and running efficiently..
When starting a small business there are number of issues to consider. You should think about the form of business entity (corporation, limited liability company, partnership, or sole proprietor), taxation, and employees.
There are a number of different entities that can be used to set up and operate a small business. Many small businesses start out as a sole proprietor. This is done by an individual filing an assumed name with the county clerk's office for a small fee. A person doing business as a sole proprietor is personally responsible for debts and liabilities related to the business. Only one person can be a sole proprietor.
There are also partnerships. Michigan has a partnership law which governs how partnerships should be operated if there is no partnership agreement. It is often wise for a partnership to operate under a partnership agreement which sets out the partners' rights and obligations. Usually profits and losses are divided equally between partners. Each partner can be liable for the debts and obligations incurred by the partnership. As such, if the partnership is a defendant in lawsuit each individual partner may be named in the lawsuit and may be liable for any judgment.
There are also corporations. Corporations are formed by the filing of articles of incorporation with the state. In addition to articles of incorporation, the bylaws of the Corporation will describe how the businesses is to be run. Corporate entities have an advantage over a sole proprietorship and a partnership based on liability. Shareholders and officers are not personally liable for liabilitie of the Corporation unless the shareholder or officer personally signs for the debt. One of the most popular corporate forms is the limited liability corporation (LLC). The LLC entity offers the protection of a corporation and the ease of a partnership – the best of both entities. Additionally, they are not costly or difficult to establish and operate.
The new business must also address the requirements of registration as a taxable entity. All new business entities must register with the Internal Revenue Service. Our office can help you obtain an employee ID (EIN) number request form. After you receive your IRS employee ID number you must register that ID number with the Michigan Department of Treasury. Lastly, you need a register with any local taxing authorities. The frequency in which you pay taxes will be based on the amount of your tax liability and number of employees. Instructions will be included with the information you receive from the taxing authorities. There also are number of computer programs that will assist you in payment of taxes or you may use a payroll service. If necessary, you may use the assistance of an accountant or an attorney.
Haveman Law Office represents clients facing business matters throughout West Michigan, including the cities of Hudsonville, Zeeland, Holland, and Jenison, and the counties of Kent, Ottawa and Allegan. Typically our office will charge between 500.00 to 1000.00 dollars to set-up a corporation or limited liability company and obtain an EIN from the IRS. A partnership will cost about 500 dollars.


text:
Home » Bangladesh between Sino-Indian Friction in South Asia
Bangladesh between Sino-Indian Friction in South Asia
Source: Katehon.com
Ahmed Rajeev
Bangladesh's trade and commerce ministry should focus on the trade deficit. Specifically, it must change its submissive attitudes towards India and China.
Right now, Bangladesh exports $1.1 bln of goods to India and China, but the country imports more than $15 bln goods yearly. That's a huge trade deficit. By developing their trade policies, Sri Lanka and Bhutan curbed down their trade deficit both with India and China. Also, Nepal has shown a great result dealing with China, although dealing with India is dissatisfactory.
We must address this economic issue with delicate diplomacy. Recently, China has committed $24 bln for infrastructural development in Bangladesh. On the other hand, India has promised something to the tune of $2 bln and a coal-based power plant in the environmentally critical area of Sundarban - an UNESCO declared site for natural conservation.
Bangladesh's land area is surrounded by the Indian border, where Indian border guards kill 150-200 Bengalis annually, and we are still friendly neighbors. As many other places in the world, India and Bangladesh have critical disputes. Some of them are solved diplomatically and some of them are under tireless negotiations. For example, in September 2011, the two countries signed a major accord on border demarcation to end the 4-decade old disputes over boundaries. Still now, Bangladesh is not getting a fair, rational and necessary share of the Ganges water. Bangladesh observes that during the dry season India releases very little amount of water and it gets flooded when India releases excess waters in monsoon season when we don't need water.
Another achievement of Bangladesh's diplomacy is the Bay of Bengal sea water settlement with India. Teesta is now a dried and dead river for Indian policy. And river water sharing is another big issue between India and Bangladesh. For decades, it has been exerting huge economic and environmental impact since the Bangladeshi population lives on agriculture by natural irrigation.
We don't have any history of hostilities with the Chinese. China is also very close to Bangladesh, but the Himalayas create enormous natural barriers. Since China is becoming a global player and has put forth the grand design of the One Belt One Road Initiative and Maritime Silk Route, this puts Bangladesh as a necessary strategic hub for connecting South Asia with South East Asia.
India appears disturbed and worried by such a Chinese step towards Bangladesh because in that way, China can put geopolitical pressure on India from Pakistan, China's old friend and from the would-be friend Bangladesh. One from the West and the other from the East.
Since the US is siding with India, the South Asian geopolitical game will soon take new shapes and forms. Already, the Af-Pak region, Kashmir, Arunachal, the Dalailama, terrorism and many issues are coming up as disputes between US-led India and China.
Bangladesh will not be a safe place if the crisis between India and China escalates. The flame of unconventional warfare will also severely damage Bangladesh if the country is not prepared for inevitable scenarios.
Both China and India have increased their military spending. Though India's budget is 50% of that of the Chinese, it has the strongest military power, the US, as her ally. Proxy war could turn out to be a nuclear, all-out war in South Asia.
Physically, however, Bangladesh will not be a war party, but she must take defensive measures to protect her ethnic Bengali population and their nation of Bangladesh. In order to confront the upcoming situation, Bangladesh must take measures from at least four directions.
Economically, Bangladesh must curb down its trade deficit by facilitating and attracting local production. Since the country has enormous manpower, she should buy the technology, not the products. In such a manner, 50% of the trade deficit should be curtailed to promote heavy and small industries. We also find more space in bilateral relations.
Militarily, Bangladesh must increase her defense spending. Recently, Bangladesh has bought two submarines for its navy from China. Though primarily they are being used as training and sea security purposes for Bangladesh Navy, India has expressed concern. India must remember that Bangladesh doesn't consider India an enemy state. Even though it is a Muslim-populated country, it is not part of Pakistan. As a sovereign nation defending the world's third largest ethnicity, Bangladesh should outsource hi-tech weaponry from countries like Russia, Turkey, Germany, and Belgium to diversify her defense mechanisms. For example, Bangladesh can buy five sets of S-400 surface to air missile system to thwart any aerial threat including nuclear missiles. Those systems will keep the sky of Bengal safe for at least ten years. Bangladesh should strengthen her naval forces as well to keep the water safe from pirates or unlawful intruders. The country has a long history of ship making and breaking. She must make enough gunships and destroyers to support international navigation of yearly 5 trillion. Electronic warfare will be the next game changer of any war theater, as we have been observing it in the civil war in Ukraine and in the wars in Syria and Iraq. We must develop our indigenous but hi-end technology. Since the world is leaning more towards hybrid proxy wars, Bangladesh's military should enhance and upgrade guerrilla tactics.
Geopolitically, the country must walk on the balance beam when she deals with both simultaneously.
She should clearly understand the state ideologies of regional powers, but take a stance of distinctive pragmatism. Bangladesh knows very well that Indian regional policy towards her is very influential. India has a certain cultural-political-economic base from the very birth of Bangladesh since India politically and militarily backed the liberation war of Bangladesh. On the contrary China didn't give Bangladesh recognition as a new country until 1975, after four years of Bangladesh's independence. Also, Bangladesh should be very careful about Indian red lines. For example, Bangladesh should not give any space to any country to destabilize the Indian seven sisters. She must deter such existential threats.
Culturally, we should curb down the practices of liberal philosophy such as secularism, feminism, and LGBT. Liberal philosophy is dying worldwide because of its unsustainable nature and individualism. Bangladesh must be very careful regarding such philosophical practices by the NGO's, as the West has used this philosophy to tear apart social harmony and install chaos and instability where a people loses its sense of humanity as a collective entity.
If Bangladesh can take such steps pragmatically, she would be capable of creating a confident, self-determined, and enormous power-emanating entity in the coming future ranking among the top in the region within decades. The people and the nation must know that in 1971 a country was born after a horrific bloodbath, and that country must fight until her last blood to keep the land of Bengal - the land of the 4000-years-old Bengali ethnic group - safe from evil conspirators.
2017 Forecast: South Asia
The Silk Road: Greater Eurasia vs. Global Atlanticism
How India killed SAARC to the benefit of China
China, the Great Game, and Globalism
China's Globalist Agenda
India and its strategic culture
India and the US strategically converge in the grandest way possible when it comes to countering China, hence why both...
The Silk Road: Greater Eurasia vs. Global...
Adnan Aboobacker
The silk road is of importance to the continental powers to control anti-social activities with wise diplomacy and good...
Shahid Raza
India's Gambit
Trump is departing from classical geopolitics founded on the confrontation of Land and Sea. It is on this framework...
Kerry Bolton
Modern China a Creation of Wall Street
Leonid Savin
More often than not, rules of conduct in the international field are formed by historical, cultural, religious and...


At Phoenix Nursery we have great fun exploring indoors and outdoors. We will be posting pictures and videos on this page to show you what we have been doing. We look forward to sharing our activities with you.
We can't wait to be 4!
have you seen our birthday board in nursery? Every child has made their own birthday crown. When it is their birthday we take their crown off the display and they wear it when they blow out the candles on the birthday cake. The children take their crown home on their birthday and it is replaced with a photo of them wearing their crown for their birthday celebration.
W/C 26th June. Science Week.
This week everyone at school is being a scientist. We have been exploring, discovering and observing. We made a volcano, grew cress, found natural materials to make a collage, launched stomp rockets, looked closely at snails, mixed colours and explored magnets, pulleys, balances and ramps.
We were brilliant at Sports Day.
We launched our pirate ship "The Joly Phoenix." We have been drawing maps, counting treasure and walking the plank.
We all made a drum and decorated them carefully with patterns. The drums made a great sound as we marched up and down the hill on the school field.
We made marching footprints and painted pictures of soldiers.
We loved having two little visitors in Nursery. They were Russian hamsters- as tiny as mice, but without the tails!! We made pictures of the hamstersand of clocks. Our big clock looks great on the wall in nursery. Can you see the mouse?
We have continued to explore nursery rhymes and this week has all been about spiders as Incy Wincy spider has been climbing up and down the spout. We have loved climbing under and over the giant spider's web outside and have been very creative- painting spiders, making spiders with plasticine and counting 8 pipe cleaner legs and also making beautiful rain sticks.
We passed a ball of string to one another to make a spider web.
What a surprise when we went outside!! A kite had got stuck in the tree! Where did it come from? How can we get it down? We had lots of brilliant ideas.
We have been thinking about stars and singing this weeks nursery rhyme "Twinkle Twinkle Little Star"
We looked at a painting by a famous artist called Van Gogh. It is called starry night. We made our own paintings just like the one Van Gogh made by swirling our fingers in paint to make starry night patterns. We think they look great!
We had great fun at our Christmas partyand loved the yummy food.
Having fun playing with autumn leaves.
We have been learning about Turkey (morning nursery) and Romania (afternoon nursery). We learned to say Günaydın (good morning) and Buna ziua (good afternoon). The children made the flags of Turkey and Romania, wrote postcards and worked together to build a big aeroplane outside and had great fun flying to Turkey and Romania. All the children made and ate some baklava, using pastry and honey, it was sticky and yummy! We listened to some nursery rhymes in Turkish and Romanian. Look at the photos to see the fun we have had during culture week.
We loved working together to make Gerald the Giraffe. He has been watching us as we have been seeing how tall we can build our towers in the construction area. We have made our own pictures of Gerald and used bricks to measure how tall our giraffes are.
Take a look at how brilliant we are at balancing on our obstacle course.
There is a monkey in the box!!
This week we have been reading the book "Monkey Puzzle" by Julia Donaldson. The children have made a fantastic display of cheeky monkeys swinging from the trees in the jungle.
A mysterious box has arrived in Nursery. It has some holes in it and a label that says "please look after me."
the children have tried peering into the holes, sniffing through the holes and listening carefully to see if they can hear anything. We had some good ideas of what might be in the box.......a fox?.........Anna or Elsa?.........someone's daddy?...........a tiger.........a dog?
We still don't know, but we will have lots of fun trying to find out!


A spokesperson for Jordan's mission to the United Nations confirmed Monday that his country will ask the UN Security Council to hold an emergency meeting on behalf of the Palestinians, who have written the council president regarding the "dangerously escalating tensions" in East Jerusalem.
Earlier on Monday, Israeli Prime Minister Benjamin Netanyahu pushed forward plans for 1,060 new housing units in East Jerusalem settlements despite growing international criticism and steadily rising violence between Palestinians and Jews in the city.
Both the U.S. and the European Union condemned Netanyahu's move. State Department Spokesperson Jen Psake said Washington was "deeply concerned" by reports of Netanyahu's plans.
Shortly after Netanyahu's announcement on Monday, Palestinian President Mahmoud Abbas said the Palestinian Authority (PA) would appeal to the UN Security Council to call on Israel to stop its ongoing expansion of settlements in the city, its increasing campaign collective punishment throughout Palestinian neighborhoods as well as its attempts to change the status quo of the Al-Aqsa Mosque.
Hamdallah's appearance at Al-Aqsa was followed up Tuesday morning by a provocative visit from the Jewish mayor of Jerusalem Nir Barak, accompanied by a large group of armed police officers.
"Barakat is the first mayor to storm Al-Aqsa, joining the extremist groups and the extremist Knesset members who usually storm the place and urge others to do the same," said the director of the Al-Aqsa Mosque Sheikh Omar al-Kiwsani. .
The Israeli police have been heavily cracking down on Palestinian neighborhoods throughout East Jerusalem since last week, when a young man from Silwan was shot and killed after he ran over a group of people waiting at an East Jerusalem light rail station, killing a three-month-old baby and a 22-year-old Ecuadorian woman. Israeli officials labeled the incident a terrorist attack while the young man's family argues he lost control of the vehicle.
Since then, the situation has steadily declined. Daily clashes between Palestinian youth and heavily armed Israeli security forces have occurred on a daily basis in almost every Palestinian neighborhood in the city.
Palestinian President Mahmoud Abbas warned the U.S. on Sunday of the steadily deteriorating situation in Jerusalem, saying it was liable to spin out of control if the Israeli government continues its current provocative policies, particularly attempts to change the status quo in the Temple Mount area.
Residents of East Jerusalem say police are using crowd-dispersal methods indiscriminately in attempt to collectively punish the city's Palestinian population, the Israeli English-language daily Haaretz reported on Tuesday.
Residents of Silwan and Issawiya said Israel's security forces have hit houses in the neighborhoods indiscriminately during clashes with youth, shooting tear gas into windows and spraying 'Skunk Water" into homes at random.
Adal Siam, a resident of Silwan, said his house was targeted by the fowl-smelling liquid for no reason.
"We were sleeping. It was a quarter to 12 at night and the machine stood in front of our shouse and deliberately fired at our windows. The windows break from the pressure and the whole house gets filled with it, "Siam said.
Police have closed the two main entrances to Issawiya, a small, overcrowded neighborhood that sits in a valley below Hebrew University.
Border and traffic police have erected flying checkpoints in around Silwan and Issawiya over the past few days, often writing tickets for minor infractions. Residents say this too is a form of collective punishment.


text:
the games of CMRN KNZLMN
play the games
[Construct 2, 2013]
I was invited to create a short game for The Gameological Society (the games section of The AV Club) near the end of 2013 as a part of their (now defunct) yearly event where they asked game devs to reflect on big media events of the year. I bit off way, way more than I could chew by pitching a multi-level, multi-minigame adaptation of the high notes of Breaking Bad.
While I finished the game and it is (surprisingly, to me) a pretty good one, this was a classic mistake of pitching way, way above what I could complete in the time limit given and then, somehow, producing something that is unmistakably mine within the boundaries of what the contract asked of me.
I don't have a strong sense of how well this game did. The AV Club did not continue this event after 2013, sadly.
I was interviewed by the Toronto Sun about the game (on Christmas Eve?!), and I said this about it: "I think that short, quickly developed games are infinitely more interesting than the television criticism/recap culture that pervades all conversation about TV," he said. "I want to see smart little games about lots of TV shows (a Curb Your Enthusiasm game would make my year), but I would rather see games learning from TV shows. I want a game that finds the tone of Seinfeld or the strangeness of Lost."
You can play Breaking Bad by clicking here.


text:
Stream manny pacquiao
Jul 01, 2020 · Mikey Garcia and Manny Pacquiao appeared to be headed for a summer showdown until the COVID-19 pandemic derailed those plans. Garcia is still aiming for a fight with his dream opponent but also
Jan 19, 2019 · Bloody Elbow has all the details on Manny Pacquiao vs. Adrien Broner right here, including fight card, fight time, live stream info, results, and more. By Bloody Elbow Jan 19, 2019, 7:00am EST July 11, 2019. The Manny Pacquiao vs Keith Thurman stream is available for purchase in the US and Canada, as well as the UK and Ireland (made available on FITE.TV through ITV) so if you're in one of these countries, you'll be able to watch the fight! WBA welterweight champion Manny Pacquiao (L) and WBA welterweight super champion Keith Thurman pose during a news conference at MGM Grand Garden Arena on July 17 in Las Vegas, Nevada. Manny Pacquiao's return to the ring will be an online exclusive: ESPN's new streaming service, ESPN+. Manny Pacquiao-Lucas Matthysse title fight to be shown via live stream only | Sporting News Apr 30, 2020 · Keith Thurman hasn't fought since suffering his first loss and dropping the WBA (Super) welterweight title to Manny Pacquiao last July. It was a closely contested split decision that saw the older legend take it to the younger champion and reclaim his past glory. Jun 04, 2020 · The South China Morning Post calls Pacquiao a "staunch Duterte loyalist". One issue that Pacquiao and Duterte are in lock-step over is the return of the death penalty, which was abolished in 1987.
Aug 21, 2019 · Watch the full fight highlight of Pacquiao vs Thurman. Catch all the action from these two champion fighters from their epic bought from July 20th. #PBConFOX #MannyPacquiao #KeithThurman SUBSCRIBE
Jul 01, 2020 · Mikey Garcia and Manny Pacquiao appeared to be headed for a summer showdown until the COVID-19 pandemic derailed those plans. Garcia is still aiming for a fight with his dream opponent but also Relive the Manny Pacquiao-Keith Thurman PPV re-air exclusively on FOX FOX Sports Mar 21, 2020 at 7:38p ET share url email fbmsngr whatsapp sms Jul 25, 2020 · 2020 NFL training camp: Biggest questions, roster projections for all 32…
Apr 06, 2020 · Errol Spence said Monday he is hoping to return to the ring by September or October and would like to fight Manny Pacquiao or Terence Crawford.
Jun 20, 2019 · Launch the app and stream Keith Thurman vs Manny Pacquiao on iOS for free. Conclusion. After months of rumors and speculation, the fight was finally announced with Manny Pacquiao's tweet. It is a 20 th July event and has boxing fans waiting anxiously and patiently. With both the contenders strong and determined, the fight is not the one you Jul 22, 2019 · Fight Night: How to Stream Pacquiao vs. Thurman Online Walter Glenn @wjglenn Updated July 22, 2019, 11:39am EDT Manny Pacquiao returns to the ring Saturday, July 20 at 9:00 PM Eastern Time (US) to face off against undefeated Super WBA Welterweight Champion Keith Thurman in Las Vegas. The Manny Pacquiao-Lucas Matthysse card will stream live on ESPN+, the network and Top Rank announced Saturday after Pacquiao's MP Promotions signed the requisite paperwork following a number of delays. According to ProBoxingOdds.com, Manny Pacquiao is a -303 favorite, which means you'll need to bet $303 to win $100. Meanwhile, Broner is a +246 underdog, meaning if you bet $100, you could win $246.
torrent hip hop classique
express vpn windows 8.1
skype use online
en utilisant avast vpn
Best recent comedy movies
The real adventures of jonny quest watch online
Why use ubuntu server
Bbc one live streaming free outside uk
Free download twitter for laptop
Amazon kindle fire wiki
Vpn off
D link configuration
How to set up privacy on facebook


text:
FYI: What Would Happen If I Ate Nothing But Meat?
Good ol' meat and potatoes. Without the potatoes.
By Caitlin Kearney
Ron Swanson Is a Fictional Character
Thinking about becoming a meatarian? Just know that Ron Swanson may not be a nutritional expertNBC
You might get scurvy, like a pirate. Cooked meat contains very little vitamin C, notes Donald Beitz, a nutritional biochemist at Iowa State University. Without the vitamin, scurvy would bring on rashes and gum disease, not to mention very bad breath. Moreover, meat lacks fiber, so you'd probably be constipated. All in all, you wouldn't be healthy or comfortable.
That said, some groups of people have survived—even thrived—on an animal-only diet. Research suggests that traditionally the Inuit ate any number of meats, including seal, whale, caribou and fish. But they rarely, if ever, ate plant fiber. The key to their success, says Harriet Kuhnlein, the founding director of the Centre for Indigenous Peoples' Nutrition and Environment at McGill University in Montreal, was eating every part of the animal, "and you have to eat some of it raw." Raw meat contains vitamin C (which is lost when cooked), and the skin, hooves and bones contain fiber. For greens, Kuhnlein adds, traditional Inuit "ate the stomach contents of caribou and deer."
Historically, they were quite healthy, she says; they almost never suffered from heart disease. Today, the meat-heavy diet lives on in the form of the controversial Atkins Nutritional Approach. Formulated by cardiologist Robert Atkins in the early 1970s, the diet prescribes that adherents dramatically cut their carbohydrate intake.
The American Heart Association issued a statement in 2001 condemning the diet for cutting necessary sources of nutrients, stating that devotees were "at risk for compromised vitamin and mineral intake, as well as potential cardiac, renal [kidney], bone and liver abnormalities."
This article originally appeared in the June 2011 issue of Popular Science_ magazine._.


text:
Q: 2.2 Faster way to regenerate css in developer mode In developer mode, static files are mostly symlinked so making changes is immediately visible in frontend. However, when making changes to CSS this is not the case.
The minimal files I have to delete are var/view_preprocessed/.../css and pub/static/frontend/.../css.
However, it is still a bit slow and inconvenient. Is there a way to activate some sort of file watcher that will automatically regenerate the things it needs to?
(Something like compass in 1.9.X RWD theme.)


To determine which parts catalog to use, open up the main compartment of your luggage. The model name will be sewn into the lining of the main compartment of the bag.
To order parts, contact our Customer Care Department at 1-800-741-7471. We are open Monday-Friday from 9:00am to 5:30pm EST.
▼ Click Here to download this catalog.


January 22, 2007 -- Ukraine's Foreign Ministry says it is investigating how its consulates in Bulgaria and Austria recently issued entry visas to two exiled Turkmen opposition leaders.
Moradov says foreign election observers will be allowed (epa) January 21, 2007 -- Turkmen television today quoted Foreign Minister Rashid Meredov as saying that Turkmenistan will allow international observers to monitor next month's presidential elections.
(RFE/RL) January 19, 2007 (RFE/RL) -- German lawmakers are urging the federal government, which currently holds the European Union's rotating Presidency, to press for free and fair presidential polls in Turkmenistan in February, RFE/RL's Turkmen Service reports.
As next month's presidential election approaches, there are signs the authorities are concerned about the potential for domestic unrest.
Berdymukhammedov at the opening of an Ashgabat health center in 2005 (ITAR-TASS) January 18, 2007 -- Turkmenistan's interim leader and presidential front-runner Gurbanguly Berdymukhammedov has reiterated a pledge to reform the country's depleted education system and public-health sector.
HANNOVER, Germany; January 18, 2007 (RFE/RL) -- One of the biggest producers of carpets in the world, Turkey, was very prominent at the Domotex trade fair in Hannover on January 13-16.
Russian Foreign Minister Sergei Lavrov (file photo) (ITAR-TASS) January 17, 2007 (RFE/RL) -- Russia's Foreign Minister Sergei Lavrov spoke by telephone today with his Turkmen counterpart, Rashid Meredov, in a conversation in which the two men reportedly expressed their countries' desire to maintain strong relations.
Gurbanguly Berdymukhammedov (in file photo) is one of six candidates for president (official site) January 11, 2007 -- Turkmenistan's acting president, Gurbanguly Berdymukhammedov, has promised to eradicate drug trafficking.
January 10, 2007 -- One of the presidential candidates in Turkmenistan is cited as promising voters that if he is elected he will legalize private land ownership, RFE/RL's Turkmen Service reported.


text:
Q: How to install WordPress offline? I don't have internet on my PC. And I have WordPress downloaded. So,can I install WordPress offline? And if I install WordPress on another computer and took it to my machine, will it work?

A: If you are on a Windows machines, you could easily setup a local server using WAMP or XAMPP.
Then download the WordPress and install it on your local server. Going offline only cause you trouble if your theme or plugins is using any CDN or depends on another server for accessing the resources. Say for example, if your theme is using Bootstrap framework, there's a high chance that the developer might have used a CDN to speed up the loading. In such cases, there's a need for internet, if not available would show broken layout or something when you try to access the website from your local server.
Regarding installation of WordPress on another PC and copying it back, yes you can do it and will work. Keep in mind, you need to copy both the files and database. And needs a couple of things to be changed:

*

*Site URL. Eg: the other PC's local url might be http://localhost/abcwordpress/ and you might have setup in http://localhost/test/. In that case, the site URL needs to be changed. You can change it in wp_options table in your database(after you import the database that copied from the other PC).

*Absolute URLs. Sometimes, certain plugins stores the full urls in database. So even after you changed the site url, certain urls in the page would fail. Means, it would be still pointing to the other PC's url (eg: http://localhost/abcwordpress/) In such cases, you need to do an entire search and replace to replace the URLs in database. For this, you could try using a plugin like Better Search Replace. And some slider or drag & drop content building plugins provides their own version of tool for searching and replacing urls. As they might store the URLs in a different way. So you have to use that too.

*Database credentials. If you are copying the files, the wp-config.php would have the database credentials (db name, db username, db user password) different. Make sure you change it with that of the db in your PC's.

*Directory name in hataccess. Sometimes, the htaccess file in the main folder would have the folder name in it. Eg:
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /abcwordpress/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /abcwordpress/index.php [L]
</IfModule>

# END WordPress

Here, the abcwordpress might be the foldername. So if you are storing it in a different folder (and the url to access is like this : http://localhost/test/ , then you would have to change it to :
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /test/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /test/index.php [L]
</IfModule>

# END WordPress

I think I covered the major things that you have to keep in mind.

A: Hi there are 5 simple steps
Download and Install xampp to our computer,
Create a database in your
localhost, Download wordpress zip file from the official site,
Place your wordpress directory in htdocs folder,
Install the wordpress CMS
Please refer the link
https://dev-404.com/wordpress/how-to-install-wordpress-on-my-localhost-2022/


Paper quilling designs are not the easiest to find online; you, however, don't have to despair, as we bring to you the most awesome, the most comprehensive collection of 3D paper quilling design templates. We've got tonnes of options for you, right from simplistic 3D paper quilling design templates, to sophisticated ones available in different formats, all super convenient to download.You May also visit 3D Nail Designs. That has evolved into an art form with artists turning ordinary paper based craft designs into massive pieces if innovative artworks.You May also visit Best 3D Art Painting Canvas Collection.
20+ Valentine's Nail Designs & Ideas!