text:
Q: Jquery Date calculation not working on clone Currently working on calculating the expeerience using jquery date picker  from date and to date. For example (if user select the date 01/05/2010 (from) - (To) 31 / 07 / 2013 --  result will be 3years and 3 months) the result will be shown in label format. Again when the user click add more button one more row will be generated here also the user enter the from date and to date. The resule will be both the two rows (if user select the date 01/05/2010 (from) - (To) 31 / 07 / 2013 --  result will be 6years and 6 months) it has to calulate both rows.
Here is the Jquery code which wrote for the current calculation
   $(document).on('change', "#txt_Tdob", function (){
    var date1 = document.getElementById("txt_Fdob").value;
    var date2 = document.getElementById("txt_Tdob").value;
    var x = date1.split("-");
    var y = date2.split("-");
    var fromdate = new Date(x[2], x[0] - 1, x[1]);
    var todate = new Date(y[2], y[0] - 1, y[1]);
    var diffDays = parseInt((todate - fromdate) / (1000 * 60 * 60 * 24));
    var year = parseInt(diffDays / 365);
    var date = diffDays - (365 * year);
    var month = parseInt(date / 30);
    document.getElementById("txt_expy").innerHTML = year + " year";
    document.getElementById("txt_expm").innerHTML = month + " Month";
});

Here is the fiddle updated fiddle
Note : As per this fiddle link the first time when the user click the datepicker it won't work only if the user click add more button from the second time only this will work
Kindly help me
Thanks & Regards
Mahadevan

A: Ok so here is the updated code for you and kindly note that validations for future date has not been done. I mean if you select future year it will just add it to total experience and you need to refine your code into much better one as it might still contain cloned ids. I have just shown here how you can achieve the functionality.
DEMO
$(document).on('change', ".datepicker", function (){
    //.datepicker is a common class for all datepickers and change in any datepicker will trigger this
    var valid=true;//check if all the datepickers have been selected
    $.each($('.datepicker'),function(){
        if($(this).val()=="")//if any of datepickers value is null do not add
        {
            valid=false;//set valid to false and return
            return false;
        }
     });
     if(valid)//only if it is valid perform adding operation
     {
        var dateStart=[];//create an array to store startDate
        var dateEnd=[];//and endDate
        $.each($('.datepicker'),function(){
            if($(this).hasClass('startDate')) //if the current control is startdate push it to corresponding array
                dateStart.push($(this).val())
            else
                dateEnd.push($(this).val())
        });
        $.each($(dateStart),function(key,value){
            var x = dateStart[key].split("-"); //get first startdate from array
            var y = dateEnd[key].split("-"); //get first enddate from array
            var fromdate = new Date(x[2], x[0] - 1, x[1]);
            var todate = new Date(y[2], y[0] - 1, y[1]);
            diffDays+= parseInt((todate - fromdate) / (1000 * 60 * 60 * 24));
            //diffDays is now a global variable which is declared in document.ready.
            //You can find it in fiddle
        });
        var year = parseInt(diffDays / 365);
        var date = diffDays - (365 * year);
        var month = parseInt(date / 30);
        document.getElementById("txt_expy").innerHTML = year + " year";
        document.getElementById("txt_expm").innerHTML = month + " Month";
        //rest all things down here remains same.
     }
});

HTML has been updated little bit. Kindly check in fiddle

A: Yes i am already doing that, sure i will provide you with the code..
I have two Date fields: Date From & Date To:
Jquery
$(document).ready(function(){
$('input[id*=DateFrom]').datepicker({ dateFormat: 'dd-M-yy' }, { changeMonth: true }, { changeYear: true });
$('input[id*=DateTo]').datepicker({ dateFormat: 'dd-M-yy' }, { changeMonth: true }, { changeYear: true });
});
//Re-create ID for neccessary controls //Here i am changing the id's of cloned elements
tbodyElement.find("#DateFrom" + LstCount).attr('id', 'DateFrom' + varCount);
tbodyElement.find("#DateTo" + LstCount).attr('id', 'DateTo' + varCount);
//input field
<%= Html.TextBox("DateFrom", item.DateFrom.ToString("dd-MMM-yyyy"), new { @id = "DateFrom" + cnt  })%>
//Date To
<%= Html.TextBox("DateTo", item.DateTo.ToString("dd-MMM-yyyy"), new { @id = "DateTo" + cnt })%>


Please read these Terms and Conditions carefully before using BuyTrakParts.com. Your use of BuyTrakParts.com constitutes your consent to these terms. If you do not agree to these terms, please do not use this site. We reserve the right to update or modify these Terms at any time without prior notice. Your use of BuyTrakParts.com following any such change constitutes your agreement to follow and be bound by the Terms as changed. We encourage you to review these Terms whenever you use this Web Site. BuyTrakParts.com is the Internet purchasing site of Southwestern Industries. All returns or questions should be made with Southwestern Industries Customer Service department.
BuyTrakParts.com reserves the right to change the descriptions, specifications, and prices of the products offered without notice and at any time. BuyTrakParts.com does not guarantee that product descriptions, specifications and prices are accurate, complete, or current at all times. Products are available for delivery only within the United States. Your order is very important to us and we will process as promptly as allowable given demand and product availability. Orders generally ship within a few days of placement although impacted items may ship later. Our delivery to you of an email confirmation following order placement does not represent our acceptance of the order, and we reserve the right to reject any order or limit the quantity of products under the order.
Unless otherwise noted, all materials, including images, illustrations, designs, icons, photographs, and video are copyrights, trademarks, trade dress and/or intellectual property (collectively, the "Trademarks") are owned or licensed by Southwestern Industries. Under no circumstances may you alter, modify, or change these Trademarks. You are prohibited from using the Trademarks for any purpose without the written permission of Southwestern Industries or such third party licensor.
This site is provided by Southwestern Industries, Inc. on an "as is" basis. Southwestern Industries makes no representations or warranties of any kind, implied or express, as to the operation of the site, materials, or content contained in this site. The content or material on the site may include technical inaccuracies or typographical errors. BuyTrakParts.com may make changes or improvements at any time. Southwestern Industries will not be liable for any direct, consequential or incidental damages, whether foreseeable or not which may result from the unavailability or malfunction of the site. You will be solely responsible for damage to your computer system or loss of data that results from the download of such material content or use of this site. You assume the entire cost of all necessary servicing, repair, or correction.
Southwestern Industries makes no representations or warranties of any kind, express or implied, as to the products offered for sale on this site. To the full extent permissible by applicable law, Southwestern Industries disclaims all warranties, express and implied, including but not limited to, implied warranties of merchantability and fitness for a particular purpose. Southwestern Industries will not be liable for any damages of any kind arising from the purchase or use of products offered for sale on this site, including but not limited to direct, indirect, incidental, punitive and consequential damages. Some states may limit the ability of vendors to disclaim implied warranties so this paragraph may not apply to you.
By use of this site, you agree to defend, indemnify and hold harmless Southwestern Industries, its officers, directors, employees or agents against all third party claims, damages, costs and expenses, including attorney's fee, arising or related to your use of this site.
By use of this site, you agree that the laws of the State of California, without regard to the conflict of laws and principles thereof, will apply to all matters relating to the use of BuyTrakParts.com. You also submit to the jurisdiction of California and the venue of the state and federal Courts of California. Headings in these Terms and Conditions are for convenience only and have no legal import.


Micro Apartments are compact dwelling units typically one room in size under 400 square feet. These apartments have one open living and sleeping space with a kitchen and a full bathroom.
New York City does not have general requirements for minimum apartment sizes except in certain specific cases although there are requirements for bedrooms and living spaces. A few zoning districts do have a minimum dwelling unit sizes, as well affordable housing apartments have minimum requirements.
Previously NYC had minimum apartment sizes in the zoning code. Buildings developed under Quality Housing Regulations had a minimum apartment size of 400 square feet. This requirement was removed from the zoning code (in 2016) allowing developers to build new buildings or alter buildings with micro units under 400 square feet. For market rate buildings there is no general minimum unit size but the units must fulfill all other code requirements. There are certain instances where there are minimum unit sizes are applicable these are: housing for affordable residences for seniors, affordable housing, and residential developments in certain zoning districts.
Micro apartments are full apartments just compact ones. The still require a kitchen and a 3 piece bathroom. If the micro unit is on the first floor of a walk up or on any floor in an elevator building it will need to be handicapped accessible complying with ADA standards.
The NYC Building Code requires all apartments or dwelling units to have at least one room with a minimum square footage of 150 square feet. The typical minimum bedroom size is 80 square feet. In the case of a studio or one room apartment the 80 square foot rule would not apply. You would need the room to be 150 square feet. This does not count closets, the bathroom or a kitchen / kitchenette. Therefor the minimum micro unit square footage would be 150 square feet plus the kitchen, bathroom, and closets square footage.
Micro Units are not allowed in affordable housing developments. Bellow is a list of the minimum square footage for apartments in affordable housing based on the number of bedrooms.
Affordable housing for seniors must have a minimum square footage of 325 per unit in the following zoning districts: R3, R4, R5, R6, R7, R8, R9, and R10.
The minimum dwelling unit size will be 300 square feet in the following zoning districts R3 zoning, R4 zoning, and R5 zoning.
In two family detached, semi detached, and zero lot line buildings in R3, R4A, and R4-1 each house must have one dwelling unit to be at least 925 square feet.
Thank You for reading our blog post on Micro Apartments and Minimum Apartment Sizes in NYC.
We wish you good luck with your upcoming projects. Feel free to leave questions or comments below. If you wish to discuss a specific project you can contact us directly we would be happy to see if we can help. Learn more about our Architecture Firm.


We should all do this more often!
This wedding holds a special place in my heart. Congratulations dear darlings! Enjoy!
Mondays are always a favourite because we get to pack up a bag and head for the country. Our home/converted church has truly become a sanctuary for us.
Much like going to the cottage there is no TV, no phone and up until last week, no internet. Part of me wishes I could go without but I have too much work. Even though the point of coming here is to work less and have balance I need it for the fun relaxing stuff too like writing blogs! Here's the thing, we didn't get internet hooked up, we're in the middle of no where and found a signal! Thank you Bassman! I think that's bass like a fish, not like the guitar, or is it? Why do I assume he's an angler and hunter? I'm going with odds. Now, morally, I know it's wrong to jump on his or her signal, possibly slow down their connection or worse, cost them money but it's so temporary until Shaw media comes next month. The funny thing, we can only get full bars... in the bathroom. So really, the jokes on us people.
We've been sleeping by the fire as the back addition only has baseboard heaters and that's a small fortune.
Harry found his favourite cozy spot too, right in front of the fire on the warm stone.
Hydration ~ Why does it matter?
Well, 2012 is proving to be one heck of a year so far! As I said in the last post, we received the keys to the new store and over the next few weeks we have to bust our little butts to make the space fabulous all the while trying to keep Coriander Girl up and running. I don't want to have to close at all during the move. If we have to close it might be for the first week of February but I'll keep you posted.Part of me wishes I could stay in my little charmer forever but if you look at the pictures below you'll understand why the move has to happen.
this happened!!! Wedding central! Can you see a flat surface to work on, let alone stand!?
Here is an exterior pic of the new shop. Very exciting!
Courage my love. I saw my doctor today for the first time in forever. I had a complete physical. They could barely draw blood because I was so dehydrated. So, I'm pledging to you as my witness, I will drink more water starting right now so that my blood can start coursing through my body with vigour! Who wants slow pathetic blood?! Not me. I can picture my blood cells having a conversation and it goes something like this, "She's walking isn't she, who cares if I take a nap?" "No Morty! We gotta get up! This girl has important things to do!" "I set my alarm, I'll see you in an hour." "But she's in a coma!" One sip of water down only a thousand more to go!


I've decided to start posting minimalist versions of "Local Heroes," an online comic strip about the misadventures of a bunch of super-powered adventurers that I've been putting off starting for well over a year. Check it out at www.LocalHeroes.us.
This page contains a single entry from the blog posted on May 2, 2005 10:48 PM.
The next post in this blog is Two Firefox Tools.


text:
Q: HTML - returning a JSON as a variable from a Javascript, so I can use it throughout my HTML? I have an HTML page as follows:
<!DOCTYPE html>

        <title>Aircraft</title>

There are currently  aircraft around

        <button onclick="aircraft()">Manual Refresh</button>

The function aircraft() function fetches a JSON from my python-flask backend every 15 seconds.
My question is, can I pass this returned json as a variable to my HTML page, so I can use elements of that JSON throughout the page? (possibly in jinja snippets?
For example, I'd like to print

There are currently {{json.num_aircraft }} aircraft around

on one line,
and on another line I would like to print

The maximum range today is {{json.max_range}}

I tried using return in my function but I think I am using the wrong syntax.

redpajama_set_name: RedPajamaStackExchange


text:
/*
** DAV extension module for Apache 2.0.*
**  - Property database handling (repository-independent)
**
** NOTES:
**
**   PROPERTY DATABASE
**
**   This version assumes that there is a per-resource database provider
**   to record properties. The database provider decides how and where to
**   store these databases.
**
**   The DBM keys for the properties have the following form:
**
**     namespace ":" propname
**
**   For example: 5:author
**
**   The namespace provides an integer index into the namespace table
**   (see below). propname is simply the property name, without a namespace
**   prefix.
**
**   A special case exists for properties that had a prefix starting with
**   "xml". The XML Specification reserves these for future use. mod_dav
**   stores and retrieves them unchanged. The keys for these properties
**   have the form:
**
**     ":" propname
**
**   The propname will contain the prefix and the property name. For
**   example, a key might be ":xmlfoo:name"
**
**   The ":name" style will also be used for properties that do not
**   exist within a namespace.
**
**   The DBM values consist of two null-terminated strings, appended
**   together (the null-terms are retained and stored in the database).
**   The first string is the xml:lang value for the property. An empty
**   string signifies that a lang value was not in context for the value.
**   The second string is the property value itself.
**
**
**   NAMESPACE TABLE
**
**   The namespace table is an array that lists each of the namespaces
**   that are in use by the properties in the given propdb. Each entry
**   in the array is a simple URI.
**
**   For example: http://www.foo.bar/standards/props/
**
**   The prefix used for the property is stripped and the URI for it
**   is entered into the namespace table. Also, any namespaces used
**   within the property value will be entered into the table (and
**   stripped from the child elements).
**
**   The namespaces are stored in the DBM database under the "METADATA" key.
**
**
**   STRIPPING NAMESPACES
**
**   Within the property values, the namespace declarations (xmlns...)
**   are stripped. Each element and attribute will have its prefix removed
**   and a new prefix inserted.
**
**   This must be done so that we can return multiple properties in a
**   PROPFIND which may have (originally) used conflicting prefixes. For
**   that case, we must bind all property value elements to new namespace
**   values.
**
**   This implies that clients must NOT be sensitive to the namespace
**   prefix used for their properties. It WILL change when the properties
**   are returned (we return them as "ns<index>", e.g. "ns5"). Also, the
**   property value can contain ONLY XML elements and CDATA. PI and comment
**   elements will be stripped. CDATA whitespace will be preserved, but
**   whitespace within element tags will be altered. Attribute ordering
**   may be altered. Element and CDATA ordering will be preserved.
**
**
**   ATTRIBUTES ON PROPERTY NAME ELEMENTS
**
**   When getting/setting properties, the XML used looks like:
**
**     <prop>
**       <propname1>value</propname1>
**       <propname2>value</propname1>
**     </prop>
**
**   This implementation (mod_dav) DOES NOT save any attributes that are
**   associated with the <propname1> element. The property value is deemed
**   to be only the contents ("value" in the above example).
**
**   We do store the xml:lang value (if any) that applies to the context
**   of the <propname1> element. Whether the xml:lang attribute is on
**   <propname1> itself, or from a higher level element, we will store it
**   with the property value.
**
**
**   VERSIONING
**
**   The DBM db contains a key named "METADATA" that holds database-level
**   information, such as the namespace table. The record also contains the
**   db's version number as the very first 16-bit value. This first number
**   is actually stored as two single bytes: the first byte is a "major"
**   version number. The second byte is a "minor" number.
**
**   If the major number is not what mod_dav expects, then the db is closed
**   immediately and an error is returned. A minor number change is
**   acceptable -- it is presumed that old/new dav_props.c can deal with
**   the database format. For example, a newer dav_props might update the
**   minor value and append information to the end of the metadata record
**   (which would be ignored by previous versions).
**
**
** ISSUES:
**
**   At the moment, for the dav_get_allprops() and dav_get_props() functions,
**   we must return a set of xmlns: declarations for ALL known namespaces
**   in the file. There isn't a way to filter this because we don't know
**   which are going to be used or not. Examining property names is not
**   sufficient because the property values could use entirely different
**   namespaces.
**
**   ==> we must devise a scheme where we can "garbage collect" the namespace
**       entries from the property database.
*/

#include "apr.h"
#include "apr_strings.h"

#define APR_WANT_STDIO
#define APR_WANT_BYTEFUNC
#include "apr_want.h"

#include "mod_dav.h"

#include "http_log.h"
#include "http_request.h"

/*
** There is some rough support for writable DAV:getcontenttype and
** DAV:getcontentlanguage properties. If this #define is (1), then
** this support is disabled.
**
** We are disabling it because of a lack of support in GET and PUT
** operations. For GET, it would be "expensive" to look for a propdb,
** open it, and attempt to extract the Content-Type and Content-Language
** values for the response.
** (Handling the PUT would not be difficult, though)
*/
#define DAV_DISABLE_WRITABLE_PROPS     1

#define DAV_EMPTY_VALUE                "\0"    /* TWO null terms */

struct dav_propdb {
    apr_pool_t *p;                /* the pool we should use */
    request_rec *r;               /* the request record */

    const dav_resource *resource; /* the target resource */

    int deferred;                 /* open of db has been deferred */
    dav_db *db;                   /* underlying database containing props */

    apr_array_header_t *ns_xlate; /* translation of an elem->ns to URI */
    dav_namespace_map *mapping;   /* namespace mapping */

    dav_lockdb *lockdb;           /* the lock database */

    dav_buffer wb_lock;           /* work buffer for lockdiscovery property */

    /* if we ever run a GET subreq, it will be stored here */
    request_rec *subreq;

    /* hooks we should use for processing (based on the target resource) */
    const dav_hooks_db *db_hooks;
};

/* NOTE: dav_core_props[] and the following enum must stay in sync. */
/* ### move these into a "core" liveprop provider? */
static const char * const dav_core_props[] =
{
    "getcontenttype",
    "getcontentlanguage",
    "lockdiscovery",
    "supportedlock",

    NULL        /* sentinel */
};
enum {
    DAV_PROPID_CORE_getcontenttype = DAV_PROPID_CORE,
    DAV_PROPID_CORE_getcontentlanguage,
    DAV_PROPID_CORE_lockdiscovery,
    DAV_PROPID_CORE_supportedlock,

    DAV_PROPID_CORE_UNKNOWN
};

/*
** This structure is used to track information needed for a rollback.
*/
typedef struct dav_rollback_item {
    /* select one of the two rollback context structures based on the
       value of dav_prop_ctx.is_liveprop */
    dav_deadprop_rollback *deadprop;
    dav_liveprop_rollback *liveprop;

} dav_rollback_item;

static int dav_find_liveprop_provider(dav_propdb *propdb,
                                      const char *ns_uri,
                                      const char *propname,
                                      const dav_hooks_liveprop **provider)
{
    int propid;

    *provider = NULL;

    if (ns_uri == NULL) {
        /* policy: liveprop providers cannot define no-namespace properties */
        return DAV_PROPID_CORE_UNKNOWN;
    }

    /* check liveprop providers first, so they can define core properties */
    propid = dav_run_find_liveprop(propdb->resource, ns_uri, propname,
                                   provider);
    if (propid != 0) {
        return propid;
    }

    /* check for core property */
    if (strcmp(ns_uri, "DAV:") == 0) {
        const char * const *p = dav_core_props;

        for (propid = DAV_PROPID_CORE; *p != NULL; ++p, ++propid)
            if (strcmp(propname, *p) == 0) {
                return propid;
            }
    }

    /* no provider for this property */
    return DAV_PROPID_CORE_UNKNOWN;
}

static void dav_find_liveprop(dav_propdb *propdb, apr_xml_elem *elem)
{
    const char *ns_uri;
    dav_elem_private *priv = elem->priv;
    const dav_hooks_liveprop *hooks;

    if (elem->ns == APR_XML_NS_NONE)
        ns_uri = NULL;
    else if (elem->ns == APR_XML_NS_DAV_ID)
        ns_uri = "DAV:";
    else
        ns_uri = APR_XML_GET_URI_ITEM(propdb->ns_xlate, elem->ns);

    priv->propid = dav_find_liveprop_provider(propdb, ns_uri, elem->name,
                                              &hooks);

    /* ### this test seems redundant... */
    if (priv->propid != DAV_PROPID_CORE_UNKNOWN) {
        priv->provider = hooks;
    }
}

/* is the live property read/write? */
static int dav_rw_liveprop(dav_propdb *propdb, dav_elem_private *priv)
{
    int propid = priv->propid;

    /*
    ** Check the liveprop provider (if this is a provider-defined prop)
    */
    if (priv->provider != NULL) {
        return (*priv->provider->is_writable)(propdb->resource, propid);
    }

    /* these are defined as read-only */
    if (propid == DAV_PROPID_CORE_lockdiscovery
#if DAV_DISABLE_WRITABLE_PROPS
        || propid == DAV_PROPID_CORE_getcontenttype
        || propid == DAV_PROPID_CORE_getcontentlanguage
#endif
        || propid == DAV_PROPID_CORE_supportedlock
        ) {

        return 0;
    }

    /* these are defined as read/write */
    if (propid == DAV_PROPID_CORE_getcontenttype
        || propid == DAV_PROPID_CORE_getcontentlanguage
        || propid == DAV_PROPID_CORE_UNKNOWN) {

        return 1;
    }

    /*
    ** We don't recognize the property, so it must be dead (and writable)
    */
    return 1;
}

/* do a sub-request to fetch properties for the target resource's URI. */
static void dav_do_prop_subreq(dav_propdb *propdb)
{
    /* need to escape the uri that's in the resource struct because during
     * the property walker it's not encoded. */
    const char *e_uri = ap_escape_uri(propdb->resource->pool,
                                      propdb->resource->uri);

    /* perform a "GET" on the resource's URI (note that the resource
       may not correspond to the current request!). */
    propdb->subreq = ap_sub_req_lookup_uri(e_uri, propdb->r, NULL);
}

static dav_error * dav_insert_coreprop(dav_propdb *propdb,
                                       int propid, const char *name,
                                       dav_prop_insert what,
                                       apr_text_header *phdr,
                                       dav_prop_insert *inserted)
{
    const char *value = NULL;
    dav_error *err;

    *inserted = DAV_PROP_INSERT_NOTDEF;

    /* fast-path the common case */
    if (propid == DAV_PROPID_CORE_UNKNOWN)
        return NULL;

    switch (propid) {

    case DAV_PROPID_CORE_lockdiscovery:
        if (propdb->lockdb != NULL) {
            dav_lock *locks;

            if ((err = dav_lock_query(propdb->lockdb, propdb->resource,
                                      &locks)) != NULL) {
                return dav_push_error(propdb->p, err->status, 0,
                                      "DAV:lockdiscovery could not be "
                                      "determined due to a problem fetching "
                                      "the locks for this resource.",
                                      err);
            }

            /* fast-path the no-locks case */
            if (locks == NULL) {
                value = "";
            }
            else {
                /*
                ** This may modify the buffer. value may point to
                ** wb_lock.pbuf or a string constant.
                */
                value = dav_lock_get_activelock(propdb->r, locks,
                                                &propdb->wb_lock);

                /* make a copy to isolate it from changes to wb_lock */
                value = apr_pstrdup(propdb->p, propdb->wb_lock.buf);
            }
        }
        break;

    case DAV_PROPID_CORE_supportedlock:
        if (propdb->lockdb != NULL) {
            value = (*propdb->lockdb->hooks->get_supportedlock)(propdb->resource);
        }
        break;

    case DAV_PROPID_CORE_getcontenttype:
        if (propdb->subreq == NULL) {
            dav_do_prop_subreq(propdb);
        }
        if (propdb->subreq->content_type != NULL) {
            value = propdb->subreq->content_type;
        }
        break;

    case DAV_PROPID_CORE_getcontentlanguage:
    {
        const char *lang;

        if (propdb->subreq == NULL) {
            dav_do_prop_subreq(propdb);
        }
        if ((lang = apr_table_get(propdb->subreq->headers_out,
                                 "Content-Language")) != NULL) {
            value = lang;
        }
        break;
    }

    default:
        /* fall through to interpret as a dead property */
        break;
    }

    /* if something was supplied, then insert it */
    if (value != NULL) {
        const char *s;

        if (what == DAV_PROP_INSERT_SUPPORTED) {
            /* use D: prefix to refer to the DAV: namespace URI,
             * and let the namespace attribute default to "DAV:"
             */
            s = apr_psprintf(propdb->p,
                            "<D:supported-live-property D:name=\"%s\"/>" DEBUG_CR,
                            name);
        }
        else if (what == DAV_PROP_INSERT_VALUE && *value != '\0') {
            /* use D: prefix to refer to the DAV: namespace URI */
            s = apr_psprintf(propdb->p, "<D:%s>%s</D:%s>" DEBUG_CR,
                            name, value, name);
        }
        else {
            /* use D: prefix to refer to the DAV: namespace URI */
            s = apr_psprintf(propdb->p, "<D:%s/>" DEBUG_CR, name);
        }
        apr_text_append(propdb->p, phdr, s);

        *inserted = what;
    }

    return NULL;
}

static dav_error * dav_insert_liveprop(dav_propdb *propdb,
                                       const apr_xml_elem *elem,
                                       dav_prop_insert what,
                                       apr_text_header *phdr,
                                       dav_prop_insert *inserted)
{
    dav_elem_private *priv = elem->priv;

    *inserted = DAV_PROP_INSERT_NOTDEF;

    if (priv->provider == NULL) {
        /* this is a "core" property that we define */
        return dav_insert_coreprop(propdb, priv->propid, elem->name,
                                   what, phdr, inserted);
    }

    /* ask the provider (that defined this prop) to insert the prop */
    *inserted = (*priv->provider->insert_prop)(propdb->resource, priv->propid,
                                               what, phdr);

    return NULL;
}

static void dav_output_prop_name(apr_pool_t *pool,
                                 const dav_prop_name *name,
                                 dav_xmlns_info *xi,
                                 apr_text_header *phdr)
{
    const char *s;

    if (*name->ns == '\0')
        s = apr_psprintf(pool, "<%s/>" DEBUG_CR, name->name);
    else {
        const char *prefix = dav_xmlns_add_uri(xi, name->ns);

        s = apr_psprintf(pool, "<%s:%s/>" DEBUG_CR, prefix, name->name);
    }

    apr_text_append(pool, phdr, s);
}

static void dav_insert_xmlns(apr_pool_t *p, const char *pre_prefix, long ns,
                             const char *ns_uri, apr_text_header *phdr)
{
    const char *s;

    s = apr_psprintf(p, " xmlns:%s%ld=\"%s\"", pre_prefix, ns, ns_uri);
    apr_text_append(p, phdr, s);
}

static dav_error *dav_really_open_db(dav_propdb *propdb, int ro)
{
    dav_error *err;

    /* we're trying to open the db; turn off the 'deferred' flag */
    propdb->deferred = 0;

    /* ask the DB provider to open the thing */
    err = (*propdb->db_hooks->open)(propdb->p, propdb->resource, ro,
                                    &propdb->db);
    if (err != NULL) {
        return dav_push_error(propdb->p, HTTP_INTERNAL_SERVER_ERROR,
                              DAV_ERR_PROP_OPENING,
                              "Could not open the property database.",
                              err);
    }

    /*
    ** NOTE: propdb->db could be NULL if we attempted to open a readonly
    **       database that doesn't exist. If we require read/write
    **       access, then a database was created and opened.
    */

    return NULL;
}

DAV_DECLARE(dav_error *)dav_open_propdb(request_rec *r, dav_lockdb *lockdb,
                                        const dav_resource *resource,
                                        int ro,
                                        apr_array_header_t * ns_xlate,
                                        dav_propdb **p_propdb)
{
    dav_propdb *propdb = apr_pcalloc(r->pool, sizeof(*propdb));

    *p_propdb = NULL;

#if DAV_DEBUG
    if (resource->uri == NULL) {
        return dav_new_error(r->pool, HTTP_INTERNAL_SERVER_ERROR, 0, 0,
                             "INTERNAL DESIGN ERROR: resource must define "
                             "its URI.");
    }
#endif

    propdb->r = r;
    apr_pool_create(&propdb->p, r->pool);
    propdb->resource = resource;
    propdb->ns_xlate = ns_xlate;

    propdb->db_hooks = DAV_GET_HOOKS_PROPDB(r);

    propdb->lockdb = lockdb;

    /* always defer actual open, to avoid expense of accessing db
     * when only live properties are involved
     */
    propdb->deferred = 1;

    /* ### what to do about closing the propdb on server failure? */

    *p_propdb = propdb;
    return NULL;
}

DAV_DECLARE(void) dav_close_propdb(dav_propdb *propdb)
{
    if (propdb->db != NULL) {
        (*propdb->db_hooks->close)(propdb->db);
    }

    /* Currently, mod_dav's pool usage doesn't allow clearing this pool. */
#if 0
    apr_pool_destroy(propdb->p);
#endif
}

DAV_DECLARE(dav_get_props_result) dav_get_allprops(dav_propdb *propdb,
                                                   dav_prop_insert what)
{
    const dav_hooks_db *db_hooks = propdb->db_hooks;
    apr_text_header hdr = { 0 };
    apr_text_header hdr_ns = { 0 };
    dav_get_props_result result = { 0 };
    int found_contenttype = 0;
    int found_contentlang = 0;
    dav_prop_insert unused_inserted;
#ifdef APR_XML_X2T_PARSED
    apr_text *text;
#endif

    /* if not just getting supported live properties,
     * scan all properties in the dead prop database
     */
    if (what != DAV_PROP_INSERT_SUPPORTED) {
        if (propdb->deferred) {
            /* ### what to do with db open error? */
            (void) dav_really_open_db(propdb, 1 /*ro*/);
        }

        /* initialize the result with some start tags... */
        apr_text_append(propdb->p, &hdr,
                        "<D:propstat>" DEBUG_CR
                        "<D:prop>" DEBUG_CR);

        /* if there ARE properties, then scan them */
        if (propdb->db != NULL) {
            dav_xmlns_info *xi = dav_xmlns_create(propdb->p);
            dav_prop_name name;
            dav_error *err;

            /* define (up front) any namespaces the db might need */
            (void) (*db_hooks->define_namespaces)(propdb->db, xi);

            /* get the first property name, beginning the scan */
            err = (*db_hooks->first_name)(propdb->db, &name);
            while (!err && name.ns) {

                /*
                ** We also look for <DAV:getcontenttype> and
                ** <DAV:getcontentlanguage>. If they are not stored as dead
                ** properties, then we need to perform a subrequest to get
                ** their values (if any).
                */
                if (*name.ns == 'D' && strcmp(name.ns, "DAV:") == 0
                    && *name.name == 'g') {
                    if (strcmp(name.name, "getcontenttype") == 0) {
                        found_contenttype = 1;
                    }
                    else if (strcmp(name.name, "getcontentlanguage") == 0) {
                        found_contentlang = 1;
                    }
                }

#ifdef APR_XML_X2T_PARSED
                /* check for possible special acl restrictions not provided by read privilege */
                if (propdb->resource->acls &&
                    propdb->resource->acls->acl_check_prop &&
                    propdb->resource->acls->
                        acl_check_prop(propdb->r, propdb->resource,
                                       &name, what)) {
                    goto next_key;
                }
#endif

                if (what == DAV_PROP_INSERT_VALUE) {
                    int found;

                    if ((err = (*db_hooks->output_value)(propdb->db, &name,
                                                         xi, &hdr,
                                                         &found)) != NULL) {
                        /* ### anything better to do? */
                        /* ### probably should enter a 500 error */
                        goto next_key;
                    }
                    /* assert: found == 1 */
                }
                else {
                    /* the value was not requested, so just add an empty
                       tag specifying the property name. */
                    dav_output_prop_name(propdb->p, &name, xi, &hdr);
                }

              next_key:
                err = (*db_hooks->next_name)(propdb->db, &name);
            }

            /* all namespaces have been entered into xi. generate them into
               the output now. */
            dav_xmlns_generate(xi, &hdr_ns);

        } /* propdb->db != NULL */

        /* add namespaces for all the liveprop providers */
        dav_add_all_liveprop_xmlns(propdb->p, &hdr_ns);
    }
#ifdef APR_XML_X2T_PARSED
    text = hdr.last;
#endif

    /* ask the liveprop providers to insert their properties */
    dav_run_insert_all_liveprops(propdb->r, propdb->resource, what, &hdr);

    /* insert the standard properties */
    /* ### should be handling the return errors here */
    (void)dav_insert_coreprop(propdb,
                              DAV_PROPID_CORE_supportedlock, "supportedlock",
                              what, &hdr, &unused_inserted);
    (void)dav_insert_coreprop(propdb,
                              DAV_PROPID_CORE_lockdiscovery, "lockdiscovery",
                              what, &hdr, &unused_inserted);

    /* if we didn't find these, then do the whole subreq thing. */
    if (!found_contenttype) {
        /* ### should be handling the return error here */
        (void)dav_insert_coreprop(propdb,
                                  DAV_PROPID_CORE_getcontenttype,
                                  "getcontenttype",
                                  what, &hdr, &unused_inserted);
    }
    if (!found_contentlang) {
        /* ### should be handling the return error here */
        (void)dav_insert_coreprop(propdb,
                                  DAV_PROPID_CORE_getcontentlanguage,
                                  "getcontentlanguage",
                                  what, &hdr, &unused_inserted);
    }

#ifdef APR_XML_X2T_PARSED
    if (propdb->resource->acls &&
        propdb->resource->acls->acl_check_prop) {

        /* unfortunately liveprops cannot be checked beforehand */
        apr_xml_doc *doc = NULL;
        apr_text *t;
        apr_xml_elem *elem;
        apr_pool_t *pool;
        apr_xml_parser *parser;

        apr_pool_create (&pool, propdb->p);
        parser = apr_xml_parser_create (pool);

        apr_xml_parser_feed(parser, "<r xmlns:D=\"DAV:\" ", 18);
        for (t = hdr_ns.first; t; t = t->next) {
            if (t->text)
                apr_xml_parser_feed(parser, t->text, strlen(t->text));
        }
        apr_xml_parser_feed(parser, ">", 1);

        hdr.last = text ? text : hdr.first;

        for (text = text ? text->next : hdr.first; text; text = text->next) {
            if (text->text)
                apr_xml_parser_feed(parser, text->text, strlen(text->text));
        }
        apr_xml_parser_feed(parser, "</r>", 4);

        apr_xml_parser_done(parser, &doc);

        for (elem = doc ? doc->root->first_child : NULL; elem;
             elem = elem->next) {
             dav_prop_name name[1];

             name->ns = elem->ns == APR_XML_NS_NONE ? "" :
                 APR_XML_GET_URI_ITEM(doc->namespaces, elem->ns);
             name->name = elem->name;

            if (propdb->resource->acls->
                    acl_check_prop(propdb->r, propdb->resource,
                                   name, what) == NULL) {
                const char *buf;

                /* APR_XML_X2T_FULL_NS_LANG mangles original namespace prefixes */
                apr_xml_to_text(pool, elem, APR_XML_X2T_PARSED,
                                NULL, NULL, &buf, NULL);

                buf = apr_pstrcat (pool, buf, DEBUG_CR, NULL);
                apr_text_append(propdb->p, &hdr, buf);
            }
        }
        apr_pool_destroy(pool);
    }
#endif

    /* if not just reporting on supported live props,
     * terminate the result */
    if (what != DAV_PROP_INSERT_SUPPORTED) {
        apr_text_append(propdb->p, &hdr,
                        "</D:prop>" DEBUG_CR
                        "<D:status>HTTP/1.1 200 OK</D:status>" DEBUG_CR
                        "</D:propstat>" DEBUG_CR);
    }

    result.propstats = hdr.first;
    result.xmlns = hdr_ns.first;
    return result;
}

DAV_DECLARE(dav_get_props_result) dav_get_props(dav_propdb *propdb,
                                                apr_xml_doc *doc)
{
    const dav_hooks_db *db_hooks = propdb->db_hooks;
    apr_xml_elem *elem = dav_find_child(doc->root, "prop");
    apr_text_header hdr_good = { 0 };
    apr_text_header hdr_bad = { 0 };
#ifdef APR_XML_X2T_PARSED
    apr_text_header hdr_not_auth = { 0 };
#endif
    apr_text_header hdr_ns = { 0 };
    int have_good = 0;
    dav_get_props_result result = { 0 };
    char *marks_liveprop;
    dav_xmlns_info *xi;
    int xi_filled = 0;

    /* ### NOTE: we should pass in TWO buffers -- one for keys, one for
       the marks */

    /* we will ALWAYS provide a "good" result, even if it is EMPTY */
    apr_text_append(propdb->p, &hdr_good,
                   "<D:propstat>" DEBUG_CR
                   "<D:prop>" DEBUG_CR);

    /* ### the marks should be in a buffer! */
    /* allocate zeroed-memory for the marks. These marks indicate which
       liveprop namespaces we've generated into the output xmlns buffer */

    /* same for the liveprops */
    marks_liveprop = apr_pcalloc(propdb->p, dav_get_liveprop_ns_count() + 1);

    xi = dav_xmlns_create(propdb->p);

    for (elem = elem->first_child; elem; elem = elem->next) {
        dav_elem_private *priv;
        dav_error *err;
        dav_prop_insert inserted;
        dav_prop_name name;

        /*
        ** First try live property providers; if they don't handle
        ** the property, then try looking it up in the propdb.
        */

        if (elem->priv == NULL) {
            elem->priv = apr_pcalloc(propdb->p, sizeof(*priv));
        }
        priv = elem->priv;

        /* cache the propid; dav_get_props() could be called many times */
        if (priv->propid == 0) {
            dav_find_liveprop(propdb, elem);
        }

        if (priv->propid != DAV_PROPID_CORE_UNKNOWN) {

#ifdef APR_XML_X2T_PARSED
            /* check for possible special acl restrictions not provided by read privilege
             * ask for each live prop separately (e.g. read-acl privilege) */
            if (propdb->resource->acls &&
                propdb->resource->acls->acl_check_prop) {
                name.ns = elem->ns == APR_XML_NS_NONE ? "" :
                          APR_XML_GET_URI_ITEM(propdb->ns_xlate, elem->ns);
                name.name = elem->name;

                if (propdb->resource->acls->
                        acl_check_prop(propdb->r, propdb->resource,
                                       &name, DAV_PROP_INSERT_VALUE)) {

                    if (hdr_not_auth.first == NULL) {
                        apr_text_append(propdb->p, &hdr_not_auth,
                                        "<D:propstat>" DEBUG_CR
                                        "<D:prop>" DEBUG_CR);
                    }

                    if (!name.ns) {
                        name.ns = "";
                    }
                    dav_output_prop_name(propdb->p, &name, xi, &hdr_not_auth);
                    continue;
                }
            }
#endif

            /* insert the property. returns 1 if an insertion was done. */
            if ((err = dav_insert_liveprop(propdb, elem, DAV_PROP_INSERT_VALUE,
                                           &hdr_good, &inserted)) != NULL) {
                /* ### need to propagate the error to the caller... */
                /* ### skip it for now, as if nothing was inserted */
            }
            if (inserted == DAV_PROP_INSERT_VALUE) {
                have_good = 1;

                /*
                ** Add the liveprop's namespace URIs. Note that provider==NULL
                ** for core properties.
                */
                if (priv->provider != NULL) {
                    const char * const * scan_ns_uri;

                    for (scan_ns_uri = priv->provider->namespace_uris;
                         *scan_ns_uri != NULL;
                         ++scan_ns_uri) {
                        long ns;

                        ns = dav_get_liveprop_ns_index(*scan_ns_uri);
                        if (marks_liveprop[ns])
                            continue;
                        marks_liveprop[ns] = 1;

                        dav_insert_xmlns(propdb->p, "lp", ns, *scan_ns_uri,
                                         &hdr_ns);
                    }
                }

                /* property added. move on to the next property. */
                continue;
            }
            else if (inserted == DAV_PROP_INSERT_NOTDEF) {
                /* nothing to do. fall thru to allow property to be handled
                   as a dead property */
            }
#if DAV_DEBUG
            else {
#if 0
                /* ### need to change signature to return an error */
                return dav_new_error(propdb->p, HTTP_INTERNAL_SERVER_ERROR, 0,
                                     0,
                                     "INTERNAL DESIGN ERROR: insert_liveprop "
                                     "did not insert what was asked for.");
#endif
            }
#endif
        }

        /* The property wasn't a live property, so look in the dead property
           database. */

        /* make sure propdb is really open */
        if (propdb->deferred) {
            /* ### what to do with db open error? */
            (void) dav_really_open_db(propdb, 1 /*ro*/);
        }

        if (elem->ns == APR_XML_NS_NONE)
            name.ns = "";
        else
            name.ns = APR_XML_GET_URI_ITEM(propdb->ns_xlate, elem->ns);
        name.name = elem->name;

        /* only bother to look if a database exists */
        if (propdb->db != NULL) {
            int found;

            if ((err = (*db_hooks->output_value)(propdb->db, &name,
                                                 xi, &hdr_good,
                                                 &found)) != NULL) {
                /* ### what to do? continue doesn't seem right... */
                continue;
            }

            if (found) {
                have_good = 1;

                /* if we haven't added the db's namespaces, then do so... */
                if (!xi_filled) {
                    (void) (*db_hooks->define_namespaces)(propdb->db, xi);
                    xi_filled = 1;
                }
                continue;
            }
        }

        /* not found as a live OR dead property. add a record to the "bad"
           propstats */

        /* make sure we've started our "bad" propstat */
        if (hdr_bad.first == NULL) {
            apr_text_append(propdb->p, &hdr_bad,
                            "<D:propstat>" DEBUG_CR
                            "<D:prop>" DEBUG_CR);
        }

        /* output this property's name (into the bad propstats) */
        dav_output_prop_name(propdb->p, &name, xi, &hdr_bad);
    }

    apr_text_append(propdb->p, &hdr_good,
                    "</D:prop>" DEBUG_CR
                    "<D:status>HTTP/1.1 200 OK</D:status>" DEBUG_CR
                    "</D:propstat>" DEBUG_CR);

    /* default to start with the good */
    result.propstats = hdr_good.first;

    /* we may not have any "bad" results */
    if (hdr_bad.first != NULL) {
        /* "close" the bad propstat */
        apr_text_append(propdb->p, &hdr_bad,
                        "</D:prop>" DEBUG_CR
                        "<D:status>HTTP/1.1 404 Not Found</D:status>" DEBUG_CR
                        "</D:propstat>" DEBUG_CR);

        /* if there are no good props, then just return the bad */
        if (!have_good) {
            result.propstats = hdr_bad.first;
        }
        else {
            /* hook the bad propstat to the end of the good one */
            hdr_good.last->next = hdr_bad.first;
        }
    }

#ifdef APR_XML_X2T_PARSED
    if (hdr_not_auth.first != NULL) {
        apr_text_append(propdb->p, &hdr_not_auth,
                        "</D:prop>" DEBUG_CR
                        "<D:status>HTTP/1.1 403 Forbidden</D:status>" DEBUG_CR
                        "</D:propstat>" DEBUG_CR);

        if (!have_good && !hdr_bad.first) {
            result.propstats = hdr_not_auth.first;
        }
        else if (hdr_bad.first != NULL) {
            hdr_bad.last->next = hdr_not_auth.first;
        }
        else {
            hdr_good.last->next = hdr_not_auth.first;
        }
    }
#endif

    /* add in all the various namespaces, and return them */
    dav_xmlns_generate(xi, &hdr_ns);
    result.xmlns = hdr_ns.first;

    return result;
}

DAV_DECLARE(void) dav_get_liveprop_supported(dav_propdb *propdb,
                                             const char *ns_uri,
                                             const char *propname,
                                             apr_text_header *body)
{
    int propid;
    const dav_hooks_liveprop *hooks;

    propid = dav_find_liveprop_provider(propdb, ns_uri, propname, &hooks);

    if (propid != DAV_PROPID_CORE_UNKNOWN) {
        if (hooks == NULL) {
            /* this is a "core" property that we define */
            dav_prop_insert unused_inserted;
            dav_insert_coreprop(propdb, propid, propname,
                                DAV_PROP_INSERT_SUPPORTED, body, &unused_inserted);
        }
        else {
            (*hooks->insert_prop)(propdb->resource, propid,
                                  DAV_PROP_INSERT_SUPPORTED, body);
        }
    }
}

DAV_DECLARE_NONSTD(void) dav_prop_validate(dav_prop_ctx *ctx)
{
    dav_propdb *propdb = ctx->propdb;
    apr_xml_elem *prop = ctx->prop;
    dav_elem_private *priv;

    priv = ctx->prop->priv = apr_pcalloc(propdb->p, sizeof(*priv));

    /*
    ** Check to see if this is a live property, and fill the fields
    ** in the XML elem, as appropriate.
    **
    ** Verify that the property is read/write. If not, then it cannot
    ** be SET or DELETEd.
    */
    if (priv->propid == 0) {
        dav_find_liveprop(propdb, prop);

        /* it's a liveprop if a provider was found */
        /* ### actually the "core" props should really be liveprops, but
           ### there is no "provider" for those and the r/w props are
           ### treated as dead props anyhow */
        ctx->is_liveprop = priv->provider != NULL;
    }

    if (!dav_rw_liveprop(propdb, priv)) {
        ctx->err = dav_new_error(propdb->p, HTTP_CONFLICT,
                                 DAV_ERR_PROP_READONLY, 0,
                                 "Property is read-only.");
        return;
    }

    if (ctx->is_liveprop) {
        int defer_to_dead = 0;

        ctx->err = (*priv->provider->patch_validate)(propdb->resource,
                                                     prop, ctx->operation,
                                                     &ctx->liveprop_ctx,
                                                     &defer_to_dead);
        if (ctx->err != NULL || !defer_to_dead)
            return;

        /* clear is_liveprop -- act as a dead prop now */
        ctx->is_liveprop = 0;
    }

    /*
    ** The property is supposed to be stored into the dead-property
    ** database. Make sure the thing is truly open (and writable).
    */
    if (propdb->deferred
        && (ctx->err = dav_really_open_db(propdb, 0 /* ro */)) != NULL) {
        return;
    }

    /*
    ** There should be an open, writable database in here!
    **
    ** Note: the database would be NULL if it was opened readonly and it
    **       did not exist.
    */
    if (propdb->db == NULL) {
        ctx->err = dav_new_error(propdb->p, HTTP_INTERNAL_SERVER_ERROR,
                                 DAV_ERR_PROP_NO_DATABASE, 0,
                                 "Attempted to set/remove a property "
                                 "without a valid, open, read/write "
                                 "property database.");
        return;
    }

    if (ctx->operation == DAV_PROP_OP_SET) {
        /*
        ** Prep the element => propdb namespace index mapping, inserting
        ** namespace URIs into the propdb that don't exist.
        */
        (void) (*propdb->db_hooks->map_namespaces)(propdb->db,
                                                   propdb->ns_xlate,
                                                   &propdb->mapping);
    }
    else if (ctx->operation == DAV_PROP_OP_DELETE) {
        /*
        ** There are no checks to perform here. If a property exists, then
        ** we will delete it. If it does not exist, then it does not matter
        ** (see S12.13.1).
        **
        ** Note that if a property does not exist, that does not rule out
        ** that a SET will occur during this PROPPATCH (thusly creating it).
        */
    }
}

DAV_DECLARE_NONSTD(void) dav_prop_exec(dav_prop_ctx *ctx)
{
    dav_propdb *propdb = ctx->propdb;
    dav_error *err = NULL;
    dav_elem_private *priv = ctx->prop->priv;

    ctx->rollback = apr_pcalloc(propdb->p, sizeof(*ctx->rollback));

    if (ctx->is_liveprop) {
        err = (*priv->provider->patch_exec)(propdb->resource,
                                            ctx->prop, ctx->operation,
                                            ctx->liveprop_ctx,
                                            &ctx->rollback->liveprop);
    }
    else {
        dav_prop_name name;

        if (ctx->prop->ns == APR_XML_NS_NONE)
            name.ns = "";
        else
            name.ns = APR_XML_GET_URI_ITEM(propdb->ns_xlate, ctx->prop->ns);
        name.name = ctx->prop->name;

        /* save the old value so that we can do a rollback. */
        if ((err = (*propdb->db_hooks
                    ->get_rollback)(propdb->db, &name,
                                    &ctx->rollback->deadprop)) != NULL)
            goto error;

        if (ctx->operation == DAV_PROP_OP_SET) {

            /* Note: propdb->mapping was set in dav_prop_validate() */
            err = (*propdb->db_hooks->store)(propdb->db, &name, ctx->prop,
                                             propdb->mapping);

            /*
            ** If an error occurred, then assume that we didn't change the
            ** value. Remove the rollback item so that we don't try to set
            ** its value during the rollback.
            */
            /* ### euh... where is the removal? */
        }
        else if (ctx->operation == DAV_PROP_OP_DELETE) {

            /*
            ** Delete the property. Ignore errors -- the property is there, or
            ** we are deleting it for a second time.
            **
            ** http://tools.ietf.org/html/rfc4918#section-14.23 says
            ** "Specifying the removal of a property that does not exist is
            ** not an error"
            */
            /* ### but what about other errors? */
            (void) (*propdb->db_hooks->remove)(propdb->db, &name);
        }
    }

  error:
    /* push a more specific error here */
    if (err != NULL) {
        /*
        ** Use HTTP_INTERNAL_SERVER_ERROR because we shouldn't have seen
        ** any errors at this point.
        */
        ctx->err = dav_push_error(propdb->p, HTTP_INTERNAL_SERVER_ERROR,
                                  DAV_ERR_PROP_EXEC,
                                  "Could not execute PROPPATCH.", err);
    }
}

DAV_DECLARE_NONSTD(void) dav_prop_commit(dav_prop_ctx *ctx)
{
    dav_elem_private *priv = ctx->prop->priv;

    /*
    ** Note that a commit implies ctx->err is NULL. The caller should assume
    ** a status of HTTP_OK for this case.
    */

    if (ctx->is_liveprop) {
        (*priv->provider->patch_commit)(ctx->propdb->resource,
                                        ctx->operation,
                                        ctx->liveprop_ctx,
                                        ctx->rollback->liveprop);
    }
}

DAV_DECLARE_NONSTD(void) dav_prop_rollback(dav_prop_ctx *ctx)
{
    dav_error *err = NULL;
    dav_elem_private *priv = ctx->prop->priv;

    /* do nothing if there is no rollback information. */
    if (ctx->rollback == NULL)
        return;

    /*
    ** ### if we have an error, and a rollback occurs, then the namespace
    ** ### mods should not happen at all. Basically, the namespace management
    ** ### is simply a bitch.
    */

    if (ctx->is_liveprop) {
        err = (*priv->provider->patch_rollback)(ctx->propdb->resource,
                                                ctx->operation,
                                                ctx->liveprop_ctx,
                                                ctx->rollback->liveprop);
    }
    else {
        err = (*ctx->propdb->db_hooks
               ->apply_rollback)(ctx->propdb->db, ctx->rollback->deadprop);
    }

    if (err != NULL) {
        if (ctx->err == NULL)
            ctx->err = err;
        else {
            dav_error *scan = err;

            /* hook previous errors at the end of the rollback error */
            while (scan->prev != NULL)
                scan = scan->prev;
            scan->prev = ctx->err;
            ctx->err = err;
        }
    }
}

redpajama_set_name: RedPajamaGithub


text:
<!DOCTYPE html>

Events

Job Executions

                            Job Name
                            Execution Id
                            Start Time
                            End Time
                            Application
                            Exit Code

                        « prev

                        next »


An independent report out today found the housing services provided by Willow Park Housing Trust in south Manchester are of a 'satisfactory standard', with an approach to continuous improvement that is 'raising standards'.
Willow Park was formed in 1999 when it was created to receive a transfer of stock from Manchester City Council and now manages 5,800 properties in East Wythenshawe. Between March 1999 and March 2004, Willow Park invested around£70m in renovation works to its properties.
- An established formal process of tenant and resident involvement, including training for tenants to increase the effectiveness of their role.
- Strengthening the approach to dealing with racial harassment incidents.
- It has a good approach to managing performance and continually looks for ways to improve its service.
Willow Park was formed in 1999 when it was created to receive a transfer of stock from Manchester City Council. Over 6,000 properties on a single council estate were transferred. Most of which were developed in the 1930s-1950s. Willow Park Housing Trust stock is located in a compact area - it operates solely in East Wythenshawe, south Manchester. This area suffers from a lack of amenities and high levels of poverty - Benchill is the most deprived ward in the country (Indices of Deprivation, 2000).
Willow Park Housing Trust manages 5,800 properties in south Manchester. The trust's rental turnover in 2003/2004 was£15.7m and the collection rate during the year was 98%. Over the last 5 years, empty properties have fallen from 10% to just below 2%.
When Willow Park was first set up, it managed 6,600 properties but a strategic demolition programme (450 units) plus increased Right to Buy sales (350) has resulted in the housing stock reducing to 5,800.
The trust's actual performance to date has been in line with its original business plan and the cumulative operating deficit has been funded from its£35m loan facility.
The trust employs over 200 staff and it operates an in-house maintenance service. Following on from a successful ballot, a further 2000 properties in East Wythenshawe will be transferred in October 2004 to Willow Park from Manchester City Council.
The Audit Commission is an independent watchdog responsible for ensuring that public money is spent economically, efficiently and effectively. Our remit covers more than 15,000 bodies which between them spend nearly£125bn of public money each year.
We are active in local government, health, housing, criminal justice and fire and rescue services and consequently have objective evidence on the overall impact of public services on users.
In addition to making sure that taxpayers receive value for money, our aim is to provide impartial information on the quality of public services. We also act as a force for improvement by providing practical recommendations and spreading best practice.
The Housing Inspectorate was established to provide the public with an independent assessment of whether best value is being achieved by their local council. Inspection reports judge how well a housing service is currently serving local people, based on a rating from 'failing to comply with the Housing Corporation regulatory code' to 'good' and its ability to work toward continuous improvement.


text:
Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore
Paul YIP, Yingqi GUO, Lynn TANG, Ying-Yeh CHEN
The World Health Organization has recommended restriction of access to suicide means as the most effective strategy in suicide prevention (Yip et al. 2012). However, this is easier said than done, especially in high-rise living environments in many modern metropolises with tall buildings, like in Hong Kong, Singapore, and Taipei. Apparently, it is inconceivable to put bars and rails in all tall buildings to present suicides by jumping.
Oxford Textbook of Suicidology and Suicide Prevention
Danuta WASSERMAN
E-pub ahead of print - Jan 2021
https://global.oup.com/academic/product/oxford-textbook-of-suicidology-and-suicide-prevention-9780198834441?q=lingnan%20university&prevNumResPerPage=20&prevSortField=9&sortField=8&resultsPerPage=20&start=0&lang=en&cc=hk
Fingerprint Dive into the research topics of 'Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore'. Together they form a unique fingerprint.
Singapore Medicine & Life Sciences
Hong Kong Medicine & Life Sciences
Suicide Medicine & Life Sciences
YIP, P., GUO, Y., TANG, L., & CHEN, Y-Y. (2021). Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore. In D. WASSERMAN (Ed.), Oxford Textbook of Suicidology and Suicide Prevention (2nd ed., pp. 739-742). Oxford University Press.
YIP, Paul ; GUO, Yingqi ; TANG, Lynn ; CHEN, Ying-Yeh. / Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore. Oxford Textbook of Suicidology and Suicide Prevention. editor / Danuta WASSERMAN. 2nd. ed. Oxford University Press, 2021. pp. 739-742
@inbook{e3a67a442bf74d00b4887e237b29a657,
title = "Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore",
abstract = "The World Health Organization has recommended restriction of access to suicide means as the most effective strategy in suicide prevention (Yip et al. 2012). However, this is easier said than done, especially in high-rise living environments in many modern metropolises with tall buildings, like in Hong Kong, Singapore, and Taipei. Apparently, it is inconceivable to put bars and rails in all tall buildings to present suicides by jumping. ",
author = "Paul YIP and Yingqi GUO and Lynn TANG and Ying-Yeh CHEN",
editor = "Danuta WASSERMAN",
booktitle = "Oxford Textbook of Suicidology and Suicide Prevention",
edition = "2nd",
YIP, P, GUO, Y, TANG, L & CHEN, Y-Y 2021, Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore. in D WASSERMAN (ed.), Oxford Textbook of Suicidology and Suicide Prevention. 2nd edn, Oxford University Press, pp. 739-742.
Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore. / YIP, Paul; GUO, Yingqi; TANG, Lynn; CHEN, Ying-Yeh.
Oxford Textbook of Suicidology and Suicide Prevention. ed. / Danuta WASSERMAN. 2nd. ed. Oxford University Press, 2021. p. 739-742.
T1 - Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore
AU - YIP, Paul
AU - GUO, Yingqi
AU - TANG, Lynn
AU - CHEN, Ying-Yeh
N2 - The World Health Organization has recommended restriction of access to suicide means as the most effective strategy in suicide prevention (Yip et al. 2012). However, this is easier said than done, especially in high-rise living environments in many modern metropolises with tall buildings, like in Hong Kong, Singapore, and Taipei. Apparently, it is inconceivable to put bars and rails in all tall buildings to present suicides by jumping.
AB - The World Health Organization has recommended restriction of access to suicide means as the most effective strategy in suicide prevention (Yip et al. 2012). However, this is easier said than done, especially in high-rise living environments in many modern metropolises with tall buildings, like in Hong Kong, Singapore, and Taipei. Apparently, it is inconceivable to put bars and rails in all tall buildings to present suicides by jumping.
UR - https://global.oup.com/academic/product/oxford-textbook-of-suicidology-and-suicide-prevention-9780198834441?q=lingnan%20university&prevNumResPerPage=20&prevSortField=9&sortField=8&resultsPerPage=20&start=0&lang=en&cc=hk
BT - Oxford Textbook of Suicidology and Suicide Prevention
A2 - WASSERMAN, Danuta
YIP P, GUO Y, TANG L, CHEN Y-Y. Prevention of suicide by jumping: experiences from Taipei City (Taiwan), Hong Kong and Singapore. In WASSERMAN D, editor, Oxford Textbook of Suicidology and Suicide Prevention. 2nd ed. Oxford University Press. 2021. p. 739-742

redpajama_set_name: RedPajamaCommonCrawl


Offering you a complete choice of products which include jewellers saw frames, jewelry tool economy saw frame fixed length, jewelry making tools hand held ring saw (finger ring cutter), fixed length jewellery equipment swiss type saw frame, jewellery tools economy adjustable saw frame and jewellery tool german type adjustable saw frame.
We are manufacturer of Jewelry Tool Economy Saw Frame Fixed Length.
We are manufacturer of Jewelry Making Tools Hand Held Ring Saw (Finger Ring Cutter).
We are manufacturer of Fixed Length Jewellery Equipment Swiss Type Saw Frame.
We are manufacturer of Swiss Type Adjustable Saw Frame.


Hi guys! I wanted to make a studio were we should post all our projects. I think it would be cool if we would invite all the people that we follow or that follow us so that it could turn into a very big studio.


7-82-00009 Switch in the Nilfisk-Advance Sweeper & Scrubber Switches Catalog!
This aftermarket Nilfisk-Advance 7-82-00009 switch in the sweeper & scrubber switches section of the Nilfisk-Advance electrical catalog, will perform as well or better than the Nilfisk-Advance switch itself, at a fraction of the price.
TruPar.com offers 1 DAY GROUND DELIVERY to 90% of the USA on all stocked Nilfisk-Advance Sweeper & Scrubber Electrical Switches! Enter your desired quantity and shipping postal code above to availability from 7 US distribution centers.


text:
Don Lemon Shuts Down Interview Bashing the Clintons
"Thank you, we're done."
On CNN Tuesday, Don Lemon was so frustrated by a conservative guest's criticisms of the Clintons that he abruptly ended the interview.
Lemon wanted to discuss the "appropriateness" of recent comments made by Donald Trump against Hillary Clinton: one about her using the bathroom during the Democratic debates and the other, getting "schlonged" in the 2008 election.
Conservative columnist Kurt Schlichter was less concerned with anything Trump has to say -- he is not a supporter -- and more interested in why the Clinton's misdeeds always get a pass in the media:
Look, Don, it's going to take a lot more for me to get upset at -- a woman who enabled a guy who turned the Oval Office into a frat house and his intern into a humidor. You know, I just don't care. I so don't care I would need Stephen Hawking to find the theoretical limit of how little I care about Donald Trump's silly jokes.
This hypocritical, pearl-clutching nonsense that Donald Trump's vulgar and mean and out there. And I can't stand Donald Trump.
Schlichter told Lemon that he hates the media for making him defend Donald Trump but said because Hillary stood behind a serial sexual abuser, "I think we set the standard a little lower than Donald Trump has even approached."
At first, Lemon seemed okay going back and forth with Schlichter until it was clear that the Clinton's past sins were remaining the focus. The CNN host wasn't interested in old dirty laundry but only in why a presidential candidate would engage in this type of language. And as such, the heat turned up to the point where Lemon became increasingly frustrated and eventually cut Schlichter's Skype feed.
Ha! Van Jones Says Hillary 'One of the Most Honest Politicians in America'


text:
Resources & Groups
Lost in the Eternal Passage
by Strange Teller
in Ghost Story
April 13th 2020 | 3565 | 18m | 11 | 0 | 0 |
Wording:
Submitted: April 13th 2020
Reading Time: 18 mins
Suitability: OK For All
Genre: Ghost Story
I'm floating above the earth, I see how there slip, in enormous areas which somehow open beneath me, lost spirits, birds which scan the heights, forgotten places, loved places... It's not the same feeling as the chaos, however - that chaos from which, once, everything took birth.
I've already forgot how it is on Earth. I only see everything like in a suspended mirror, I hear everything like I would hear the nature's echoes in a valley, forgotten by time...the sea's noise in a shell.
Closer...No, I don't want to get closer.
But only to keep this image like a precious memory and then, to take flight, forever, the flight to eternity...
I'm floating above the world. I am still a wandered spirit, a lost entity in an ocean.
What is the price that I have to pay for immortality?
I am a spirit. A ghost.
I am born.
Intro. I got to lord Scotwave's house after a long and relatively tiring journey, even though I enjoyed unusual landscapes as much as I could and I tried to taste to the full the eagerly awaited feeling - the one of being in a holiday.
The Lord honored me by inviting me to spend a week of my holiday at his castle after he had read some of my short stories that he had considered satisfactory, enough for wanting a closer contact with me, and, even though he hadn't promised anything yet, he wasn't excluding the option of a collaboration with a Scottish publishing house.
I almost got lost in the immense gardens which were preceding the actual entrance, then I was guided to the room, where I left my luggage and made myself comfortable.
Shortly after, I got ready for the famous five o'clock, although not before staring somewhere at the window, very far, where my soul was fading away, maybe, to get to...In the place where the sunlight blessed the excellently kempt gardens and the artesian wells.
"So, you think this world is nothing more than a passage? A passage through which our souls are wandering to the infinity? A gate?"
I agreed, nodding. I didn't see the point in starting to repeat the theory out loud.
"But don't you think, young writer, that there is a price that you must pay for this? A kind of charge for the boatman on the River Styx?".
Lord Scotwave looked at me through the lens of some vintage glasses, while he was slowly puffing away at a pipe which was equally vintage.
Easily confused, I let the silence prolong a bit before answering.
"I bothered more about the interfering of worlds, the perfecting consummation of our fate. Yet, of course there is a price, maybe even a sacrifice. Nothing is born from nothing, and the humanity doesn't expect from us (at least from us, the ones who understood) other words, other speeches. But acts.
"Very well, young man, very well...".
He stuffed in more tobacco, with an air of satiation. I couldn't appreciate what was he expecting from me and to what extent would my answer bring him any peace, but I let things take their own natural course.
By night, after I've visited a bit of the green area, I got back into my room and I've watched a couple of shows at the old, but still working TV, not in the mood, switching between a channel to another. However, I was satisfied that I could somehow interact with people and, this way, I didn't feel too lonely next to that wood furniture, observing the pendulum on the wall and the somehow erratically hanged paintings in the whole room.
I remembered, for a second, my family, then, thinking that, maybe, I'll even write something on this holiday, I laid down in bed to fall asleep.
One minute, two...three...
The pendulum struck midnight, with a long ring of the bell.
The bed has violently shaken, then I heard how the phonograph started to play, letting the accords of an old love song to overflow in the room.
Suddenly, I was very frightened, because I was alone in the room, and the lord was sleeping in the attic.
"You and me, alone, dancing on the melody... Forever in a strange fantasy", I could hear the song's lyrics.
Then, the silhouette of a young, attractive, translucent lady, showed itself in the room.
I wanted to scream for help, but she signaled me to shut up.
"My father loves this song so much", said a voice coming from another world.
"Okay...Okay", I stupidly mumbled, then I pulled the pillow and the bedsheet over my head, so that I won't see or hear anything.
However, I knew a ghost has just visited me - and I also knew that this was only the beginning.
In the morning, the next day, I found a note from the lord on the table:
"Young writer,
I am sure that you already have an idea about the places that you've seen here, as well as the local hospitality.
For two days, I'll be gone due to business - you'll enjoy, I suppose, to find out that I'll visit, in this journey, a popular Scottish publishing house, opportunity for me to talk about the possible new contracts.
Rachel would be happy to...
Forgive me, I don't know what I was thinking.
I hope that the deepest day but also the deepest night to be your eternal source of inspiration. Herewith, I give you an envelope for your current expenses.
We will meet again soon.
Lord Scotwave".
Ufff... I didn't even move on from the last night's incident that, here I am, left alone in this castle which is as enormous as frightening. What am I going to do?
Let's hope the news coming from the publishing house will be cheerful, at least.
At the thought of it, I postponed any new walking and even spending from the small capital generously left by my host and I put a white sheet of paper in the typewriter.
An idea had just crossed my mind...
"I was sitting alone in the room, crushed by the memories, profoundly desiring to forget...At least for a day. For a moment.
Then I heard the phonograph's record spinning, letting an old song speaking about love to be heard ...About a suspended fantasy between two worlds.
You and me... forever.
I am dancing with a translucent shape, arrived from on the other side of the world, of a girl who had sometime lived on Earth...Who had suffered, like me. Who had loved.
I can't touch her, because she is immaterial. I can't kiss her, because her lips are as cold as Death. I can't fully understand her, because she is on a superior existence stage than I am.
But I can feel her, I can guess her experiences...I can swear eternal faith to her.
Because - isn't it so? - our passing on Earth has a price.
A price I am willing to pay, in the name of the most peculiar and baffling romances...To put a seal on the running from the oblivion. From the void.
Together. Forever, in a strange fantasy...".
The tables have started to vigorously shake, the glasses have fallen on the ground, becoming shatters. The light bulbs have cracked, leaving me in the dark.
I strongly felt her presence, before I could see her. I simply knew I wasn't alone in the room anymore.
The pendulum has struck again, even though it wasn't time yet.
Then the shape I saw the first day of my residence there manifested, giving me the creeps.
"Did you ask me to come? Have you talked, right before, about love?", her voice could be heard coming from the other side of the ground.
"Who are you?...Why have we met here?", I asked her, while I was looking at her fascinating bright and clear silhouette, vintage white, spotless, intangible clothes.
"We've met here because this is our destiny", she whispered to me. "My name is Rachel...".
"What? Rachel?".
I suddenly jumped on my feet.
"For God's sake, what is this...".
"We will meet again...if you believe in love", said the petite silhouette of the girl, before dematerialize.
Alone, for two days...In a haunted castle.
Talking to a ghost.
Until the lord Scotwave arrived again to the peculiar house in which I was occasionally staying too, I didn't try to understand anything more. I didn't write anymore, I didn't invoke the creature who had already started to fascinate me.
I only walked through those fabulous gardens, wandering about their beauty and the way they were taken care of, but being almost fearful at every step for Rachel not to appear again, somehow, from behind a bunch of flowers, in the form of a creature who had no home in this world.
I've tasted the English tea with a rare lust, I've tried not to think of anything.
Time has passed very slowly, much more difficult than I would believe, but, in the end, I got to the long-awaited moment.
The lord came back, more refreshed than ever, early in the morning, getting off (which was suiting him well) a wonderful horse.
"Good morning, lord Scotwave. How was it?".
"Good morning. Pretty well. Although I am afraid that I do not have the happiest news from the publishing house. So far, they do not publish anything new. But do not lose heart - there is, however, a possibility in the autumn...".
"Do not worry. I do not surrender so easily. If I have inspiration, I will undoubtedly write and I will try my luck in the autumn...".
We didn't talk anything else until lunchtime - I let him rest, and I tidied up in my room.
In front of a rich meal, however, I started to tell him some of my thoughts.
"I do apologize...but something isn't letting me sleep at all".
"Tell me, young man. I am listening to you", he told me while he was reaching out the fork for the marinated anchovy.
"What did you intend to say then in the note? Who is Rachel?"
He almost choked on fish.
"No, nothing...It was a mistake. I do not intend to talk about this subject."
"I don't want to trouble you either...but I saw, in the room in which I'm staying, the ghost of a young girl...I clearly saw her, as I am seeing you. It even seemed to me that she is talking to me while I was writing a short story...I found it very strange."
"Ah...okay. I will only speak once about this. I had a girl, whom I enormously loved. She was highly educated in Arts. At 20 years old, however, she was strangled by a maniac. She left me alone, forever inconsolable. From time to time, her ghost is haunting the castle...Of course I didn't drive her away, she is, even now, the light of my eyes...She soothes my loneliness. The ghost of my Rachel."
He wiped off a tear in the corner of his eye, then he started to cry.
"It is so hard for me without her...my priceless girl...".
"Oh, I feel so sorry, lord Scotwave...I didn't know. Alright, I won't disturb you anymore with my silly questions."
After drinking the coffee, we took a little walk outside, then I left him alone - he was saying he wanted to take a nap. As for me, I got back to my room - partly to rest, partly to write.
Soon, I put a new sheet of paper in the old typewriter on the table.
"Together... Forever, in a strange fantasy...
A time forgotten song, in a room in light and shade...Me, dancing with an etheric shape, whispering hot words, even if we can't ever be, really, together...Because we belong to two different worlds.
We met here because this was our destiny...Now I am sure of this.
My love...I love not only you, but even the space around you...The intangible clothes you're wearing.
What deal should I sign so that we will be forever together?
Because I love you, you know this very well, and I won't be satisfied with only with the song from the phonograph.
It's heavily raining outside, thunders splitting the skies in two. A storm of unprecedented violence troubles the writer who is missing his lover Rachel, in an obscure room of a haunted castle..."
The table rattled again, the walls trembled.
I watched, horrified, as a ruby-colored liquid started to slowly drip from the ceiling until it formed a true puddle. It was blood.
Then the ghost reappeared, with a silhouette even clearer than usual.
"Did you call for me? Did you say that you wanted us to be together forever?"
"Rachel...my love...yes, that is what I wrote. And that is what I think as well."
"Just a moment...did my father tell you anything about me?"
"Yes, Rachel, he told me how you died and how much he cared about you....the poor old man has it very hard, I'll help him as I can.."
"Yes, it's partially true. But don't believe everything he says, sometimes he adds details that aren't true. More than that, you need to know something very important about him.."
"Oh? What, exactly?"
"Join me in the attic...I have to show you something".
Controlling my fear, I climbed a staircase that creaked all over, then I went into the attic that was full of old scraps, dust and wooden chairs that cracked without being touched.
A pale, yellow light was sneaking through the only small window that connected this to the outside.
In all honesty, I didn't really want to prolong my stay there.
"So, Rachel, what did you want to show me?"
She took an old manuscript from a drawer that had, as I realized, some of her father's work on it, along with a copy of his papers.
On them I could read, stupefied, his full name, as well as the year in which he died.
Lord John Scotwave, born the 18th of January 1905. deceased the 4th of May 1980.
Presently, it was the year 2020.
I got chills down my spine.
"See? He has as much to do with the real world as me", said Rachel unexpectedly.
"Yes, I can see that..."
We quickly went to exit the attic.
I was, actually, truly alone in that castle. At least, by the rules that were known to me.
I hope that, by the end of my stay here, I will not go completely insane.
That night, though, I slept peacefully. The furniture didn't crack and snap anymore, glass didn't break, and Rachel didn't make her presence felt.
I decided that I would play innocent to the old lord, to not let him know what I found out form Rachel. He could turn aggressive, even really violent, if he knew that his secret was out in the open.
It would probably be hard at first, but in time i will get accustomed to this role as well.
I spent half an hour watching the news, which(at least them!) were surely from the current year. Floods, earthquakes, plagues, snowfall in full-blown summer.
Oh, God!, I told myself, and went downstairs to have breakfast with Lord John Scotwave.
If I survive, maybe I will eventually find out the truth about the fate of the world, about the Mayan predictions, about the prophecies of Nostradamus. Because I just about had enough of these apocalyptic news.
"Do you want the tea hot?", asked the lord, like a waggish and very welcoming host.
"Yes, thank you", I gracefully replied.
I wanted to ask him one more time about the autumn offer of the publishing house, but I changed my mind.
"We said that we wouldn't talk anymore, but...I realized that I am also troubled by something", said Scotwave in a heavy tone.
"Yes? I am listening to you".
"Rachel...Are you saying you thought she was talking to you?".
"Yes, sure, that is what I've said...But I can assure you that for me the conversation with her is a pleasure...".
"I believe you, I believe you, that's not why I am asking...did she tell you something about me, by any chance?".
I held in my violent feelings incredibly well - but, however, I am sure that for approximately one-quarter of a minute, my face was as white as wax.
"No, no", I quickly added, to save the situation. "She really didn't mention anything, I would have remembered for sure".
"Ok, then...See, don't believe everything she tells you, sometimes she makes up things...If you somehow feel you want to become closer, you would better know something...".
"Yes? What exactly?. I started to become curious.
"Rachel, after she died, started to take vengeance on men...No matter if they were maniacs like the one who has strangled her or perfectly normal...You have to know that she is harsh, cruel, bloody...Under the guise of love and an old song from the phonograph, she attracts them in her room, where she kills them and drink their blood...She seals her gesture for eternity".
I felt like fainting. Things started to get entangled pretty bad, worse than I could, even for a moment, imagine, and I realized that I had not even the slightest chance to find out who is lying and who is telling the truth in the whole story which was happening since I came to the castle.
I am alone with two spirits and nothing seems to be able to save me...
"I will take into account what you are saying to me, lord John Scotwave", I said. I bit my tongue until it started to bleed, but too late.
Even in the mail, he introduced himself simply, as Lord Scotwave. The only place where I could possibly see his first name was in the dusty papers that Rachel had showed me in the attic.
"You've told me that you didn't talk about me with my girl, right? What did you find out, young writer?", he interrogated me, using an already threatening tone.
"Nothing, nothing, I assure you...", I said, then, without waiting the follow-up, I ran upstairs.
I got into my room and I closed the door three times, also putting a nightstand in front of it, in any case.
I stayed for a few moments, then I sat down in front of the typewriter and I started to write.
"Forever together...A peculiar song, living in time, above time...
Now I know what I have to do to be together forever...
In order not have to hopelessly look for you in daylight, not to be afraid I will lose you each time when the night fades away...
As your father used to say, there is a price you have to pay for it. Like a fee for the boatman on the Styx River.
I hope I learned something from the passing on Earth.
Rachel, you had never showed me your room...I wish so much to dance there on our song, to be just us two, in perfect union, living the same dream, becoming one...
It's all I still desire. To transcend our love to the eternity.
You and me, alone... Killed by the melody...".
The furniture vigorously cracked, the glasses started to clang on the table, and almost in the same instant the weak silhouette of Rachel appeared.
"What did you say? That you never saw my room? That you want us to dance there? You don't imagine how much I've expected this moment...".
"It's wonderful, my dear", I said and I wiped a tear which appeared in the corner of my eye. "Wait for me just a minute...I have left to work out a single thing."
I heard the lasting crunch of Rachel room's door.
I gathered all the typed files from the desk of which a temporary owner I was and I gave them a title: Lost in the eternal passage.
Then, I added, in red: For the Lord John Scotwave, towards the autumn offer of the publishing house.
Epilogue. It's wonderful...I am starting to learn what freedom is...
If you knew how much I've been waiting...The ghosts' world, the eternal love world...
I have to fly to infinity... One day, the readers will wait for me there...
I am born...
Rate this submission
You must be logged in to rate submissions
More by Strange Teller
The Power of Imagination - or the Last Pact
in Allegorical Fiction +1
The Legend of the Ice Princess
in Adventure +1
The World of the Broken Dreams
in Bizarre +1
More in Ghost Story
by Eleanor Willey
by Amit Shankar Saha
Finding Rosie
by Kathleen P
by Ellisa Finnell
in Abstract +18
My Caring Aunt Sally
by Brian Dunlop
A Date With the Ghost
by K Jambulingam
More Recommended Reading
The Flat in Rolling Hills
by Ferghal McTaggart
Don't Invite Them
by Sielf
by Shadow Night
Why Have You Stayed Behind? Part 1
by Raymond Cook
The Sarmaritans
by Andrew Carrisbrooke
The Sight
by Luis A. Maldonado
by Ron Puskarich
by Alex Morison
by Cassidy
in Ghost Story +3
A Friendly Face?
by Monica Griffin
The Genii
by Mohammad Skati
Copyright © 2004-2021 Short-Story.Net, except submissions which remain Copyright of their respective authors.


GOVERNMENT SURVEYOR JOB: TPV Gujarat Recruiting Surveyor.
Qualification: Passed Diploma in Architecture/ Civil Engineering or equivalent.
Starting Date For Apply Online : 15/12/2015.
Closing Date For Apply Online : 14/01/2016.


Hello I am HUX, January 3rd, 2018, This is my post about Original Above Ground Pool Deck Gallery Almost Amazing Article, on this page you can see so beautiful design about Original Above Ground Pool Deck Gallery Almost Amazing Article, the first picture in this post is the best picture we use about Original Above Ground Pool Deck Gallery Almost Amazing Article, detail on photo's above, you can see in the second paragraph.
The first picture is a picture Original Above Ground Pool Deck Gallery Almost Amazing Article, the image has been in named with : Original Above Ground Pool Deck Gallery Almost Amazing Article, This image was posted on category : Uncategorized, have resolution : 480x360 pixel. This posting entitled Original Above Ground Pool Deck Gallery Almost Amazing Article, and many people looking for about Original Above Ground Pool Deck Gallery Almost Amazing Article from search engine.


Printer Reviews– This excellent printer offers easy-to-use by incorporated with wireless Wi-Fi relationship, it make you possibly can print effortless from a mobile devices and can share this printer to everyone people around you. Samsung ProXpress M3820DW has dimensions of Samsung ProXpress M3820DW possesses weight of twenty-two. 4 lb.
So in this post I will share about Samsung ProXpress M3820DW Driver Download support for Windows 10, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 8.1, Mac Os X or Linux, and I will give you the download link driver for that's printer but to more clearly link driver support for OS or available, you can see in the list of links that we have provided below, hopefully with this download link will facilitate you in your work in site Drivers Supports.
Samsung ProXpress M3820DW laser beam printer that can assist you to accomplish the tasks of the office, with this printer's capabilities would be much easier to be able to print documents. ProXpress specific M3820D including some sort of high-quality print result plus rapid print speeds and Samsung ProXpress SL M3820DW laser beam forty-ppm monochrome computer printer provides fast, professional quality along with lower operating premiums. High performance in conjunction with the ease-of-use enables corporations to accelerate data and pictures digest to increase productivity.
Samsung ProXpress M3820DW kind of a laser computer printer that can assist you to accomplish the tasks of the business office, and with the capability of the printer may be better to document art paper prints. Unique ProXpress M3820D such as outcome of high-quality producing plus fast print speeds art. Samsung ProXpress M3820DW strong addition to allowing the business to speed in place a document, furthermore, to complete the graphics are designed for high effectiveness. M3820DW ProXpress precise function automatic typical. And users can simply print on both sides inside yard with ease and comfort and saving modifications in costs, and slow up the influence of the planet.
This SAMSUNG brand product, as supplied and written by SAMSUNG and provided new, in the initial carton to the initial consumer purchaser, is warranted by simply SAMSUNG against producing defects in supplies and workmanship for a limited warranty amount of: (12 months Elements and 12 several weeks Labor for Commercial Use).


text:
Q: I need to make an library which can be used by other android apps as an library dependencies with some files hidden I want to make an library for android which can be used by other android apps as an dependencies.
I know how to make an library from studio but please help me letting know, how to make files hidden from the library so that user can not see some files as in files there will be some token which i dont want to be viewed by the user who add that library in his android project.


"This administration isn't just targeting the laws that protect us — they are targeting the very idea that we are all worthy of protection," Kennedy said in an address that sought to weave together an inclusive message that reached out to those in Trump country and those in the Democratic Party's progressive wing.
Kennedy also sought to revive the Democrats' "better deal" — an on-again, off-again slogan from last year and a play on President Franklin D. Roosevelt's New Deal, among the party's signature 20th-century achievements.
Still, Kennedy could not escape some of the stilted awkwardness that seems a perennial feature of State of the Union rebuttals. While Trump spoke from the House chamber before Congress, the Cabinet, Supreme Court Justices and top military leaders, Kennedy addressed a small crowd with what appeared to be an antique car in the background.
Kennedy, a grandson of Robert F. Kennedy, the late senator and attorney general, may have delivered the party's official response, but his wasn't the only one.
Sen. Bernie Sanders (I-Vt.), Rep. Maxine Waters (D-Calif.) and former Rep. Donna Edwards (D-Md.) delivered their own responses. Virginia Del. Elizabeth Guzman delivered the official response in Spanish.
Kennedy is one of a number of Democrats whose names have been floated as potential 2020 contenders to take on Trump.


My second photo with the XT-1.
I could have photo-shopped the boat masts on the left hand side but then I saw there was an underlying theme.
You have the sharp point of the crane hook at the extreme right, then the bull's horns in the middle and then the boat masts on the left.


Research at the Barbara Hardy Institute is collaborative and multidisciplinary. We work across a broad spectrum of disciplines that are fundamental to the sustainability of our society, and both natural and built environments.
Researchers are involved in a number of Australian Research Council funded projects, Cooperative Research Centres, and conduct research and consultancy for various international, national, state and local government and industry interests.
Barbara Hardy Institute research capabilities are listed on our Research page.
A CRC and UniSA partnership investigating pathways for low carbon living in Adelaide.
Forecasting weather patterns and systems performance data to develop innovative predictive models for solar system output.
Seeking answers through disaster studies.
Evaluating the Lochiel Park 'Green Village' to gather knowledge for other low carbon developments.
UniSA staff and students have designed and built Trev, a practical low-mass commuter car that runs entirely on non-polluting, renewable energy.
The initial phase of this project will evaluate the feasibility of separating molten mineral salt mixtures at high temperatures (> 800°C) in order to achieve significant energy and cost savings in the refining process.
This project aims to increase efficiencies and reduce costs for the industrial and commercial refrigeration market via optimal control of novel energy-dense phase change storage materials coupled with on-premises solar photovoltaic energy supply.
The High Temperature Test Facility is a unique facility for testing thermal storage systems up to 900 deg. C.
Funded by the Government of South Australia under The Premier's Research and Industry Fund - International Research Grant Program, this project brings together experts from around Australian and the world in achieving the goals of reduced energy costs and reduced carbon dioxide emissions from finding new ways of using thermal energy storage systems.
Australian Solar Thermal Research Initiative (ASTRI) is a collaboration of research institutions aiming to transform Australia into a global leader in Concentrated Solar Power (CSP). The team at UniSA is conducting key research for the development of low cost phase change material thermal energy storage systems to work with supercritical carbon dioxide for CSP as well as establishing the corrosion performance of containment materials.